Lucene search
+L

Amazon Linux 2023 : python3.13, python3.13-devel, python3.13-freethreading (ALAS2023-2026-3229)

🗓️ 25 Oct 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 3 Views

Multiple vulnerabilities in python3.13 on Amazon Linux 2023.

Related
Refs
Code
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Amazon Linux 2023 Security Advisory ALAS2023-2026-3229.
##

include('compat.inc');

if (description)
{
  script_id(371824);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/10/25");

  script_cve_id(
    "CVE-2026-15310",
    "CVE-2026-15806",
    "CVE-2026-17084",
    "CVE-2026-19445",
    "CVE-2026-19553",
    "CVE-2026-19672",
    "CVE-2026-82049",
    "CVE-2026-87910"
  );
  script_xref(name:"IAVA", value:"2026-A-0890");

  script_name(english:"Amazon Linux 2023 : python3.13, python3.13-devel, python3.13-freethreading (ALAS2023-2026-3229)");

  script_set_attribute(attribute:"synopsis", value:
"The remote Amazon Linux 2023 host is missing a security update.");
  script_set_attribute(attribute:"description", value:
"It is, therefore, affected by multiple vulnerabilities as referenced in the ALAS2023-2026-3229 advisory.

    When decompressing crafted zip files using the bzip/LZMA/Zstandard

    compressions, Python could use an attacker-controlled size to

    pre-allocate memory, possibly resulting in memory exhaustion. (CVE-2026-15310)

    The HTTPPasswordMgr class in the urllib.request module, along with its subclasses
    HTTPPasswordMgrWithDefaultRealm and HTTPPasswordMgrWithPriorAuth, did not take the URL scheme into account
    when matching stored credentials against a requested URL. Credentials added for an https:// URL were also
    used for requests to the same host over http://, so an attacker able to redirect or downgrade a client to
    plain HTTP (for example, via an HTTPS-to-HTTP redirect or an on-path position) could capture credentials
    in cleartext. Credentials added for http:// URLs could likewise be sent over https://.

    Credential matching is now scoped by URL scheme. Credentials registered with a URL that includes a scheme
    are only used for requests with the same scheme. Credentials registered with a bare authority (such as
    example.com or example.com:8080) continue to match any scheme, preserving compatibility with existing
    code, including proxy authentication.

    Users who cannot upgrade immediately can mitigate by ensuring that applications never make plain http://
    requests to hosts for which credentials are registered, for example by not following redirects to http://
    URLs. (CVE-2026-15806)

    The stringprep module didn't process characters from RFC 3454 tablesB.2 or B.3 correctly: the latest
    Unicode codepoint attributes were usedinstead of the specified Unicode 3.2.0. This behavior would
    causemismatches when processing domain names using IDNA 2003 (the idnacodec) and the in_table_b2()
    function of the stringprep module. Thisonly affects domain names containing characters that were not
    previouslyregistered or had their Unicode attributes such as case-foldingbehavior updated since Unicode
    3.2.0. (CVE-2026-17084)

    A remote, unauthenticated TLS client can make a server crash or callthrough a freed pointer if its
    sni_callback assigns a different context toSSLSocket.context (the documented way to select a certificate
    per servername) and nothing else keeps the original ssl.SSLContext alive. Typicalcases are servers that
    create an SSLContext per connection or replace itwhile connections are open; servers that wrap their
    listening socket withit are not affected.

    Mitigation: keep a reference to every SSLContext that sets sni_callback forthe lifetime of the server. TLS
    clients are not affected. (CVE-2026-19445)

    ssl.SSLContext.wrap_bio() didn't require the server_hostname argumentto not be None if
    ssl.SSLContext.check_hostname was set. Due to amissing parameter check in SSLObject, if the
    server_hostname argumentisn't supplied then hostname verification would be silently skipped.

    This defect could lead to programs where certificate hostname verification*appeared* to be succeeding with
    SSLContext.check_hostname = True and noValueError being raised due to misconfiguration.

    If the program passes a server_hostname value that isn't an empty stringor None to any of these APIs then
    certificate hostname verificationproceeds as expected and the program is not affected by this
    vulnerability.

    Mitigating this vulnerability doesn't require updating Python or applyingthe patch. To mitigate, pass a
    valid non-None and non-emptyserver_hostname value to SSLContext.wrap_bio(),asyncio.create_connection(), or
    asyncio.loop.start_tls() andcertificate hostname verification will proceed as expected. Upgrading tothe
    latest version of Python or applying the patch only changes thebehavior from silently skipping hostname
    verification to raising aValueError, similar to SSLContext.wrap_socket(), when server_hostnameisn't
    supplied. (CVE-2026-19553)

    The tarfile module's tar and dataextraction filters created directories outside the destination formembers
    whose name leaves the destination and returns to it, such as ../evil/../dest/sub/file. The containment
    check used the resolved path, but intermediate directories were created from the name as given.

    Onlyempty directories are created outside the destination. Member contentsare still extracted inside it.
    To return to the destination the member'sname must contain the destination directory's own final
    component, soextraction into a secure randomised directory is not affected.

    This affects POSIX platforms only. On Windows, .. components are collapsed before the path reaches the
    filesystem, so the directories outside the destination are never created. (CVE-2026-19672)

    In CPython 3.13 and earlier, the tarfile module's data and tar extraction filters are vulnerable to
    crafted archives containing a hard link to a symbolic link. Such archives may cause extraction to modify
    the permissions or modification time of a file outside the destination directory, or expose the contents
    of that file within the extracted tree. (CVE-2026-82049)

    When tarfile extracts a link on a system that doesn't support links, it falls back to extracting a member
    from the archive. In this case, the filter function is run twice: once for the extracted member, and once
    with name set to the location of the link. For one of the calls, the return value was ignored. Instead,
    the member should be skipped if either call returns None. (CVE-2026-87910)

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//AL2023/ALAS2023-2026-3229.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-15310.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-15806.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-17084.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-19445.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-19553.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-19672.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-82049.html");
  script_set_attribute(attribute:"see_also", value:"https://explore.alas.aws.amazon.com/CVE-2026-87910.html");
  script_set_attribute(attribute:"solution", value:
"Run 'dnf update python3.13 --releasever 2023.12.20261026' or
  or 'dnf update --advisory ALAS2023-2026-3229 --releasever 2023.12.20261026' to update your system.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/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:H/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:"cvss4_vector", value:"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/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-82049");
  script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2026-19445");
  script_set_attribute(attribute:"cvss4_score_source", value:"CVE-2026-19445");

  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/08/18");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/10/24");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/10/25");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-debug");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-debugsource");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-devel");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-freethreading");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-freethreading-debug");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-idle");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-libs");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-test");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:amazon:linux:python3.13-tkinter");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:amazon:linux:2023");
  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 != "-2023")
{
  if (os_ver == 'A') os_ver = 'AMI';
  audit(AUDIT_OS_NOT, "Amazon Linux 2023", "Amazon Linux " + os_ver);
}

if (!get_kb_item("Host/AmazonLinux/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);

var pkgs = [
    {'reference':'python3.13-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-debug-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-debug-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-debuginfo-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-debuginfo-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-debugsource-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-debugsource-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-devel-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-devel-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-freethreading-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-freethreading-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-freethreading-debug-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-freethreading-debug-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-idle-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-idle-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-libs-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-libs-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-test-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-test-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-tkinter-3.13.16-1.amzn2023.0.1', 'cpu':'aarch64', 'release':'AL-2023', 'rpm_spec_vers_cmp':TRUE},
    {'reference':'python3.13-tkinter-3.13.16-1.amzn2023.0.1', 'cpu':'x86_64', 'release':'AL-2023', '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, "python3.13 / python3.13-debug / python3.13-debuginfo / 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

25 Oct 2026 00:00Current
6.3Medium risk
Vulners AI Score6.3
CVSS 49.2
EPSS0.00734
SSVC
3