7.5 High
CVSS2
Attack Vector
NETWORK
Attack Complexity
LOW
Authentication
NONE
Confidentiality Impact
PARTIAL
Integrity Impact
PARTIAL
Availability Impact
PARTIAL
AV:N/AC:L/Au:N/C:P/I:P/A:P
0.948 High
EPSS
Percentile
99.3%
According to its self-reported version number, the Puppet Enterprise application installed on the remote host is version 2.x or 3.x prior to 3.8.0. It is, therefore, affected by the following vulnerabilities :
A security feature bypass vulnerability, known as FREAK (Factoring attack on RSA-EXPORT Keys), exists due to the support of weak EXPORT_RSA cipher suites with keys less than or equal to 512 bits. A man-in-the-middle attacker may be able to downgrade the SSL/TLS connection to use EXPORT_RSA cipher suites which can be factored in a short amount of time, allowing the attacker to intercept and decrypt the traffic. (CVE-2015-0204)
A use-after-free condition exists in the d2i_ECPrivateKey() function due to improper processing of malformed EC private key files during import. A remote attacker can exploit this to dereference or free already freed memory, resulting in a denial of service or other unspecified impact. (CVE-2015-0209)
An invalid read error exists in the ASN1_TYPE_cmp() function due to improperly performed boolean-type comparisons. A remote attacker can exploit this, via a crafted X.509 certificate to an endpoint that uses the certificate-verification feature, to cause an invalid read operation, resulting in a denial of service.
(CVE-2015-0286)
A flaw exists in the ASN1_item_ex_d2i() function due to a failure to reinitialize ‘CHOICE’ and ‘ADB’ data structures when reusing a structure in ASN.1 parsing.
This allows a remote attacker to cause an invalid write operation and memory corruption, resulting in a denial of service. (CVE-2015-0287)
A NULL pointer dereference flaw exists in the X509_to_X509_REQ() function due to improper processing of certificate keys. This allows a remote attacker, via a crafted X.509 certificate, to cause a denial of service. (CVE-2015-0288)
A NULL pointer dereference flaw exists in the PKCS#7 parsing code due to incorrect handling of missing outer ContentInfo. This allows a remote attacker, using an application that processes arbitrary PKCS#7 data and providing malformed data with ASN.1 encoding, to cause a denial of service. (CVE-2015-0289)
An integer underflow condition exists in the EVP_DecodeUpdate() function due to improper validation of base64 encoded input when decoding. This allows a remote attacker, using maliciously crafted base64 data, to cause a segmentation fault or memory corruption, resulting in a denial of service or possibly the execution of arbitrary code. (CVE-2015-0292)
A flaw exists in servers that both support SSLv2 and enable export cipher suites due to improper implementation of SSLv2. A remote attacker can exploit this, via a crafted CLIENT-MASTER-KEY message, to cause a denial of service. (CVE-2015-0293)
#%NASL_MIN_LEVEL 70300
#
# (C) Tenable Network Security, Inc.
#
include('deprecated_nasl_level.inc');
include('compat.inc');
if (description)
{
script_id(87672);
script_version("1.6");
script_set_attribute(attribute:"plugin_modification_date", value:"2021/01/19");
script_cve_id(
"CVE-2015-0204",
"CVE-2015-0209",
"CVE-2015-0286",
"CVE-2015-0287",
"CVE-2015-0288",
"CVE-2015-0289",
"CVE-2015-0292",
"CVE-2015-0293"
);
script_bugtraq_id(
71936,
73225,
73227,
73228,
73231,
73232,
73237,
73239
);
script_xref(name:"CERT", value:"243585");
script_name(english:"Puppet Enterprise Multiple OpenSSL Vulnerabilities (FREAK)");
script_summary(english:"Checks the Puppet Enterprise version.");
script_set_attribute(attribute:"synopsis", value:
"A web application on the remote host is affected by multiple
vulnerabilities.");
script_set_attribute(attribute:"description", value:
"According to its self-reported version number, the Puppet Enterprise
application installed on the remote host is version 2.x or 3.x prior
to 3.8.0. It is, therefore, affected by the following
vulnerabilities :
- A security feature bypass vulnerability, known as FREAK
(Factoring attack on RSA-EXPORT Keys), exists due to the
support of weak EXPORT_RSA cipher suites with keys less
than or equal to 512 bits. A man-in-the-middle attacker
may be able to downgrade the SSL/TLS connection to use
EXPORT_RSA cipher suites which can be factored in a
short amount of time, allowing the attacker to intercept
and decrypt the traffic. (CVE-2015-0204)
- A use-after-free condition exists in the
d2i_ECPrivateKey() function due to improper processing
of malformed EC private key files during import. A
remote attacker can exploit this to dereference or free
already freed memory, resulting in a denial of service
or other unspecified impact. (CVE-2015-0209)
- An invalid read error exists in the ASN1_TYPE_cmp()
function due to improperly performed boolean-type
comparisons. A remote attacker can exploit this, via a
crafted X.509 certificate to an endpoint that uses the
certificate-verification feature, to cause an invalid
read operation, resulting in a denial of service.
(CVE-2015-0286)
- A flaw exists in the ASN1_item_ex_d2i() function due to
a failure to reinitialize 'CHOICE' and 'ADB' data
structures when reusing a structure in ASN.1 parsing.
This allows a remote attacker to cause an invalid write
operation and memory corruption, resulting in a denial
of service. (CVE-2015-0287)
- A NULL pointer dereference flaw exists in the
X509_to_X509_REQ() function due to improper processing
of certificate keys. This allows a remote attacker, via
a crafted X.509 certificate, to cause a denial of
service. (CVE-2015-0288)
- A NULL pointer dereference flaw exists in the PKCS#7
parsing code due to incorrect handling of missing outer
ContentInfo. This allows a remote attacker, using an
application that processes arbitrary PKCS#7 data and
providing malformed data with ASN.1 encoding, to cause
a denial of service. (CVE-2015-0289)
- An integer underflow condition exists in the
EVP_DecodeUpdate() function due to improper validation
of base64 encoded input when decoding. This allows a
remote attacker, using maliciously crafted base64 data,
to cause a segmentation fault or memory corruption,
resulting in a denial of service or possibly the
execution of arbitrary code. (CVE-2015-0292)
- A flaw exists in servers that both support SSLv2 and
enable export cipher suites due to improper
implementation of SSLv2. A remote attacker can exploit
this, via a crafted CLIENT-MASTER-KEY message, to cause
a denial of service. (CVE-2015-0293)");
script_set_attribute(attribute:"see_also", value:"https://puppet.com/docs/puppet/6.0/release_notes.html");
script_set_attribute(attribute:"see_also", value:"https://puppet.com/security/cve/openssl-march-2015-vulnerability-fix");
script_set_attribute(attribute:"see_also", value:"https://www.openssl.org/news/secadv/20150319.txt");
script_set_attribute(attribute:"see_also", value:"https://www.smacktls.com/#freak");
script_set_attribute(attribute:"solution", value:
"Upgrade to Puppet Enterprise version 3.8.0 or later.");
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_attribute(attribute:"exploitability_ease", value:"No exploit is required");
script_set_attribute(attribute:"exploit_available", value:"false");
script_set_attribute(attribute:"vuln_publication_date", value:"2015/01/06");
script_set_attribute(attribute:"patch_publication_date", value:"2015/04/28");
script_set_attribute(attribute:"plugin_publication_date", value:"2015/12/30");
script_set_attribute(attribute:"plugin_type", value:"remote");
script_set_attribute(attribute:"cpe", value:"cpe:/a:puppetlabs:puppet");
script_set_attribute(attribute:"in_the_news", value:"true");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"CGI abuses");
script_copyright(english:"This script is Copyright (C) 2015-2021 Tenable Network Security, Inc.");
script_dependencies(
"puppet_enterprise_console_detect.nasl",
"puppet_rest_detect.nasl"
);
script_require_keys("puppet/rest_port");
exit(0);
}
include("audit.inc");
include("global_settings.inc");
include("misc_func.inc");
include("http.inc");
##
# checks if the given version falls between the given bounds, and
# generates plugin output if it does
#
# @anonparam ver version to check
# @anonparam fix first fixed version
# @anonparam min_ver the earliest vulnerable version (optional)
#
# @return plugin output if 'ver' is vulnerable relative to 'fix' and/or 'min_ver',
# NULL otherwise
##
function _check_version(ver, fix, min_ver, enterprise)
{
local_var report = NULL;
if (
# no lower bound
(isnull(min_ver) && ver_compare(ver:ver, fix:fix, strict:FALSE) < 0) ||
# lower bound
(
!isnull(min_ver) &&
ver_compare(ver:ver, fix:fix, strict:FALSE) < 0 &&
ver_compare(ver:ver, fix:min_ver, strict:FALSE) >= 0
)
)
{
if (enterprise)
{
report =
'\n Installed version : Puppet Enterprise ' + ver +
'\n Fixed version : Puppet Enterprise 3.8.0'
+ '\n';
}
}
return report;
}
port = get_kb_item_or_exit('puppet/rest_port');
ver = get_kb_item_or_exit('puppet/' + port + '/version');
report = NULL;
vuln = FALSE;
product = ""; # Enterprise or Open Source
# Enterprise versions <= 3.8.3 have a unique HTTP header text
# E.g. X-Puppet-Version: 3.8.4 (Puppet Enterprise 3.8.3)
if ('Enterprise' >< ver)
{
product = "Puppet Enterprise";
# convert something like
# 2.7.19 (Puppet Enterprise 2.7.0)
# to
# 2.7.0
match = eregmatch(string:ver, pattern:"Enterprise ([0-9.]+)\)");
if (isnull(match))
audit(AUDIT_UNKNOWN_WEB_APP_VER, product, build_url(port:port));
ver = match[1];
if (ver =~ "^[23]\.")
{
report = _check_version(
ver:ver,
fix:'3.8.0',
min_ver:'2.0.0',
enterprise:TRUE
);
if (!isnull(report)) vuln = TRUE;
}
}
# The newer enterprise versions do not have the 'Enterprise'
# text in the HTTP header, so we need to check if the Puppet
# Enterprise Console was detected. Puppet Open Source does not come
# with a web console user interface out of the box.
else if (get_kb_item('installed_sw/puppet_enterprise_console'))
{
product = "Puppet Enterprise";
vuln = FALSE;
}
# otherwise, it's the open source edition
else
{
product = "Puppet Open Source";
vuln = FALSE;
}
if (!vuln) audit(AUDIT_LISTEN_NOT_VULN, product, port, ver);
if (report_verbosity > 0) security_hole(port:port, extra:report);
else security_hole(port);
Vendor | Product | Version | CPE |
---|---|---|---|
puppetlabs | puppet | cpe:/a:puppetlabs:puppet |
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0204
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0209
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0286
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0287
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0288
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0289
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0292
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0293
puppet.com/docs/puppet/6.0/release_notes.html
puppet.com/security/cve/openssl-march-2015-vulnerability-fix
www.openssl.org/news/secadv/20150319.txt
www.smacktls.com/#freak