IBM Support

Security Bulletin: Multiple vulnerabilities in Python affect AIX

Security Bulletin


Summary

Vulnerabilities in Python: SSL/TLS Security Vulnerabilities (CVE-2026-19553, CVE-2026-19445), Archive Extraction / Tarfile Vulnerabilities (CVE-2026-19672, CVE-2026-82049, CVE-2026-87910), Authentication / Credential Exposure (CVE-2026-15806), Memory Management Vulnerabilities (CVE-2026-15310, CVE-2026-102633, CVE-2026-77214), Unicode / Encoding Issues (CVE-2026-93990, CVE-2026-17084). Python is used by AIX as part of Ansible node management automation.

Vulnerability Details

CVEID:   CVE-2026-19553
DESCRIPTION:   ssl.SSLContext.wrap_bio() didn't require the server_hostname argument to not be None if ssl.SSLContext.check_hostname was set. Due to a missing parameter check in SSLObject, if the server_hostname argument isn'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 no ValueError being raised due to misconfiguration. If the program passes a server_hostname value that isn't an empty string or None to any of these APIs then certificate hostname verification proceeds as expected and the program is not affected by this vulnerability. Mitigating this vulnerability doesn't require updating Python or applying the patch. To mitigate, pass a valid non-None and non-empty server_hostname value to SSLContext.wrap_bio(), asyncio.create_connection(), or asyncio.loop.start_tls() and certificate hostname verification will proceed as expected. Upgrading to the latest version of Python or applying the patch only changes the behavior from silently skipping hostname verification to raising a ValueError, similar to SSLContext.wrap_socket(), when server_hostname isn't supplied.
CWE:   CWE-297: Improper Validation of Certificate with Host Mismatch
CVSS Source:   cna@python.org
CVSS Base score:   7.6
CVSS Vector:   (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-15310
DESCRIPTION:   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.
CWE:   CWE-400: Uncontrolled Resource Consumption
CVSS Source:   cna@python.org
CVSS Base score:   2.1
CVSS Vector:   (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-19672
DESCRIPTION:   The tarfile module's tar and data extraction filters created directories outside the destination for members 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. Only empty directories are created outside the destination. Member contents are still extracted inside it. To return to the destination the member's name must contain the destination directory's own final component, so extraction 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.
CWE:   CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
CVSS Source:   cna@python.org
CVSS Base score:   6.3
CVSS Vector:   (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-15806
DESCRIPTION:   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.
CWE:   CWE-319: Cleartext Transmission of Sensitive Information
CVSS Source:   cna@python.org
CVSS Base score:   6
CVSS Vector:   (CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-17084
DESCRIPTION:   The "stringprep" module didn't process characters from RFC 3454 tables B.2 or B.3 correctly: the latest Unicode codepoint attributes were used instead of the specified Unicode 3.2.0. This behavior would cause mismatches when processing domain names using IDNA 2003 (the "idna" codec) and the in_table_b2() function of the "stringprep" module. This only affects domain names containing characters that were not previously registered or had their Unicode attributes such as case-folding behavior updated since Unicode 3.2.0.
CWE:   CWE-436: Interpretation Conflict
CVSS Source:   cna@python.org
CVSS Base score:   6
CVSS Vector:   (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-102633
DESCRIPTION:   libexpat versions 2.7.2 through 2.8.5 contain an integer overflow vulnerability in expat_realloc() function on 32-bit platforms when computing allocation sizes. Attackers supplying malicious XML to applications parsing with vulnerable libexpat can cause heap buffer overflow, memory corruption, or denial of service.
CWE:   CWE-190: Integer Overflow or Wraparound
CVSS Source:   disclosure@vulncheck.com
CVSS Base score:   5.9
CVSS Vector:   (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H)

CVEID:   CVE-2026-82049
DESCRIPTION:   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.
CWE:   CWE-59: Improper Link Resolution Before File Access ('Link Following')
CVSS Source:   cna@python.org
CVSS Base score:   8.4
CVSS Vector:   (CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-87910
DESCRIPTION:   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.
CWE:   CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
CVSS Source:   cna@python.org
CVSS Base score:   5.7
CVSS Vector:   (CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-93990
DESCRIPTION:   Expat before 2.8.5 fails to validate that a high surrogate in UTF-16 input is followed by a low surrogate, allowing malformed UTF-16 sequences to be accepted. Attackers can supply UTF-16 encoded XML containing lone high surrogates that consume the following code unit, causing Expat to pass unpaired surrogates to applications built with XML_UNICODE and to silently replace input characters in other builds.
CWE:   CWE-176: Improper Handling of Unicode Encoding
CVSS Source:   disclosure@vulncheck.com
CVSS Base score:   7.5
CVSS Vector:   (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N)

CVEID:   CVE-2026-19445
DESCRIPTION:   A remote, unauthenticated TLS client can make a server crash or call through a freed pointer if its sni_callback assigns a different context to SSLSocket.context (the documented way to select a certificate per server name) and nothing else keeps the original ssl.SSLContext alive. Typical cases are servers that create an SSLContext per connection or replace it while connections are open; servers that wrap their listening socket with it are not affected. Mitigation: keep a reference to every SSLContext that sets sni_callback for the lifetime of the server. TLS clients are not affected.
CWE:   CWE-416: Use After Free
CVSS Source:   cna@python.org
CVSS Base score:   9.2
CVSS Vector:   (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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X)

CVEID:   CVE-2026-77214
DESCRIPTION:   libexpat before commit 13c5f63 contains a heap buffer over-read vulnerability in xmlparse.c. XML_ParseBuffer advances the parse buffer end with parser-m_bufferEnd += len using a caller-supplied length that is not validated against the allocated buffer size, so repeated XML_ParseBuffer calls move m_bufferEnd past the end of the heap allocation and subsequent parsing reads out of bounds. Reaching this path requires a parse buffer to already be present; otherwise XML_ParseBuffer returns XML_ERROR_NO_BUFFER. A buffer is present after a prior call to XML_GetBuffer, either directly (the common case) or indirectly through a prior XML_Parse call that allocates the buffer internally. The over-read discloses adjacent heap memory to the calling application, recovering heap pointers, libc function pointers, and code pointers sufficient to defeat ASLR and build further exploitation primitives.
CWE:   CWE-125: Out-of-bounds Read
CVSS Source:   disclosure@vulncheck.com
CVSS Base score:   8.2
CVSS Vector:   (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L)

Affected Products and Versions

Affected Product(s)Version(s)
AIX7.3
VIOS4.1

 

The vulnerabilities in the following filesets are being addressed:

key_fileset = osrcaix

FilesetLower LevelUpper LevelKEY
python3.9.base3.9.0.03.9.24.0key_w_fs
python3.11.base3.11.0.03.11.16.0key_w_fs
python3.14.base3.14.0.03.14.7.0key_w_fs

 

Note:

A. Python 3.9 is out-of-support. Considering long term support, it is advised to upgrade to Python 3.11.

B. Latest level of Python fileset is available from the web download site:

https://www.ibm.com/resources/mrs/assets?source=aixbp

 

To find out whether the affected filesets are installed on your systems, refer to the lslpp command found in the AIX user's guide.

Example:  lslpp -L | grep -i python3.11.base

 

Remediation/Fixes

A. FIXES

IBM strongly recommends addressing the vulnerability now.

The fixes can be downloaded via https from:

https://aix.software.ibm.com/aix/efixes/security/python_fix22.tar

 

The links above are to a tar file containing this signed advisory, fix packages, and OpenSSL signatures for each package.

The fixes below include prerequisite checking. This will enforce the correct mapping between the fixes and AIX Technology Levels.

 

AIX LevelFix (*.Z) KEY
7.3python-3.11.17.0.tar.Zkey_w_fix
7.3python-3.14.8.0.tar.Zkey_w_fix

 

VIOS LevelFix (*.Z) KEY
4.1python-3.11.17.0.tar.Zkey_w_fix
4.1python-3.14.8.0.tar.Zkey_w_fix

 

To extract the fixes from the tar file:

tar xvf python_fix22.tar

cd python_fix22.tar

 

Verify you have retrieved the fixes intact:

The checksums below were generated using the following command:

"openssl dgst -sha256 [filename]" 

openssl dgst -sha256filenameKEY
c3d514db93863c4fd49f938e32a39cbe53da218a238ddd84a7856e5af9897eacpython-3.11.17.0.tar.Zkey_w_csum
a8bfa9f1d58649881c0017ffa6c1c0880e821b363332734053b9e1d90e0577dbpython-3.14.8.0.tar.Zkey_w_csum

 

The checksums below were generated using the following command:

"openssl dgst -sha512 [filename]" 

openssl dgst -sha512filenameKEY
c0d788bd5687edb763e93cbe7653531236ae01bae9292f2804244d85c9f9e3cc06273a59923def74eae2b5a5fe2201bd147fbc642b6bcb5f2aad82ddf807a50cpython-3.11.17.0.tar.Zkey_4K_w_csum
0816d177688554008792cf69ee7cdf3c838a6c9e5552dbaf9e29a7e231d94c30b5b3292f57f5bc3b04aaca86eaca18e27eb2d24cdb10cf0ad4f3b7389c3ce4fdpython-3.14.8.0.tar.Zkey_4K_w_csum

 

These sums should match exactly. The OpenSSL signatures in the tar file and on this advisory can also be used to verify the integrity of the fixes.  If the sums or signatures cannot be confirmed, contact IBM AIX Support at

https://ibm.com/support/ and describe the discrepancy.

 

openssl dgst -sha256 -verify [pubkey_file] -signature [advisory_file].sig [advisory_file]

openssl dgst -sha256 -verify [pubkey_file] -signature [ifix_file].sig [ifix_file]

 

Published advisory OpenSSL signature file location:

https://aix.software.ibm.com/aix/efixes/security/python_advisory22.asc.sig

 

B. FIX AND INTERIM FIX INSTALLATION

To extract the fixes from the tar file:

zcat python-3.11.17.0.tar.Z | tar xvf -

 

IMPORTANT: If possible, it is recommended that a mksysb backup of the system be created.  Verify it is both bootable and readable before proceeding.

 

To preview the fix installation:

installp -apYd . python3.11.base

 

To install the fix package:

installp -aXYd . python3.11.base

 

 

Workarounds and Mitigations

None

Get Notified about Future Security Bulletins

References

Off

Acknowledgement

Change History

21 Oct 2026: Initial Publication

*The CVSS Environment Score is customer environment specific and will ultimately impact the Overall CVSS Score. Customers can evaluate the impact of this vulnerability in their environments by accessing the links in the Reference section of this Security Bulletin.

Disclaimer

According to the Forum of Incident Response and Security Teams (FIRST), the Common Vulnerability Scoring System (CVSS) is an "industry open standard designed to convey vulnerability severity and help to determine urgency and priority of response." IBM PROVIDES THE CVSS SCORES ""AS IS"" WITHOUT WARRANTY OF ANY KIND, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. CUSTOMERS ARE RESPONSIBLE FOR ASSESSING THE IMPACT OF ANY ACTUAL OR POTENTIAL SECURITY VULNERABILITY. In addition to other efforts to address potential vulnerabilities, IBM periodically updates the record of components contained in our product offerings. As part of that effort, if IBM identifies previously unidentified packages in a product/service inventory, we address relevant vulnerabilities regardless of CVE date. Inclusion of an older CVEID does not demonstrate that the referenced product has been used by IBM since that date, nor that IBM was aware of a vulnerability as of that date. We are making clients aware of relevant vulnerabilities as we become aware of them. "Affected Products and Versions" referenced in IBM Security Bulletins are intended to be only products and versions that are supported by IBM and have not passed their end-of-support or warranty date. Thus, failure to reference unsupported or extended-support products and versions in this Security Bulletin does not constitute a determination by IBM that they are unaffected by the vulnerability. Reference to one or more unsupported versions in this Security Bulletin shall not create an obligation for IBM to provide fixes for any unsupported or extended-support products or versions.

Document Location

Worldwide

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG10","label":"AIX"},"Component":"","Platform":[{"code":"PF002","label":"AIX"}],"Version":"7.3","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSPHKW","label":"PowerVM Virtual I\/O Server"},"Component":"","Platform":[{"code":"PF002","label":"AIX"}],"Version":"4.1","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
21 October 2026

Initial Publish date:
21 October 2026

UID

ibm17293240