The remote Ubuntu 20.04 LTS / 22.04 LTS host has a package installed that is affected by multiple vulnerabilities as referenced in the USN-6682-1 advisory.
In Puma (RubyGem) before 4.3.4 and 3.12.5, an attacker could smuggle an HTTP response, by using an invalid transfer-encoding header. The problem has been fixed in Puma 3.12.5 and Puma 4.3.4. (CVE-2020-11076)
In Puma (RubyGem) before 4.3.5 and 3.12.6, a client could smuggle a request through a proxy, causing the proxy to send a response back to another unknown client. If the proxy uses persistent connections and the client adds another request in via HTTP pipelining, the proxy may mistake it as the first request’s body.
Puma, however, would see it as two requests, and when processing the second request, send back a response that the proxy does not expect. If the proxy has reused the persistent connection to Puma to send another request for a different client, the second response from the first client will be sent to the second client. This is a similar but different vulnerability from CVE-2020-11076. The problem has been fixed in Puma 3.12.6 and Puma 4.3.5. (CVE-2020-11077)
Puma is a Ruby/Rack web server built for parallelism. Prior to puma
version 5.6.2
, puma
may not always call close
on the response body. Rails, prior to version 7.0.2.2
, depended on the response body being closed in order for its CurrentAttributes
implementation to work correctly. The combination of these two behaviors (Puma not closing the body + Rails’ Executor implementation) causes information leakage. This problem is fixed in Puma versions 5.6.2 and 4.3.11. This problem is fixed in Rails versions 7.02.2, 6.1.4.6, 6.0.4.6, and 5.2.6.2. Upgrading to a patched Rails or Puma version fixes the vulnerability. (CVE-2022-23634)
Puma is a simple, fast, multi-threaded, parallel HTTP 1.1 server for Ruby/Rack applications. When using Puma behind a proxy that does not properly validate that the incoming HTTP request matches the RFC7230 standard, Puma and the frontend proxy may disagree on where a request starts and ends. This would allow requests to be smuggled via the front-end proxy to Puma. The vulnerability has been fixed in 5.6.4 and 4.3.12. Users are advised to upgrade as soon as possible. Workaround: when deploying a proxy in front of Puma, turning on any and all functionality to make sure that the request matches the RFC7230 standard.
(CVE-2022-24790)
Puma is a Ruby/Rack web server built for parallelism. Prior to versions 6.3.1 and 5.6.7, puma exhibited incorrect behavior when parsing chunked transfer encoding bodies and zero-length Content-Length headers in a way that allowed HTTP request smuggling. Severity of this issue is highly dependent on the nature of the web site using puma is. This could be caused by either incorrect parsing of trailing fields in chunked transfer encoding bodies or by parsing of blank/zero-length Content-Length headers. Both issues have been addressed and this vulnerability has been fixed in versions 6.3.1 and 5.6.7. Users are advised to upgrade.
There are no known workarounds for this vulnerability. (CVE-2023-40175)
Puma is a web server for Ruby/Rack applications built for parallelism. Prior to version 6.4.2, puma exhibited incorrect behavior when parsing chunked transfer encoding bodies in a way that allowed HTTP request smuggling. Fixed versions limits the size of chunk extensions. Without this limit, an attacker could cause unbounded resource (CPU, network bandwidth) consumption. This vulnerability has been fixed in versions 6.4.2 and 5.6.8. (CVE-2024-21647)
Note that Nessus has not tested for these issues but has instead relied only on the application’s self-reported version number.
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Ubuntu Security Notice USN-6682-1. The text
# itself is copyright (C) Canonical, Inc. See
# <https://ubuntu.com/security/notices>. Ubuntu(R) is a registered
# trademark of Canonical, Inc.
##
include('compat.inc');
if (description)
{
script_id(191720);
script_version("1.0");
script_set_attribute(attribute:"plugin_modification_date", value:"2024/03/07");
script_cve_id(
"CVE-2020-11076",
"CVE-2020-11077",
"CVE-2022-23634",
"CVE-2022-24790",
"CVE-2023-40175",
"CVE-2024-21647"
);
script_xref(name:"USN", value:"6682-1");
script_name(english:"Ubuntu 20.04 LTS / 22.04 LTS : Puma vulnerabilities (USN-6682-1)");
script_set_attribute(attribute:"synopsis", value:
"The remote Ubuntu host is missing one or more security updates.");
script_set_attribute(attribute:"description", value:
"The remote Ubuntu 20.04 LTS / 22.04 LTS host has a package installed that is affected by multiple vulnerabilities as
referenced in the USN-6682-1 advisory.
- In Puma (RubyGem) before 4.3.4 and 3.12.5, an attacker could smuggle an HTTP response, by using an invalid
transfer-encoding header. The problem has been fixed in Puma 3.12.5 and Puma 4.3.4. (CVE-2020-11076)
- In Puma (RubyGem) before 4.3.5 and 3.12.6, a client could smuggle a request through a proxy, causing the
proxy to send a response back to another unknown client. If the proxy uses persistent connections and the
client adds another request in via HTTP pipelining, the proxy may mistake it as the first request's body.
Puma, however, would see it as two requests, and when processing the second request, send back a response
that the proxy does not expect. If the proxy has reused the persistent connection to Puma to send another
request for a different client, the second response from the first client will be sent to the second
client. This is a similar but different vulnerability from CVE-2020-11076. The problem has been fixed in
Puma 3.12.6 and Puma 4.3.5. (CVE-2020-11077)
- Puma is a Ruby/Rack web server built for parallelism. Prior to `puma` version `5.6.2`, `puma` may not
always call `close` on the response body. Rails, prior to version `7.0.2.2`, depended on the response body
being closed in order for its `CurrentAttributes` implementation to work correctly. The combination of
these two behaviors (Puma not closing the body + Rails' Executor implementation) causes information
leakage. This problem is fixed in Puma versions 5.6.2 and 4.3.11. This problem is fixed in Rails versions
7.02.2, 6.1.4.6, 6.0.4.6, and 5.2.6.2. Upgrading to a patched Rails _or_ Puma version fixes the
vulnerability. (CVE-2022-23634)
- Puma is a simple, fast, multi-threaded, parallel HTTP 1.1 server for Ruby/Rack applications. When using
Puma behind a proxy that does not properly validate that the incoming HTTP request matches the RFC7230
standard, Puma and the frontend proxy may disagree on where a request starts and ends. This would allow
requests to be smuggled via the front-end proxy to Puma. The vulnerability has been fixed in 5.6.4 and
4.3.12. Users are advised to upgrade as soon as possible. Workaround: when deploying a proxy in front of
Puma, turning on any and all functionality to make sure that the request matches the RFC7230 standard.
(CVE-2022-24790)
- Puma is a Ruby/Rack web server built for parallelism. Prior to versions 6.3.1 and 5.6.7, puma exhibited
incorrect behavior when parsing chunked transfer encoding bodies and zero-length Content-Length headers in
a way that allowed HTTP request smuggling. Severity of this issue is highly dependent on the nature of the
web site using puma is. This could be caused by either incorrect parsing of trailing fields in chunked
transfer encoding bodies or by parsing of blank/zero-length Content-Length headers. Both issues have been
addressed and this vulnerability has been fixed in versions 6.3.1 and 5.6.7. Users are advised to upgrade.
There are no known workarounds for this vulnerability. (CVE-2023-40175)
- Puma is a web server for Ruby/Rack applications built for parallelism. Prior to version 6.4.2, puma
exhibited incorrect behavior when parsing chunked transfer encoding bodies in a way that allowed HTTP
request smuggling. Fixed versions limits the size of chunk extensions. Without this limit, an attacker
could cause unbounded resource (CPU, network bandwidth) consumption. This vulnerability has been fixed in
versions 6.4.2 and 5.6.8. (CVE-2024-21647)
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://ubuntu.com/security/notices/USN-6682-1");
script_set_attribute(attribute:"solution", value:
"Update the affected puma package.");
script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:N/I:P/A:N");
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:"cvss_score_source", value:"CVE-2022-24790");
script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2023-40175");
script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
script_set_attribute(attribute:"exploit_available", value:"false");
script_set_attribute(attribute:"vuln_publication_date", value:"2020/05/22");
script_set_attribute(attribute:"patch_publication_date", value:"2024/03/07");
script_set_attribute(attribute:"plugin_publication_date", value:"2024/03/07");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:20.04:-:lts");
script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:22.04:-:lts");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:puma");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Ubuntu Local Security Checks");
script_copyright(english:"Ubuntu Security Notice (C) 2024 Canonical, Inc. / NASL script (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info.nasl");
script_require_keys("Host/cpu", "Host/Ubuntu", "Host/Ubuntu/release", "Host/Debian/dpkg-l");
exit(0);
}
include('debian_package.inc');
if ( ! get_kb_item('Host/local_checks_enabled') ) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/Ubuntu/release');
if ( isnull(os_release) ) audit(AUDIT_OS_NOT, 'Ubuntu');
os_release = chomp(os_release);
if (! ('20.04' >< os_release || '22.04' >< os_release)) audit(AUDIT_OS_NOT, 'Ubuntu 20.04 / 22.04', 'Ubuntu ' + os_release);
if ( ! get_kb_item('Host/Debian/dpkg-l') ) audit(AUDIT_PACKAGE_LIST_MISSING);
var cpu = get_kb_item('Host/cpu');
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if ('x86_64' >!< cpu && cpu !~ "^i[3-6]86$" && 's390' >!< cpu && 'aarch64' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'Ubuntu', cpu);
var pkgs = [
{'osver': '20.04', 'pkgname': 'puma', 'pkgver': '3.12.4-1ubuntu2+esm1'},
{'osver': '22.04', 'pkgname': 'puma', 'pkgver': '5.5.2-2ubuntu2+esm1'}
];
var flag = 0;
foreach package_array ( pkgs ) {
var osver = NULL;
var pkgname = NULL;
var pkgver = NULL;
if (!empty_or_null(package_array['osver'])) osver = package_array['osver'];
if (!empty_or_null(package_array['pkgname'])) pkgname = package_array['pkgname'];
if (!empty_or_null(package_array['pkgver'])) pkgver = package_array['pkgver'];
if (osver && pkgname && pkgver) {
if (ubuntu_check(osver:osver, pkgname:pkgname, pkgver:pkgver)) flag++;
}
}
if (flag)
{
security_report_v4(
port : 0,
severity : SECURITY_WARNING,
extra : ubuntu_report_get()
);
exit(0);
}
else
{
var tested = ubuntu_pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'puma');
}
Vendor | Product | Version | CPE |
---|---|---|---|
canonical | ubuntu_linux | 20.04 | cpe:/o:canonical:ubuntu_linux:20.04:-:lts |
canonical | ubuntu_linux | 22.04 | cpe:/o:canonical:ubuntu_linux:22.04:-:lts |
canonical | ubuntu_linux | puma | p-cpe:/a:canonical:ubuntu_linux:puma |
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11076
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11077
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-23634
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-24790
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-40175
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-21647
ubuntu.com/security/notices/USN-6682-1