p PatchFirst

CVE-2024-12254

CVE-2024-12254 · Unbounded memory buffering in SelectorSocketTransport.writelines()

This page contains facts from public vulnerability sources. Check the original advisory before updating.

Starting in Python 3.12.0, the asyncio._SelectorSocketTransport.writelines() method would not "pause" writing and signal to the Protocol to drain the buffer to the wire once the write buffer reached the "high-water mark". Because of this, Protocols would not periodically drain the write buffer potentially leading to memory exhaustion. This vulnerability likely impacts a small number of users, you must be using Python 3.12.0 or later, on macOS or Linux, using the asyncio module with protocols, and using .writelines() method which had new zero-copy-on-write behavior in Python 3.12.0 and later. If not all of these factors are true then your usage of Python is unaffected.

CVSS 8.7 · High · EPSS 1.9% · Fix available

Published
Updated

Stack: system · python

Affected products and versions

  • python

    Versions
    • ≥ 0, < 3.12.9: Affected (python)
    • ≥ 3.13.0, < 3.13.2: Affected (python)
    • ≥ 3.14.0a1, < 3.14.0a3: Affected (python)

    Update to 3.12.9; Update to 3.13.2; Update to 3.14.0a3

  • python3.13 Debian:13

    Affected ranges
    • ECOSYSTEM: < 3.13.1-2

    Update to 3.13.1-2

  • python3.13 Debian:14

    Affected ranges
    • ECOSYSTEM: < 3.13.1-2

    Update to 3.13.1-2

  • python3.12 Ubuntu:24.04:LTS

    Versions
    • 3.12.0-1
    • 3.12.0-5
    • 3.12.0-6
    • 3.12.0-7
    • 3.12.1-2
    • 3.12.2-1
    • 3.12.2-4build3
    • 3.12.2-4build4
    • 3.12.2-5ubuntu3
    • 3.12.3-1
    • 3.12.3-1ubuntu0.1
    • 3.12.3-1ubuntu0.2
    • 3.12.3-1ubuntu0.3
    Affected ranges
    • ECOSYSTEM: < 3.12.3-1ubuntu0.4

    Update to 3.12.3-1ubuntu0.4

Original sources

Check your server →