CRITICAL✓ PATCH🇬🇧 English

CVE-2021-3177

Buffer overflow w Python 3.x — ryzyko RCE przez liczby zmiennoprzecinkowe

CVSS 9.8v3.1pub. 2021-01-19upd. 2025-12-18

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.

🤖 Analiza AI
Jak działa

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.

Skutki

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.

Mitygacja

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.

Kogo dotyczy

Python 3.x w wersjach do 3.9.1 włącznie; dotyczy również dystrybucji Fedora oraz Debian korzystających z podatnych wersji Pythona.

Uwagi

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 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Debian

    OS
    Debian
    9.0
  • Fedora Project Fedora

    OS
    Fedoraproject
    3233
  • Netapp Active Iq Unified Manager

    APP
    Netapp
    wszystkie wersje
  • Netapp Ontap Select Deploy Administration Utility

    APP
    Netapp
    wszystkie wersje
  • Oracle Communications Cloud Native Core Network Function Cloud Native Environment

    APP
    Oracle
    22.2.0
  • Oracle Communications Offline Mediation Controller

    APP
    Oracle
    12.0.0.3.0
  • Oracle Communications Pricing Design Center

    APP
    Oracle
    12.0.0.3.0
  • Oracle Enterprise Manager Ops Center

    APP
    Oracle
    12.4.0.0
  • Oracle Zfs Storage Appliance Kit

    APP
    Oracle
    8.8
  • Python

    APP
    Python
    3.9.0 – 3.9.13.8.0 – 3.8.73.7.0 – 3.7.93.6.0 – 3.6.12
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
Tagi
RCEMemory
CWE
Referencje

Powiązane podatności

CVE-2026-24061CRITICAL9.8⚠ KEVPL ✓ten sam produkt

GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER

CVE-2025-32463CRITICAL9.3⚠ KEVPL ✓ten sam produkt

Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)

CVE-2025-49113CRITICAL9.9⚠ KEVPL ✓ten sam produkt

RCE przez deserializację PHP w Roundcube Webmail (parametr _from)

CVE-2025-32433CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)

CVE-2025-24201CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki