Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

suse-cvrf логотип

openSUSE-SU-2026:21459-1

Опубликовано: 28 июл. 2026
Источник: suse-cvrf

Описание

Security update for python313, python3

This update for python313, python3 fixes the following issues:

Changes in python313:

Update to 3.13.14:

  • Security

    • gh-151159: Bumps the OpenSSL version to 3.0.21 on Android.
    • gh-150599: Fix a possible stack buffer overflow in bz2 when a bz2.BZ2Decompressor is reused after a decompression error. The decompressor now becomes unusable after libbz2 reports an error.
    • gh-149835: shutil.move() now resolves symlinks via os.path.realpath() when checking whether the destination is inside the source directory, preventing a symlink-based bypass of that guard.
    • gh-149698: Update bundled libexpat to version 2.8.1 for the fix for CVE 2026-45186.
    • gh-87451: The ftplib module’s undocumented ftpcp function no longer trusts the IPv4 address value returned from the source server in response to the PASV command by default, completing the fix for CVE-2021-4189. As with ftplib.FTP, the former behavior can be re-enabled by setting the trust_server_pasv_ipv4_address attribute on the source ftplib.FTP instance to True. Thanks to Qi Deng at Aurascape AI for the report.
    • gh-149486: tarfile.data_filter() now validates link targets using the same normalised value that is written to disk, strips trailing separators from the member name when resolving a symlink’s directory, and rejects link members that would replace the destination directory itself. This closes several path-traversal bypasses of the data extraction filter.
    • gh-149079: Fix a potential denial of service in unicodedata.normalize(). The canonical ordering step of Unicode normalization used a quadratic-time insertion sort for reordering combining characters, which could be exploited with crafted input containing many combining characters in non-canonical order. Replaced with a linear-time counting sort for long runs.
    • gh-149018: Improved protection against XML hash-flooding attacks in xml.parsers.expat and xml.etree.ElementTree when Python is compiled with libExpat 2.8.0 or later.
    • gh-149017: Update bundled libexpat to version 2.8.0.
    • gh-90309: Base64-encode values when embedding cookies to JavaScript using the http.cookies.BaseCookie.js_output() method to avoid injection and escaping. (bsc#1262654, CVE-2026-6019)
    • gh-148808: Added buffer boundary check when using nbytes parameter with asyncio.AbstractEventLoop.sock_recvfrom_into(). Only relevant for Windows and the asyncio.ProactorEventLoop.
    • gh-148395: Fix a dangling input pointer in lzma.LZMADecompressor, bz2.BZ2Decompressor, and internal zlib._ZlibDecompressor when memory allocation fails with MemoryError, which could let a subsequent decompress() call read or write through a stale pointer to the already-released caller buffer. (bsc#1262098, CVE-2026-6100, seems like it has been incompletely applied gh#python/cpython#151605)
    • gh-148169: A bypass in webbrowser allowed URLs prefixed with %action to pass the dash-prefix safety check (bsc#1262098, CVE-2026-6100).
    • gh-146581: Fix vulnerability in shutil.unpack_archive() for ZIP files on Windows which allowed to write files outside of the destination tree if the patch in the archive contains a Windows drive prefix. Now such invalid paths will be skipped. Files containing “..” in the name (like “foo..bar”) are no longer skipped.
    • gh-146333: Fix quadratic backtracking in configparser.RawConfigParser option parsing regexes (OPTCRE and OPTCRE_NV). A crafted configuration line with many whitespace characters could cause excessive CPU usage.
    • gh-146211: Reject CR/LF characters in tunnel request headers for the HTTPConnection.set_tunnel() method. (bsc#1261969, CVE-2026-1502)
  • Core and Builtins

    • gh-151112: Fix a crash in the compiler that could occur when running out of memory.
    • gh-151126: Fix a crash, when there’s no memory left on a device, which happened in:
    • code compilation - _winapi.CreateProcess()
    • Now these places raise proper MemoryError errors.
    • gh-150633: Fix the frozen importer accepting module names with embedded null bytes, which caused it to bypass the sys.modules cache and create duplicate module objects.
    • gh-149156: Fix an intermittent crash after os.fork() when perf trampoline profiling is enabled and the child returns through trampoline frames inherited from the parent process.
    • gh-149449: Fix a use-after-free crash when the unicodedata module was removed from sys.modules and garbage-collected between calls that decode \N{...} escapes or use the namereplace codec error handler.
    • gh-148450: Fix abc.register() so it invalidates type version tags for registered classes.
    • gh-150207: Fix a crash when a memory allocation fails during tokenizer initialization. A proper MemoryError is now raised instead.
    • gh-150107: asyncio: sendfile() and sock_sendfile() event loop methods now call file.seek(offset) if file has a seek() method, even if offset is 0 (default value).
    • gh-150146: Fix a crash on a complex type variable substitution.
    • from typing import TypeVar; memoryview[TypeVar("")][*typing.Mapping[..., ...]] used to fail due to missing NULL check on _unpack_args C function call.
    • gh-149590: Fix crash when faulthandler is imported more than once.
    • gh-149738: sqlite3: Disallow removing row_factory and text_factory attributes of a connection to prevent a crash on a query.
    • gh-139808: Add branch protections for AArch64 (BTI/PAC) in assembly code used by -X perf_jit (Linux perf profiler integration).
    • gh-148820: Fix a race in _PyRawMutex on the free-threaded build where a Py_PARK_INTR return from _PySemaphore_Wait could let the waiter destroy its semaphore before the unlocking thread’s _PySemaphore_Wakeup completed, causing a fatal ReleaseSemaphore error.
    • gh-148653: Forbid marshalling recursive code objects which cannot be correctly unmarshalled.
    • gh-148390: Fix an undefined behavior in memoryview when using the native boolean format (?) in cast(). Previously, on some common platforms, calling memoryview(b).cast("?").tolist() incorrectly returned [False] instead of [True] for any even byte b. Patch by Bénédikt Tran.
    • gh-148418: Fix a possible reference leak in a corrupted TYPE_CODE marshal stream.
    • gh-148222: Fix vectorcall support in types.GenericAlias when the underlying type does not support the vectorcall protocol. Fix possible leaks in types.GenericAlias and types.UnionType in case of memory error.
    • gh-145376: Fix reference leaks in various unusual error scenarios.
  • C API

    • gh-150907: Fix dynamic_annotations.h header file when built with C++ and Valgrind: add extern "C++" scope for the C++ template. Patch by Victor Stinner.
  • Build

    • gh-149351: Avoid possible broken macOS framework install names when DESTDIR is specified during builds.
    • gh-146475: Block Apple Clang from being used to build the JIT as it ships without required LLVM tools.
    • gh-148535: No longer use the gcc -fprofile-update=atomic flag on i686. The flag has been added to fix a random GCC internal error on PGO build (gh-145801) caused by corruption of profile data (.gcda files). The problem is that it makes the PGO build way slower (up to 47x slower) on i686. Since the GCC internal error was not seen on i686 so far, don’t use -fprofile-update=atomic on i686 anymore. Patch by Victor Stinner.
  • Library

    • gh-150913: Fix sqlite3.Blob slice assignment to raise TypeError and IndexError for type and size mismatches respectively, even when the target slice is empty.
    • gh-143008: Fix race conditions when re-initializing a io.TextIOWrapper object.
    • gh-150685: Update bundled pip to 26.1.2
    • gh-150406: Fix a possible crash occurring during socket module initialization when the system is out of memory on platforms without a reentrant gethostbyname.
    • gh-150372: readline: Fix a potential crash during tab completion caused by an out-of-memory error during module initialization.
    • gh-150175: Fix race condition in unittest.mock.ThreadingMock where concurrent calls could lose increments to call_count and other attributes due to a missing lock in _increment_mock_call.
    • gh-84353: Preserve non-UTF-8 encoded filenames when appending to a zipfile.ZipFile. Previously, non-ASCII names stored in a legacy encoding (without the UTF-8 flag bit set) could be corrupted when the central directory was rewritten: they were decoded as cp437 and then re-stored as UTF-8.
    • gh-149995: Update various docstrings in typing.
    • gh-88726: The email package now uses standard MIME charset names “gb2312” and “big5” instead of non-standard names “eucgb2312_cn” and “big5_tw”.
    • gh-149571: Fix the C implementation of xml.etree.ElementTree.Element.itertext(): it no longer emits text for comments and processing instructions.
    • gh-149921: Fix reference leaks in error paths of the _interpchannels and _interpqueues extension modules.
    • gh-149801: Add IANA registered names and aliases with leading zeros before number (like IBM00858, CP00858, IBM01140, CP01140) for corresponding codecs.
    • gh-149701: Fix bad return code from Lib/venv/bin/activate if hashing is disabled
    • gh-112821: In the REPL, autocompletion might run arbitrary code in the getter of a descriptor. If that getter raised an exception, autocompletion would fail to present any options for the entire object. Autocompletion now works as expected for these objects.
    • gh-149388: Make asyncio.windows_utils.PipeHandle closing idempotent.
    • gh-149489: Fix ElementTree serialization to HTML. The content of elements “xmp”, “iframe”, “noembed”, “noframes”, and “plaintext” is no longer escaped. The “plaintext” element no longer have the closing tag.
    • gh-149377: Update bundled pip to 26.1.1
    • gh-149231: In tomllib, the number of parts in TOML keys is now limited.
    • gh-149117: Fix runpy.run_module() and runpy.run_path() to set the name attribute on the ImportError they raise.
    • gh-149148: ensurepip: Upgrade bundled pip to 26.1. This version fixes the CVE 2026-3219 vulnerability. Patch by Victor Stinner.
    • gh-148093: Fix an out-of-bounds read of one byte in binascii.a2b_uu(). Raise binascii.Error, instead of reading past the buffer end.
    • gh-148914: Fix memoization of in-band PickleBuffer in the Python implementation of pickle. Previously, identical PickleBuffers did not preserve identity, and empty writable PickleBuffer memoized an empty bytearray object in place of b'', so the following references to b'' were unpickled as an empty bytearray object.
    • gh-138907: Support RFC 9309 in urllib.robotparser.
    • gh-148954: Fix XML injection vulnerability in xmlrpc.client.dumps() where the methodname was not being escaped before interpolation into the XML body.
    • gh-148801: xml.etree.ElementTree: Fix a crash in Element.deepcopy on deeply nested trees.
    • gh-148735: xml.etree.ElementTree: Fix a use-after-free in Element.findtext when the element tree is mutated concurrently during the search.
    • gh-146553: Fix infinite loop in typing.get_type_hints() when wrapped forms a cycle. Patch by Shamil Abdulaev.
    • gh-148508: An intermittent timing error when running SSL tests on iOS has been resolved.
    • gh-148518: If an email containing an address header that ended in an open double quote was parsed with a non-compat32 policy, accessing the username attribute of the mailbox accessed through that header object would result in an IndexError. It now correctly returns an empty string as the result.
    • gh-148370: configparser: prevent quadratic behavior when a ParsingError is raised after a parser fails to parse multiple lines. Patch by Bénédikt Tran.
    • gh-148254: Use singular “sec” instead of “secs” in timeit verbose output for consistency with other time units.
    • gh-148192: email.generator.Generator._make_boundary could fail to detect a duplicate boundary string if linesep was not n. It now correctly detects boundary strings when linesep is rn as well.
    • gh-146313: Fix a deadlock in multiprocessing’s resource tracker where the parent process could hang indefinitely in os.waitpid() during interpreter shutdown if a child created via os.fork() still held the resource tracker’s pipe open.
    • gh-145831: Fix email.quoprimime.decode() leaving a stray \r when eol='\r\n' by stripping the full eol string instead of one character.
    • gh-145105: Fix crash in csv reader when iterating with a re-entrant iterator that calls next() on the same reader from within next.
    • gh-130750: Restore quoting of choices in argparse error messages for improved clarity and consistency with documentation.
    • gh-105936: Attempting to mutate non-field attributes of dataclasses with both frozen and slots being True now raises FrozenInstanceError instead of TypeError. Their non-dataclass subclasses can now freely mutate non-field attributes, and the original non-slotted class can be garbage collected. The fix also handles the case of an empty class cell on a function found within the class (gh-148947).
    • gh-142516: ssl: fix reference leaks in ssl.SSLContext objects. Patch by Bénédikt Tran.
    • gh-142831: Fix a crash in the json module where a use-after-free could occur if the object being encoded is modified during serialization.
    • gh-140287: The asyncio REPL now handles exceptions when executing PYTHONSTARTUP scripts. Patch by Bartosz Sławecki.
    • gh-90949: Add SetBillionLaughsAttackProtectionActivationThreshold() and SetBillionLaughsAttackProtectionMaximumAmplification() to xmlparser objects to tune protections against billion laughs attacks. Patch by Bénédikt Tran.
    • gh-132631: Fix “I/O operation on closed file” when parsing JSON Lines file with JSON CLI.
    • gh-128110: Fix bug in the parsing of email address headers that could result in extraneous spaces in the decoded text when using a modern email policy. Space between pairs of adjacent RFC 2047 encoded-words is now ignored, per section 6.2 (and consistent with existing parsing of unstructured headers like Subject).
    • gh-107398: Fix tarfile stream mode exception when process the file with the gzip extra field.
    • gh-123853: Update the table of Windows language code identifiers (LCIDs) used by locale.getdefaultlocale() on Windows to protocol version 16.0 (2024-04-23).
    • gh-70039: Fixed bug where smtplib.SMTP.starttls() could fail if smtplib.SMTP.connect() is called explicitly rather than implicitly.
    • gh-83281: email: improve handling trailing garbage in address lists to avoid throwing AttributeError in certain edge cases
    • gh-91099: imaplib.IMAP4.login() now raises exceptions with str instead of bytes. Patch by Florian Best.
  • IDLE

    • bpo-6699: Warn the user if a file will be overwritten when saving.
  • Documentation

    • gh-150319: Generic builtin and standard library types now document the meaning of their type parameters.
    • gh-148663: Document that calendar.IllegalMonthError is a subclass of both ValueError and IndexError since Python 3.12.
    • gh-146646: Document that glob.glob(), glob.iglob(), pathlib.Path.glob(), and pathlib.Path.rglob() silently suppress OSError exceptions raised from scanning the filesystem.
    • gh-109503: Fix documentation for shutil.move() on usage of os.rename() since nonatomic move might be used even if the files are on the same filesystem. Patch by Fang Li
  • Tests

    • gh-151130: Add more tests for PyWeakref_* C API.
    • gh-149776: Fix test_socket on Linux kernel 7.1 and newer: skip UDP Lite tests if it’s not supported. Patch by Victor Stinner.
  • Keep unversioned Python 3 development entry points in python3-devel: python313-devel no longer provides python3-devel and no longer owns libpython3.so, python3-config, python3.pc, or python3-embed.pc. Do not package versioned GIL pkg-config files in nogil-devel. Also, fix regular expressions in rpmlintrc.

  • Improve testing for the support of IPPROTO_UDPLITE, which could be not present although header files are. (bsc#1263787, gh#python/cpython!149081)

  • Add missing BR crypto-policies-scripts (need for the fix of bsc#1211301).

  • CVE-2026-6019: protect against HTML injection by Base64-encoding cookie values embedded in JS (bsc#1262654, gh#python/cpython#90309)

  • CVE-2026-1502: reject CR/LF in HTTP tunnel request headers (bsc#1261969, gh#python/cpython#146211)

  • CVE-2026-4786: fix webbrowser %action substitution bypass of dash-prefix check (bsc#1262319, gh#python/cpython#148169)

  • CVE-2026-6100: prevent dangling pointer, which can end in the use-after-free error (bsc#1262098, gh#python/cpython#148395)

Changes in python3:

  • Provide explicitly also file dependencies /usr/bin/python3 and /usr/bin/pydoc3.

break bootstrap build dependency cycle on primary python

Break the cyclic build dependency loop between python3 and python313 during version upgrades (such as 3.13.13 to 3.13.14).

Previously, python3.spec required BuildRequires: %{primary_python} (the versioned non-base interpreter package) and queried its version via rpm -q during spec file parsing. During upgrades, this blocked the build of python3 because %{primary_python} (non-base) depended on python3-base, which demanded the new python313-base version.

Since the unversioned compatibility package python3 only creates unversioned symlinks (like /usr/bin/python3) and owns generic RPM macros, it does not actually require the versioned standard library modules (the non-base flavor) to build.

This change allows python3 to build successfully against the already built python313-base and python313-devel packages, breaking the circular dependency and enabling a clean upgrade path.

  • Let python3-devel explicitly provide pkgconfig(python3) and pkgconfig(python3-embed), matching its ownership of the unversioned pkg-config files.

  • Complete the transition of the unversioned python3 namespace (jsc#PED-16123, bsc#1258364).

  • Add missing Provides/Obsoletes for generic names.

  • Add macros.python3 (moved from python313).

  • Add BuildIgnore: gdb BuildRequires: python313-devel → python313-devel owns /usr/share/gdb/auto-load/...libpython3.13...-gdb.py → the currently published version of that file has #!/usr/bin/python3 → RPM auto-generated Requires: python3-base on gdb → OBS tries to install gdb into the build root and fails because python3-base is the package being built.

  • Correct the logic in the %pre scripts.

  • version of the package must be equal to the version of %primary_python

  • Initial packaging effort for the python3 superpackage.

python3 is shipped as new package.

Список пакетов

openSUSE Leap 16.0
libpython3_13-1_0-3.13.14-160000.1.1
libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
libpython3_13t1_0-3.13.14-160000.1.1
python3-3.13.14-160000.1.1
python3-base-3.13.14-160000.1.1
python3-curses-3.13.14-160000.1.1
python3-dbm-3.13.14-160000.1.1
python3-devel-3.13.14-160000.1.1
python3-doc-3.13.14-160000.1.1
python3-doc-devhelp-3.13.14-160000.1.1
python3-idle-3.13.14-160000.1.1
python3-testsuite-3.13.14-160000.1.1
python3-tk-3.13.14-160000.1.1
python3-tools-3.13.14-160000.1.1
python313-3.13.14-160000.1.1
python313-base-3.13.14-160000.1.1
python313-base-x86-64-v3-3.13.14-160000.1.1
python313-curses-3.13.14-160000.1.1
python313-dbm-3.13.14-160000.1.1
python313-devel-3.13.14-160000.1.1
python313-doc-3.13.14-160000.1.1
python313-doc-devhelp-3.13.14-160000.1.1
python313-idle-3.13.14-160000.1.1
python313-nogil-3.13.14-160000.1.1
python313-nogil-base-3.13.14-160000.1.1
python313-nogil-curses-3.13.14-160000.1.1
python313-nogil-dbm-3.13.14-160000.1.1
python313-nogil-devel-3.13.14-160000.1.1
python313-nogil-idle-3.13.14-160000.1.1
python313-nogil-testsuite-3.13.14-160000.1.1
python313-nogil-tk-3.13.14-160000.1.1
python313-nogil-tools-3.13.14-160000.1.1
python313-testsuite-3.13.14-160000.1.1
python313-tk-3.13.14-160000.1.1
python313-tools-3.13.14-160000.1.1
python313-x86-64-v3-3.13.14-160000.1.1

Описание

A flaw was found in Python, specifically in the FTP (File Transfer Protocol) client library in PASV (passive) mode. The issue is how the FTP client trusts the host from the PASV response by default. This flaw allows an attacker to set up a malicious FTP server that can trick FTP clients into connecting back to a given IP address and port. This vulnerability could lead to FTP client scanning ports, which otherwise would not have been possible.


Затронутые продукты
openSUSE Leap 16.0:libpython3_13-1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13t1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:python3-3.13.14-160000.1.1

Ссылки

Описание

CR/LF bytes were not rejected by HTTP client proxy tunnel headers or host.


Затронутые продукты
openSUSE Leap 16.0:libpython3_13-1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13t1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:python3-3.13.14-160000.1.1

Ссылки

Описание

When calling base64.b64decode() or related functions the decoding process would stop after encountering the first padded quad regardless of whether there was more information to be processed. This can lead to data being accepted which may be processed differently by other implementations. Use "validate=True" to enable stricter processing of base64 data.


Затронутые продукты
openSUSE Leap 16.0:libpython3_13-1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13t1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:python3-3.13.14-160000.1.1

Ссылки

Описание

Mitgation of CVE-2026-4519 was incomplete. If the URL contained "%action" the mitigation could be bypassed for certain browser types the "webbrowser.open()" API could have commands injected into the underlying shell. See CVE-2026-4519 for details.


Затронутые продукты
openSUSE Leap 16.0:libpython3_13-1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13t1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:python3-3.13.14-160000.1.1

Ссылки

Описание

http.cookies.Morsel.js_output() returns an inline <script> snippet and only escapes " for JavaScript string context. It does not neutralize the HTML parser-sensitive sequence </script> inside the generated script element. Mitigation base64-encodes the cookie value to disallow escaping using cookie value.


Затронутые продукты
openSUSE Leap 16.0:libpython3_13-1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13t1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:python3-3.13.14-160000.1.1

Ссылки

Описание

Use-after-free (UAF) was possible in the `lzma.LZMADecompressor`, `bz2.BZ2Decompressor`, and `gzip.GzipFile` when a memory allocation fails with a `MemoryError` and the decompression instance is re-used. This scenario can be triggered if the process is under memory pressure. The fix cleans up the dangling pointer in this specific error condition. The vulnerability is only present if the program re-uses decompressor instances across multiple decompression calls even after a `MemoryError` is raised during decompression. Using the helper functions to one-shot decompress data such as `lzma.decompress()`, `bz2.decompress()`, `gzip.decompress()`, and `zlib.decompress()` are not affected as a new decompressor instance is used per call. If the decompressor instance is not re-used after an error condition, this usage is similarly not vulnerable.


Затронутые продукты
openSUSE Leap 16.0:libpython3_13-1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13-1_0-x86-64-v3-3.13.14-160000.1.1
openSUSE Leap 16.0:libpython3_13t1_0-3.13.14-160000.1.1
openSUSE Leap 16.0:python3-3.13.14-160000.1.1

Ссылки
Уязвимость openSUSE-SU-2026:21459-1