Vulnerabilities > CVE-2019-10873 - NULL Pointer Dereference vulnerability in Freedesktop Poppler 0.74.0

047910
CVSS 6.5 - MEDIUM
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
NONE
Integrity impact
NONE
Availability impact
HIGH
network
low complexity
freedesktop
CWE-476
nessus

Summary

An issue was discovered in Poppler 0.74.0. There is a NULL pointer dereference in the function SplashClip::clipAALine at splash/SplashClip.cc.

Vulnerable Configurations

Part Description Count
Application
Freedesktop
1

Common Weakness Enumeration (CWE)

Nessus

  • NASL familyUbuntu Local Security Checks
    NASL idUBUNTU_USN-4042-1.NASL
    descriptionIt was discovered that poppler incorrectly handled certain files. If a user or automated system were tricked into opening a crafted PDF file, an attacker could cause a denial of service, or possibly execute arbitrary code. Note that Tenable Network Security has extracted the preceding description block directly from the Ubuntu security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.
    last seen2020-06-01
    modified2020-06-02
    plugin id126375
    published2019-07-01
    reporterUbuntu Security Notice (C) 2019-2020 Canonical, Inc. / NASL script (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/126375
    titleUbuntu 16.04 LTS / 18.04 LTS / 18.10 / 19.04 : poppler vulnerabilities (USN-4042-1)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were
    # extracted from Ubuntu Security Notice USN-4042-1. The text 
    # itself is copyright (C) Canonical, Inc. See 
    # <http://www.ubuntu.com/usn/>. Ubuntu(R) is a registered 
    # trademark of Canonical, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(126375);
      script_version("1.3");
      script_cvs_date("Date: 2020/01/08");
    
      script_cve_id("CVE-2017-9865", "CVE-2018-18897", "CVE-2018-20662", "CVE-2019-10018", "CVE-2019-10019", "CVE-2019-10021", "CVE-2019-10023", "CVE-2019-10872", "CVE-2019-10873", "CVE-2019-12293", "CVE-2019-9200", "CVE-2019-9631", "CVE-2019-9903");
      script_xref(name:"USN", value:"4042-1");
    
      script_name(english:"Ubuntu 16.04 LTS / 18.04 LTS / 18.10 / 19.04 : poppler vulnerabilities (USN-4042-1)");
      script_summary(english:"Checks dpkg output for updated packages.");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:
    "The remote Ubuntu host is missing one or more security-related
    patches."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "It was discovered that poppler incorrectly handled certain files. If a
    user or automated system were tricked into opening a crafted PDF file,
    an attacker could cause a denial of service, or possibly execute
    arbitrary code.
    
    Note that Tenable Network Security has extracted the preceding
    description block directly from the Ubuntu security advisory. Tenable
    has attempted to automatically clean and format it as much as possible
    without introducing additional issues."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://usn.ubuntu.com/4042-1/"
      );
      script_set_attribute(attribute:"solution", value:"Update the affected packages.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
      script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
      script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H");
      script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
      script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:libpoppler58");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:libpoppler73");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:libpoppler79");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:libpoppler85");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:poppler-utils");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:16.04");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:18.04:-:lts");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:18.10");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:19.04");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2017/06/25");
      script_set_attribute(attribute:"patch_publication_date", value:"2019/06/27");
      script_set_attribute(attribute:"plugin_publication_date", value:"2019/07/01");
      script_set_attribute(attribute:"generated_plugin", value:"current");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"Ubuntu Security Notice (C) 2019-2020 Canonical, Inc. / NASL script (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.");
      script_family(english:"Ubuntu Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/cpu", "Host/Ubuntu", "Host/Ubuntu/release", "Host/Debian/dpkg-l");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("ubuntu.inc");
    include("misc_func.inc");
    
    if ( ! get_kb_item("Host/local_checks_enabled") ) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    release = get_kb_item("Host/Ubuntu/release");
    if ( isnull(release) ) audit(AUDIT_OS_NOT, "Ubuntu");
    release = chomp(release);
    if (! preg(pattern:"^(16\.04|18\.04|18\.10|19\.04)$", string:release)) audit(AUDIT_OS_NOT, "Ubuntu 16.04 / 18.04 / 18.10 / 19.04", "Ubuntu " + release);
    if ( ! get_kb_item("Host/Debian/dpkg-l") ) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    cpu = get_kb_item("Host/cpu");
    if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
    if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "Ubuntu", cpu);
    
    flag = 0;
    
    if (ubuntu_check(osver:"16.04", pkgname:"libpoppler58", pkgver:"0.41.0-0ubuntu1.14")) flag++;
    if (ubuntu_check(osver:"16.04", pkgname:"poppler-utils", pkgver:"0.41.0-0ubuntu1.14")) flag++;
    if (ubuntu_check(osver:"18.04", pkgname:"libpoppler73", pkgver:"0.62.0-2ubuntu2.9")) flag++;
    if (ubuntu_check(osver:"18.04", pkgname:"poppler-utils", pkgver:"0.62.0-2ubuntu2.9")) flag++;
    if (ubuntu_check(osver:"18.10", pkgname:"libpoppler79", pkgver:"0.68.0-0ubuntu1.7")) flag++;
    if (ubuntu_check(osver:"18.10", pkgname:"poppler-utils", pkgver:"0.68.0-0ubuntu1.7")) flag++;
    if (ubuntu_check(osver:"19.04", pkgname:"libpoppler85", pkgver:"0.74.0-0ubuntu1.2")) flag++;
    if (ubuntu_check(osver:"19.04", pkgname:"poppler-utils", pkgver:"0.74.0-0ubuntu1.2")) flag++;
    
    if (flag)
    {
      security_report_v4(
        port       : 0,
        severity   : SECURITY_HOLE,
        extra      : ubuntu_report_get()
      );
      exit(0);
    }
    else
    {
      tested = ubuntu_pkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "libpoppler58 / libpoppler73 / libpoppler79 / libpoppler85 / etc");
    }
    
  • NASL familyMisc.
    NASL idPOPPLER_0_74.NASL
    descriptionThe version of Poppler installed on the remote host is prior or equal to 0.74.0. It is, therefore, affected by the following vulnerabilities : - Multiple input-validation flaws exist that allow heap buffer overflows leading to application crashes and other unspecified impact. (CVE-2019-7310, CVE-2019-9200, CVE-2019-10871, CVE-2019-10872) - A flaw exists related to the function
    last seen2020-06-01
    modified2020-06-02
    plugin id123511
    published2019-03-29
    reporterThis script is Copyright (C) 2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/123511
    titlePoppler <= 0.74.0 Multiple Vulnerabilities
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(123511);
      script_version("1.4");
      script_cvs_date("Date: 2019/10/30 13:24:46");
    
      script_cve_id(
        "CVE-2019-7310",
        "CVE-2019-9200",
        "CVE-2019-10871",
        "CVE-2019-10872",
        "CVE-2019-10873"
      );
    
      script_name(english:"Poppler <= 0.74.0 Multiple Vulnerabilities");
      script_summary(english:"Checks for an installation of poppler.");
    
      script_set_attribute(attribute:"synopsis", value:
    "A package installed on the remote host is affected by multiple
    vulnerabilities.");
      script_set_attribute(attribute:"description", value:
    "The version of Poppler installed on the remote host is prior or
    equal to 0.74.0. It is, therefore, affected by the following
    vulnerabilities :
    
      - Multiple input-validation flaws exist that allow heap
        buffer overflows leading to application crashes and
        other unspecified impact. (CVE-2019-7310,
        CVE-2019-9200, CVE-2019-10871, CVE-2019-10872)
    
      - A flaw exists related to the function
        'SplashClip::clipAALine' at 'splash/SplashClip.cc' that
        allows a NULL pointer dereference leading to
        application crashes and other unspecified impact.
        (CVE-2019-10873)
    
    Note that Nessus has not tested for these issues but has instead
    relied only on the application's self-reported version number.");
      script_set_attribute(attribute:"see_also", value:"https://gitlab.freedesktop.org/poppler/poppler/issues/717");
      script_set_attribute(attribute:"see_also", value:"https://gitlab.freedesktop.org/poppler/poppler/issues/728");
      script_set_attribute(attribute:"solution", value:
    "Upgrade to a patched version of Poppler once it is available.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P");
      script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
      script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H");
      script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
      script_set_attribute(attribute:"cvss_score_source", value:"CVE-2019-9200");
      script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2018/12/25");
      script_set_attribute(attribute:"patch_publication_date",value:"2018/12/25");
      script_set_attribute(attribute:"plugin_publication_date", value:"2019/03/29");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:freedesktop:poppler");
      script_set_attribute(attribute:"agent", value:"unix");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"Misc.");
    
      script_copyright(english:"This script is Copyright (C) 2019 and is owned by Tenable, Inc. or an Affiliate thereof.");
    
      script_dependencies("ssh_get_info.nasl", "macosx_eval_installed.nbin");
      script_require_keys("Host/local_checks_enabled");
    
      exit(0);
    }
    
    include("audit.inc");
    include("global_settings.inc");
    include("misc_func.inc");
    
    distros = make_list(
      "Host/AIX/lslpp",
      "Host/CentOS/rpm-list",
      "Host/Gentoo/qpkg-list",
      "Host/HP-UX/swlist",
      "Host/MacOSX/packages",
      "MacOSX/packages/homebrew",
      "Host/McAfeeLinux/rpm-list",
      "Host/RedHat/rpm-list",
      "Host/Slackware/packages",
      "Host/Solaris/showrev",
      "Host/Solaris11/pkg-list",
      "Host/SuSE/rpm-list"
    );
    
    pkgs_list = make_array();
    
    distro = "";
    
    foreach pkgmgr (distros)
    {
      pkgs = get_kb_item(pkgmgr);
      if(pkgmgr=~"^MacOSX") sep = "|";
      else sep = '\n';
      if(!isnull(pkgs) && "poppler" >< pkgs)
      {
        # so we know what distro we're looking at
        # helps for version compares
        distro = pkgmgr;
        foreach pkg (split(pkgs,sep:sep,keep:FALSE))
        {
          match = pregmatch(pattern:"(?:lib\d*|gir1.2-|\s|^)poppler\d*(?:-?(?:glib[^-]{0,2}|qt[^-]{0,2}|utils|dbg|dbgsym|debuginfo|private|devel|cpp[^-]{0,2}|gir[^-]+|dev|-0\.18|<|-\d|.x86-64)+)*(?:-|\s*)(\d+(?:\.\d+){1,2}(?:-[0-9]+)?)[^\n]*", string:pkg);
          if(!empty_or_null(match) && !empty_or_null(match[1]))
          {
            if("-" >< match[1])
              pkgs_list[pkg] = str_replace(string: match[1], find:'-', replace:'.');
            else pkgs_list[pkg] = match[1];
          }
        }
      }
    }
    
    paranoid_report=FALSE;
    flag = 0;
    vulnerable_pkgs = "";
    
    if(!empty_or_null(pkgs_list))
    {
      foreach pkg (keys(pkgs_list))
      {
        ver = pkgs_list[pkg];
        if ((empty_or_null(ver)) || (ver !~ "(?!^.*\.\..*$)^[0-9][0-9.]+?$")) continue;
        if(
            ("el7" >< pkg && ver_compare(ver:ver, fix:"0.26.5.20", strict:FALSE)<=0)
            # el6 and el5 are not affected as per https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-9200
          )
          {
            vulnerable_pkgs += '  ' + pkg + '\n';
            flag++;
            paranoid_report = TRUE;
          }
          # these distros don't appear to have backported versions
          # <= 0 since there's no fixed version out yet
        else if(
          distro =~ "(Solaris|Solaris11|Gentoo|BSD|Slackware|HP-UX|AIX|McAfeeLinux|MacOSX)" &&
          ver_compare(ver:ver, fix:"0.74.0", strict:FALSE) <= 0
        )
        {
          vulnerable_pkgs += '  ' + pkg + '\n';
          flag++;
        }
      }
    }
    else audit(AUDIT_NOT_INST, "poppler");
    
    if(paranoid_report && report_paranoia < 2)
      exit(0, "Potentially vulnerable packages were found, but the plugin will only report if 'Report paranoia' is set to 'Paranoid', due to potentially inaccurate backported versions.");
    
    if(flag > 0)
    {
      report = '\nThe following packages are associated with a vulnerable version of poppler : \n\n';
      report += vulnerable_pkgs;
      report += '\nFix : Upgrade poppler to a fixed release.\n';
      security_report_v4(severity:SECURITY_WARNING, extra:report, port:0);
    }
    else audit(AUDIT_INST_VER_NOT_VULN, "poppler");