Amazon Linux 2 : containerd (ALASNITRO-ENCLAVES-2026-125)
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 ALASNITRO-ENCLAVES-2026-125.
##
include('compat.inc');
if (description)
{
script_id(371811);
script_version("1.1");
script_set_attribute(attribute:"plugin_modification_date", value:"2026/10/24");
script_cve_id(
"CVE-2026-53493",
"CVE-2026-56855",
"CVE-2026-61801",
"CVE-2026-78659",
"CVE-2026-78662",
"CVE-2026-78663",
"CVE-2026-81870",
"CVE-2026-95837"
);
script_xref(name:"IAVA", value:"2026-A-1024");
script_xref(name:"IAVB", value:"2026-B-0296-S");
script_name(english:"Amazon Linux 2 : containerd (ALASNITRO-ENCLAVES-2026-125)");
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 containerd installed on the remote host is prior to 2.3.7-1. It is, therefore, affected by multiple
vulnerabilities as referenced in the ALAS2NITRO-ENCLAVES-2026-125 advisory.
containerd is an open-source container runtime. Prior to versions 1.7.36, 2.0.13, 2.2.9, 2.3.6, and 2.4.1,
a crafted OCI index graph can force very high CPU/memory usage during PullImage (before container start),
causing long ContainerCreating stalls and, at larger sizes, node/runtime instability. Versions 1.7.36,
2.0.13, 2.2.9, 2.3.6, and 2.4.1 fix the issue. (CVE-2026-53493)
Previously, after a channel has been established, a malicious peer could send crafted messages that would
deadlock the entire connection. Now, we handle all RFC 4254 channel messages; global requests are handled
explicitly. Then, treat all other messages as a protocol error and tear the connection down instead of
buffering and blocking. (CVE-2026-56855)
The `github.com/moby/sys/user` package provides Go utilities for parsing and looking up entries in Unix-
style user and group database files. Versions before 0.4.1 do not sufficiently limit entries when parsing
`/etc/passwd`- or `/etc/group`-style files, allowing an attacker who can supply a specially crafted file
to cause excessive memory consumption and potentially terminate the affected process due to an out-of-
memory condition. This issue is patched in version 0.4.1. As a workaround, avoid parsing attacker-
controlled user or group database files, or validate and limit untrusted input before parsing it.
(CVE-2026-61801)
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)
Previously, a channel registered in the mux's chanList is not usable until it is established. A malicious
peer was able flood the channel's incomingRequests, deadlocking the entire connection. Now, we add an
atomic established state, set when a channel becomes usable. Until such a time, handlePacket drops every
packet other than the open confirmation/failure, without blocking and without tearing down the connection.
(CVE-2026-78662)
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)
OpenTelemetry-Go is the Go implementation of OpenTelemetry. From version 1.5.0 to 1.44.0,
sdk/trace.NewTracerProvider emits a TracerProvider created internal Info-level diagnostic event whose
MarshalLog implementations recursively include span processor, exporter, and client configuration.
Applications that call otel.SetLogger to enable OpenTelemetry internal Info logging can therefore record
OTLP gRPC and HTTP collector endpoints, the OTLP HTTP Insecure flag, and complete Zipkin collector URLs. A
person or system with access to those logs can learn internal collector topology and can recover
credentials or tokens embedded in Zipkin URL user information or query strings. The default OpenTelemetry
logger does not emit the event, and this path does not log OTLP authentication headers, TLS key material,
or span payloads. This issue is fixed in version 1.45.0. (CVE-2026-81870)
containerd is an open-source container runtime. From 2.1.0 until 2.2.7 and 2.3.4, containerd's CRI
CreateContainer checkpoint restore is vulnerable because CRIU restores process security state from
checkpoint data instead of enforcing the destination ContainerConfig. An attacker who can create a
container from a crafted checkpoint can supply restored credentials, capabilities, no_new_privs, and
seccomp state. The restored process can run as root with full capabilities and no enforced seccomp filters
while CRI status reports the requested configuration. Systems that do not use CRI checkpoint restore are
not affected. This issue is fixed in versions 2.2.7 and 2.3.4. (CVE-2026-95837)
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/ALAS2NITRO-ENCLAVES-2026-125.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-53493.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-56855.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-61801.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-78662.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-81870.html");
script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-95837.html");
script_set_attribute(attribute:"solution", value:
"Run 'yum update containerd' or
or 'yum update --advisory ALAS2NITRO-ENCLAVES-2026-125' 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:"cvss4_vector", value:"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N");
script_set_attribute(attribute:"cvss4_threat_vector", value:"CVSS:4.0/E:U");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2026-78663");
script_set_attribute(attribute:"cvss4_score_source", value:"CVE-2026-53493");
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/09/02");
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:containerd");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:containerd-debuginfo");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:containerd-stress");
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 REPOS_FOUND = TRUE;
var extras_list = get_kb_item("Host/AmazonLinux/extras_label_list");
if (isnull(extras_list)) REPOS_FOUND = FALSE;
var repository = '"amzn2extra-nitro-enclaves"';
if (REPOS_FOUND && (repository >!< extras_list)) exit(0, AFFECTED_REPO_NOT_ENABLED);
var pkgs = [
{'reference':'containerd-2.3.7-1.amzn2.0.1', 'cpu':'aarch64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'containerd-2.3.7-1.amzn2.0.1', 'cpu':'x86_64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'containerd-debuginfo-2.3.7-1.amzn2.0.1', 'cpu':'aarch64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'containerd-debuginfo-2.3.7-1.amzn2.0.1', 'cpu':'x86_64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'containerd-stress-2.3.7-1.amzn2.0.1', 'cpu':'aarch64', 'release':'AL2', 'rpm_spec_vers_cmp':TRUE},
{'reference':'containerd-stress-2.3.7-1.amzn2.0.1', 'cpu':'x86_64', '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)
{
var extra = rpm_report_get();
if (!REPOS_FOUND) extra = rpm_report_get() + report_repo_caveat();
security_report_v4(
port : 0,
severity : SECURITY_HOLE,
extra : extra
);
exit(0);
}
else
{
var tested = pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, "containerd / containerd-debuginfo / containerd-stress");
}
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
7High risk
Vulners AI Score7
CVSS 46.9
CVSS 3.17.8 - 9.1
EPSS0.00627
SSVC