Python 3.x do wersji 3.9.1 zawiera podatność buffer overflow w funkcji PyCArg_repr w module _ctypes, która może prowadzić do zdalnego wykonania kodu (RCE). Podatność jest szczególnie groźna w aplikacjach przyjmujących niezaufane dane wejściowe w postaci liczb zmiennoprzecinkowych.
▸ Pokaż oryginał (EN)
Python 3.x through 3.9.1 has a buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution in certain Python applications that accept floating-point numbers as untrusted input, as demonstrated by a 1e300 argument to c_double.from_param. This occurs because sprintf is used unsafely.
Podatność wynika z niebezpiecznego użycia funkcji sprintf w pliku _ctypes/callproc.c, gdzie brak odpowiedniej walidacji rozmiaru bufora prowadzi do jego przepełnienia (buffer overflow). Atakujący może przekazać specjalnie spreparowaną liczbę zmiennoprzecinkową — np. wartość 1e300 jako argument do c_double.from_param — powodując przepełnienie bufora na stosie. W aplikacjach, które akceptują tego rodzaju dane od zewnętrznych użytkowników bez wcześniejszej weryfikacji, może to skutkować wykonaniem arbitralnego kodu.
Atakujący może doprowadzić do zdalnego wykonania dowolnego kodu (RCE) w kontekście procesu uruchamiającego podatną aplikację Python, co potencjalnie oznacza pełne przejęcie kontroli nad systemem — naruszenie poufności, integralności i dostępności danych.
Należy zaktualizować Pythona do wersji wyższej niż 3.9.1, w której zastosowano poprawkę eliminującą niebezpieczne użycie sprintf (patch dostępny w repozytorium CPython: github.com/python/cpython/pull/24239). Użytkownicy dystrybucji Debian i Fedora powinni zastosować patche dostępne w ramach aktualizacji systemowych od producenta dystrybucji. Dodatkowo zaleca się walidację i ograniczenie zakresu akceptowanych wartości zmiennoprzecinkowych w aplikacjach przyjmujących niezaufane dane wejściowe.
Python 3.x w wersjach do 3.9.1 włącznie; dotyczy również dystrybucji Fedora oraz Debian korzystających z podatnych wersji Pythona.
Podatność jest reprodukowalna przy użyciu publicznie udokumentowanego wektora: przekazanie wartości 1e300 jako argumentu do c_double.from_param. Szczegóły techniczne zostały opublikowane w zgłoszeniu bugs.python.org/issue42938.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDebian
OSDebian9.0Fedora Project Fedora
OSFedoraproject3233Netapp Active Iq Unified Manager
APPNetappwszystkie wersjeNetapp Ontap Select Deploy Administration Utility
APPNetappwszystkie wersjeOracle Communications Cloud Native Core Network Function Cloud Native Environment
APPOracle22.2.0Oracle Communications Offline Mediation Controller
APPOracle12.0.0.3.0Oracle Communications Pricing Design Center
APPOracle12.0.0.3.0Oracle Enterprise Manager Ops Center
APPOracle12.4.0.0Oracle Zfs Storage Appliance Kit
APPOracle8.8Python
APPPython3.9.0 – 3.9.13.8.0 – 3.8.73.7.0 – 3.7.93.6.0 – 3.6.12
Powiązane podatności
GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER
Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)
RCE przez deserializację PHP w Roundcube Webmail (parametr _from)
Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)
Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki