Amazon Linux 2 : golang (ALAS-2026-4005)
| Reporter | Title | Published | Views | Family All 1000 |
|---|---|---|---|---|
| Amazon Linux 2 : cni-plugins (ALAS-2026-4017) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : nerdctl (ALAS-2026-4018) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : cri-tools (ALAS-2026-4042) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : soci-snapshotter (ALASDOCKER-2026-148) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : amazon-ecr-credential-helper (ALASDOCKER-2026-149) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : oci-add-hooks (ALASDOCKER-2026-150) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : runfinch-finch (ALASDOCKER-2026-151) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : docker (ALASDOCKER-2026-152) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : containerd (ALASDOCKER-2026-153) | 24 Oct 202600:00 | – | nessus | |
| Amazon Linux 2 : docker (ALASNITRO-ENCLAVES-2026-124) | 24 Oct 202600:00 | – | nessus |
10
10
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Amazon Linux 2 Security Advisory ALAS-2026-4005.
##
include('compat.inc');
if (description)
{
script_id(371793);
script_version("1.1");
script_set_attribute(attribute:"plugin_modification_date", value:"2026/10/24");
script_cve_id(
"CVE-2026-56866",
"CVE-2026-78659",
"CVE-2026-78660",
"CVE-2026-78663",
"CVE-2026-78667",
"CVE-2026-78669",
"CVE-2026-94439",
"CVE-2026-94440",
"CVE-2026-94444",
"CVE-2026-94447",
"CVE-2026-94448",
"CVE-2026-97030",
"CVE-2026-97031",
"CVE-2026-97032"
);
script_xref(name:"IAVB", value:"2026-B-0296-S");
script_name(english:"Amazon Linux 2 : golang (ALAS-2026-4005)");
script_set_attribute(attribute:"synopsis", value:
"The remote Amazon Linux 2 host is missing a security update.");
script_set_attribute(attribute:"description", value:
"The version of golang installed on the remote host is prior to 1.26.9-1. It is, therefore, affected by multiple
vulnerabilities as referenced in the ALAS2-2026-4005 advisory.
When http.Transport sends an HTTP/1 CONNECT request with a non-empty Request.Body, it writes the body
directly to the connection without framing after the request headers. If the server rejects the CONNECT
request with a non-2xx keep-alive response, Transport returns the connection to the idle pool. Because
CONNECT requests do not have a request body, the server may interpret the trailing body bytes as a
subsequent pipelined HTTP/1.1 request on the connection, leaving the pooled connection desynchronized and
causing the next caller that reuses it to read the response to the injected request. In reverse proxies
(including httputil.ReverseProxy) that forward CONNECT requests through a shared Transport, this can lead
to cross-user response poisoning.
The HTTP/1 transport now closes a connection after sending a CONNECT request, regardless of the response
status.
In addition, ReverseProxy now rejects incoming CONNECT requests with a 405 Method Not Allowed response.
ReverseProxy has never handled CONNECT requests in a useful fashion (it does not convert the connection
into a bidirectional tunnel), so we do not expect this change to negatively affect any current users.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81740NOTE: Fixed by:
https://github.com/golang/go/commit/76875df0f3425f69e4dc2c439040a248b6107854 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/3fe1aac0ce941cb16b0ec5d489827cf1c58197c4 (go1.26.9) (CVE-2026-56866)
When Trailer headers are sent by a client, the HTTP server internally uses the header values to populate
the Request.Trailer map passed to the server handler. Because Request.Trailer is a map, each entry incurs
memory overhead. For HTTP/2 servers, a malicious client can exploit this by sending a Trailer header
that declares a large number of fields causing the server to allocate a disproportionate amount of memory
while bypassing Server.MaxHeaderValueCount and Server.MaxHeaderBytes limits.This exploit is not applicable
for HTTP/1 servers, which do not support multiplexing a large number of requests over one TCP connection,
and whose Server.MaxHeaderBytes are calculated differently.Server.MaxHeaderValueCount and
Server.MaxHeaderBytes limits are now applied towards the trailer fields declared in Trailer headers.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81857NOTE: Fixed by:
https://github.com/golang/go/commit/cbb0fb8b51cba866018b8a0fb4b5458f16c5c80b (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/6e049521882c944afc1e519a83971ec421dc2974 (go1.26.9) (CVE-2026-78659)
Historically, we have been rather lax about malformed framing-related headers in our HTTP/2
implementation, as they cannot interfere with HTTP/2 framing. However, this makes it possible for our
HTTP/2 implementation to forward responses containing such headers to an HTTP/1 client when acting as a
reverse proxy. If the HTTP/1 client also does not behave strictly enough, this can result in response
smuggling.
We now delete malformed framing-related headers when received by our HTTP/2 transport, so they will not be
forwarded to a potentially vulnerable HTTP/1 client.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81115NOTE: Fixed by:
https://github.com/golang/go/commit/072779d81582543bf2872c259e0c6cceea728de4 (go1.27.2)TODO: check might
need tracking for golang-golang-x-net (CVE-2026-78660)
The HTTP/2 server could refund connection-level flow control twice for the same data: Once when a client
resets a stream (refunding data for any sent-but-unread portion of the stream), and again when a request
handler reads the buffered data.A malicious client could exploit this to bypass the configured connection-
level flow control limit (MaxReceiveBufferPerConnection). Total buffered data is still limited by the
concurrent stream limit and stream-level flow control.The HTTP/2 server now waits to refund connection-
level flow control for reset streams until after the request handler is complete.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81743NOTE: Fixed by:
https://github.com/golang/go/commit/31dc9e2449e394439498142451627af52626d7c4 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/6e049521882c944afc1e519a83971ec421dc2974 (go1.26.9) (CVE-2026-78663)
When parsing a Range header containing a large number of small ranges, FileServer(FS), ServeContent, and
ServeFile(FS) could consume an excessive amount of CPU.
These functions now ignore Range headers containing more than 200 ranges.The limit is controlled by the
new httpservecontentmaxranges=GODEBUG setting. Setting GODEBUG=httpservecontentmaxranges=0 disables the
limit.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81858NOTE: Fixed by:
https://github.com/golang/go/commit/ababc3cd873d8acce1777268aa7a817e6b672028 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/eb25b4e532c5a01f99ef860ec66743a8783f992b (go1.26.9) (CVE-2026-78667)
A malicious HTTP/2 peer could cause excessive CPU consumption in the client or server by opening a large
number of streams and then sending many small SETTINGS frames containing SETTINGS_INITIAL_WINDOW_SIZE
values.The HTTP/2 client and server now efficiently handle changes to the initial window size (O(1) rather
than O(number of streams)).
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81742NOTE: Fixed by:
https://github.com/golang/go/commit/1d58cdaa1069e259b60c324ec77472f09f23d92e (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/6e049521882c944afc1e519a83971ec421dc2974 (go1.26.9) (CVE-2026-78669)
When an HTTP server handler sent a 2xx response to an HTTP/1 CONNECT request and returned without
hijacking the connection, the server improperly continued to read and serve requests from the connection.
Since a 2xx response to an HTTP/1 CONNECT converts the connection into a tunnel, the server should not
treat the connection as continuing to contain HTTP.The impact of this misbehavior is mostly limited to
potential request smuggling, where an intermediate proxy considers the data on the connection to be
tunneled and the server considers it to be HTTP.The HTTP/1 server now always closes a connection after
responding to a CONNECT request, regardless of the response status.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81744NOTE: Fixed by:
https://github.com/golang/go/commit/e92229e24a387cc006a750af176b07a459ba71a1 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/087de1ff08ea620ac2f6ae26c939454cb793883a (go1.26.9) (CVE-2026-94439)
Parsing a multipart form could bypass memory limits and read an arbitrarily long line into memory when the
remaining limit at the start of a part was less than 400 bytes. Multipart form memory limits are now
properly enforced in this situation.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81741NOTE: Fixed by:
https://github.com/golang/go/commit/7c79b50a74b6d1aa4269b1827dda7d81f3717f9d (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/d7a7aa8e6781ddf8dce12adf60a813d957d4763e (go1.26.9) (CVE-2026-94440)
cmd/go: checksum bypass for golang.org/fips140
Previously, a user operating inside of a malicious Go project that defines a bogus golang.org/fips140 and
operates a malicious GOMODPROXY the user chooses to connect to can serve an arbitrary module in its place.
We now unpack the trusted ziphash for the bundled golang.org/fips140 module and construct its entry in the
GOMODCACHE such that it can be verified by the toolchain. (CVE-2026-94444)
Previously, a user operating inside of a malicious Go project that defines a bogus golang.org/toolchain
go.sum entry and operates a malicious GOMODPROXY the user chooses to use can bypass the intended checksum.
We now ensure that golang.org/toolchain always goes to the network for the canonical checksum.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81834NOTE: Fixed by:
https://github.com/golang/go/commit/68fa7699a27d745f90bf8630202e1a415d1b0769 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/7325b729f07c7ff255b9b5e3f427234ebd21ac47 (go1.26.9) (CVE-2026-94447)
When a JavaScript template literal contains consecutive expressions, the context tracking state was not
properly reset upon entering a new expression.We now ensure that template-literal expression entries
correctly reset context variables so all subsequent regular expression literals are accurately recognized
and escaped.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81821NOTE: Fixed by:
https://github.com/golang/go/commit/b26d150e6985f804826f4fcb1aa33aa81e700b52 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/e59c03e695f2eaa26e308f756c83773afb034e47 (go1.26.9) (CVE-2026-94448)
A trusted template author may have previously written a valid template wherein the use of the |yield|
keyword would not be correctly escaped.We now ensure that valid keyword uses are escaped and non-keyword
uses are not escaped.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81823NOTE: Fixed by:
https://github.com/golang/go/commit/6e2cfab0a1c1683c52f9e09270627b0c4e6446e3 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/5d84f6f08caf63b5f1300930368756bd34955f4a (go1.26.9) (CVE-2026-97030)
Multiple ECH outer extension references are not permitted under RFC 9849; previously, a client could send
a well-crafted packet that could trigger memory exhaustion in the server process by specifying multiple
references.We now reject these as malformed and curb the memory amplification vector as a result.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81855NOTE: Fixed by:
https://github.com/golang/go/commit/f022e61963529d5e691f0e42a87fd5b520f01636 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/eb1bf6e0c4f68b23409483b156e1455696508c6e (go1.26.9) (CVE-2026-97031)
HTTP/2 servers could end up crashing due to inadvertently modifying its HPACK encoder concurrently. This
happens because the server modifies the HPACK encoder from two goroutines without synchronization: one
uses the encoder to encode a HEADERS frame as part of a response sent to a client and the other modifies
the encoder's table size when handling a SETTINGS frame containing SETTINGS_HEADER_TABLE_SIZE that a
client sends. A malicious client can repeatedly send a request while changing the header table size to
crash the server.
Fix this issue by not applying SETTINGS_HEADER_TABLE_SIZE immediately.Instead, buffer any
SETTINGS_HEADER_TABLE_SIZE received, and only apply the new value prior to the next time the server writes
a frame.
NOTE: https://www.openwall.com/lists/oss-security/2026/10/08/9NOTE:
https://github.com/golang/go/issues/81867NOTE: Fixed by:
https://github.com/golang/go/commit/12acaf3086437e140e2dd3b7d2c30fdd633c5fe0 (go1.27.2)NOTE: Fixed by:
https://github.com/golang/go/commit/6e049521882c944afc1e519a83971ec421dc2974 (go1.26.9) (CVE-2026-97032)
Tenable has extracted the preceding description block directly from the tested product security advisory.
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://alas.aws.amazon.com//AL2/ALAS2-2026-4005.html");
script_set_attribute(attribute:"see_also", value:"https://alas.aws.amazon.com/faqs.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-56866.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-78659.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-78660.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-78663.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-78667.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-78669.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-94439.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-94440.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-94444.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-94447.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-94448.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-97030.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-97031.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-97032.html");
script_set_attribute(attribute:"solution", value:
"Run 'yum update golang' or
or 'yum update --advisory ALAS2-2026-4005' to update your system.");
script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:N/I:C/A:C");
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:N/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-2026-78663");
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:"2026/10/08");
script_set_attribute(attribute:"patch_publication_date", value:"2026/10/24");
script_set_attribute(attribute:"plugin_publication_date", value:"2026/10/24");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang-bin");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang-docs");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang-misc");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang-shared");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang-src");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:golang-tests");
script_set_attribute(attribute:"cpe", value:"cpe:/o:amazon:linux:2");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_set_attribute(attribute:"stig_severity", value:"I");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Amazon Linux Local Security Checks");
script_copyright(english:"This script is Copyright (C) 2026 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info2.nasl");
script_require_keys("Host/local_checks_enabled", "Host/AmazonLinux/release", "Host/AmazonLinux/rpm-list");
exit(0);
}
include("rpm2.inc");
if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var alas_release = get_kb_item("Host/AmazonLinux/release");
if (isnull(alas_release) || !strlen(alas_release)) audit(AUDIT_OS_NOT, "Amazon Linux");
var os_ver = pregmatch(pattern: "^AL(A|\d+|-\d+)", string:alas_release);
if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, "Amazon Linux");
os_ver = os_ver[1];
if (os_ver != "2")
{
if (os_ver == 'A') os_ver = 'AMI';
audit(AUDIT_OS_NOT, "Amazon Linux 2", "Amazon Linux " + os_ver);
}
if (!get_kb_item("Host/AmazonLinux/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);
var pkgs = [
{'reference':'golang-1.26.9-1.amzn2.0.1', 'cpu':'aarch64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-1.26.9-1.amzn2.0.1', 'cpu':'x86_64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-bin-1.26.9-1.amzn2.0.1', 'cpu':'aarch64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-bin-1.26.9-1.amzn2.0.1', 'cpu':'x86_64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-docs-1.26.9-1.amzn2.0.1', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-misc-1.26.9-1.amzn2.0.1', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-shared-1.26.9-1.amzn2.0.1', 'cpu':'aarch64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-shared-1.26.9-1.amzn2.0.1', 'cpu':'x86_64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-src-1.26.9-1.amzn2.0.1', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'golang-tests-1.26.9-1.amzn2.0.1', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE}
];
var flag = 0;
foreach var package_array ( pkgs ) {
var reference = NULL;
var _release = NULL;
var sp = NULL;
var _cpu = NULL;
var el_string = NULL;
var rpm_spec_vers_cmp = NULL;
var epoch = NULL;
var allowmaj = NULL;
var exists_check = NULL;
var cves = NULL;
if (!empty_or_null(package_array['reference'])) reference = package_array['reference'];
if (!empty_or_null(package_array['release'])) _release = package_array['release'];
if (!empty_or_null(package_array['sp'])) sp = package_array['sp'];
if (!empty_or_null(package_array['cpu'])) _cpu = package_array['cpu'];
if (!empty_or_null(package_array['el_string'])) el_string = package_array['el_string'];
if (!empty_or_null(package_array['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = package_array['rpm_spec_vers_cmp'];
if (!empty_or_null(package_array['epoch'])) epoch = package_array['epoch'];
if (!empty_or_null(package_array['allowmaj'])) allowmaj = package_array['allowmaj'];
if (!empty_or_null(package_array['exists_check'])) exists_check = package_array['exists_check'];
if (!empty_or_null(package_array['cves'])) cves = package_array['cves'];
if (reference && _release && (!exists_check || rpm_exists(release:_release, rpm:exists_check))) {
if (rpm_check(release:_release, sp:sp, cpu:_cpu, reference:reference, epoch:epoch, el_string:el_string, rpm_spec_vers_cmp:rpm_spec_vers_cmp, allowmaj:allowmaj, cves:cves)) flag++;
}
}
if (flag)
{
security_report_v4(
port : 0,
severity : SECURITY_HOLE,
extra : rpm_report_get()
);
exit(0);
}
else
{
var tested = pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, "golang / golang-bin / golang-docs / etc");
}
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
24 Oct 2026 00:00Current
6.3Medium risk
Vulners AI Score6.3
CVSS 3.19.1
EPSS0.00627
SSVC