Cloudanix VulnDB

CVE-2024-4032

High · 7.5

CVSS

7.5

EPSS

1.1%

Published

Jun 17, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A Python library that decides whether network addresses are private or public was using outdated rules, so programs could treat the wrong addresses as safe or unsafe.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Exposure
Component
Library
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The ipaddress module returns incorrect boolean values for is_private and is_global on IPv4Address, IPv4Network, IPv6Address, and IPv6Network objects because its internal registry data does not match the current IANA Special-Purpose Address Registries.

Why it matters to the business

Applications that rely on these properties for access-control, logging, or routing decisions may permit traffic from addresses that should be treated as private or block addresses that should be treated as global, creating operational friction and potential exposure of internal resources.

How an attack unfolds

An attacker supplies an IPv4 or IPv6 address whose registry status changed after the module's data was frozen; the flawed is_private or is_global result is then used by the target application to decide whether to accept, forward, or log the address, allowing the attacker to reach a resource that the application intended to restrict.

How to fix it

Upgrade CPython to a build containing commit 22adf29da8d99933ffed8647d3e0726edd16f7f8 (equivalent to 3.12.4 or 3.13.0a6). Rebuild and redeploy any statically linked or vendored copies of the ipaddress module. Re-test all code paths that consume is_private or is_global after the upgrade.

How to confirm the fix worked

Run the Python regression tests for the ipaddress module or execute a small script that instantiates the four affected classes with addresses whose status changed in the IANA registries and assert that is_private and is_global now return the expected values. Confirm the interpreter reports a version at or above the fixed releases.

Typical attack path

  1. Identify an application that imports ipaddress and uses is_private or is_global to gate network decisions
  2. Select an address whose IANA designation changed since the module's data snapshot
  3. Send the address (or cause it to be processed) through the application's input path
  4. Observe the application applying the incorrect classification and granting or denying access accordingly

How to detect it

Search application logs and source code for imports of ipaddress combined with calls to is_private or is_global; correlate any anomalous allow/deny decisions involving IPv4 or IPv6 addresses that match known registry changes. No runtime exploit artifacts are produced by the library itself.

What your security team should do

  • Prioritize upgrade of any internet-facing services or internal tools that use ipaddress for filtering decisions within the next sprint
  • Add the fixed commit hash or minimum Python version to dependency manifests and CI pipelines
  • Review application logic that trusts is_private or is_global and add compensating controls (e.g., explicit allow-lists) until the library is updated
  • Monitor EPSS and KEV feeds; schedule re-assessment if either metric rises

The record

The “ipaddress” module contained incorrect information about whether certain IPv4 and IPv6 addresses were designated as “globally reachable” or “private”. This affected the is_private and is_global properties of the ipaddress.IPv4Address, ipaddress.IPv4Network, ipaddress.IPv6Address, and ipaddress.IPv6Network classes, where values wouldn’t be returned in accordance with the latest information from the IANA Special-Purpose Address Registries. CPython 3.12.4 and 3.13.0a6 contain updated information from these registries and thus have the intended behavior.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:8 platform-python 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 platform-python-debug 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 platform-python-devel 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 python3-idle 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 python3-libs 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 python3-test 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 python3-tkinter 0 3.6.8-67.el8_10.alma.1
AlmaLinux:8 python3.11 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-debug 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-devel 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-idle 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-libs 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-rpm-macros 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-test 0 3.11.9-7.el8_10
AlmaLinux:8 python3.11-tkinter 0 3.11.9-7.el8_10
AlmaLinux:8 python3.12 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-debug 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-devel 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-idle 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-libs 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-rpm-macros 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-test 0 3.12.5-2.el8_10
AlmaLinux:8 python3.12-tkinter 0 3.12.5-2.el8_10
AlmaLinux:8 python39 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-Cython 0 0.29.21-5.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-Cython 0 0.29.21-5.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-PyMySQL 0 0.10.1-2.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-attrs 0 20.3.0-2.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-cffi 0 1.14.3-2.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-cffi 0 1.14.3-2.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-chardet 0 3.0.4-19.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-cryptography 0 3.3.1-3.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-debug 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-devel 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-idle 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-idna 0 2.10-4.module_el8.10.0+3849+a48d89aa
AlmaLinux:8 python39-iniconfig 0 1.1.1-2.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-libs 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-lxml 0 4.6.5-1.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-lxml 0 4.6.5-1.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-mod_wsgi 0 4.7.1-7.module_el8.9.0+3634+fb2a896c
AlmaLinux:8 python39-more-itertools 0 8.5.0-2.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-numpy 0 1.19.4-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-numpy 0 1.19.4-3.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-numpy-doc 0 1.19.4-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-numpy-f2py 0 1.19.4-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-numpy-f2py 0 1.19.4-3.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-packaging 0 20.4-4.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pip 0 20.2.4-9.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-pip-wheel 0 20.2.4-9.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-pluggy 0 0.13.1-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-ply 0 3.11-10.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-psutil 0 5.8.0-4.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-psutil 0 5.8.0-4.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-psycopg2 0 2.8.6-3.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-psycopg2-doc 0 2.8.6-3.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-psycopg2-tests 0 2.8.6-3.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-py 0 1.10.0-1.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pybind11 0 2.7.1-1.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pybind11 0 2.7.1-1.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-pybind11-devel 0 2.7.1-1.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pybind11-devel 0 2.7.1-1.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-pycparser 0 2.20-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pyparsing 0 2.4.7-5.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pysocks 0 1.7.1-4.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pytest 0 6.0.2-2.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pyyaml 0 5.4.1-1.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-pyyaml 0 5.4.1-1.module_el8.6.0+3248+c431e88c
AlmaLinux:8 python39-requests 0 2.25.0-3.module_el8.9.0+3634+fb2a896c
AlmaLinux:8 python39-rpm-macros 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-scipy 0 1.5.4-5.module_el8.9.0+3634+fb2a896c
AlmaLinux:8 python39-setuptools 0 50.3.2-6.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-setuptools-wheel 0 50.3.2-6.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-six 0 1.15.0-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-test 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-tkinter 0 3.9.19-7.module_el8.10.0+3885+d986a391
AlmaLinux:8 python39-toml 0 0.10.1-5.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-urllib3 0 1.25.10-5.module_el8.10.0+3765+2f9a457d
AlmaLinux:8 python39-wcwidth 0 0.2.5-3.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-wheel 0 1:0.35.1-4.module_el8.6.0+2780+a40f65e1
AlmaLinux:8 python39-wheel-wheel 0 1:0.35.1-4.module_el8.6.0+2780+a40f65e1
AlmaLinux:9 python-unversioned-command 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3-debug 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3-devel 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3-idle 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3-libs 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3-test 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3-tkinter 0 3.9.18-3.el9_4.3
AlmaLinux:9 python3.11 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.11-debug 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.11-devel 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.11-idle 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.11-libs 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.11-test 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.11-tkinter 0 3.11.7-1.el9_4.3
AlmaLinux:9 python3.12 0 3.12.5-2.el9
AlmaLinux:9 python3.12-debug 0 3.12.5-2.el9
AlmaLinux:9 python3.12-devel 0 3.12.5-2.el9
AlmaLinux:9 python3.12-idle 0 3.12.5-2.el9
AlmaLinux:9 python3.12-libs 0 3.12.5-2.el9
AlmaLinux:9 python3.12-test 0 3.12.5-2.el9
AlmaLinux:9 python3.12-tkinter 0 3.12.5-2.el9
Alpine:v3.17 python3 0 3.10.15-r0
Alpine:v3.18 python3 0 3.11.10-r0
Alpine:v3.19 python3 0 3.11.10-r0
Alpine:v3.20 python3 0 3.12.6-r0
Alpine:v3.21 python3 0 3.12.6-r0
Alpine:v3.22 python3 0 3.12.6-r0
Bitnami libpython 0 3.8.20
Bitnami python 0 3.12.4
Bitnami python 0 3.8.20
Bitnami python 3.12.0 3.12.4
Bitnami python-min 0 3.8.20
Chainguard python-3.10 0 3.10.14-r4
Chainguard python-3.10-base 0 3.10.14-r4
Chainguard python-3.10-base-dev 0 3.10.14-r4
Chainguard python-3.10-dev 0 3.10.14-r4
Chainguard python-3.10-doc 0 3.10.14-r4
Chainguard python-3.11 0 3.11.9-r4
Chainguard python-3.11-base 0 3.11.9-r4
Chainguard python-3.11-base-dev 0 3.11.9-r4
Chainguard python-3.11-dev 0 3.11.9-r4
Chainguard python-3.11-doc 0 3.11.9-r4
Chainguard python-3.12 0 3.12.4-r0
Chainguard python-3.12-base 0 3.12.4-r0
Chainguard python-3.12-base-dev 0 3.12.4-r0
Chainguard python-3.12-dev 0 3.12.4-r0
Chainguard python-3.12-doc 0 3.12.4-r0
Chainguard python-3.12-privileged-netbindservice 0 3.12.4-r0
Chainguard python-3.12-tk 0 3.12.4-r0
Chainguard python-3.8 0 3.8.19-r1
Chainguard python-3.8-base 0 3.8.19-r1
Chainguard python-3.8-base-dev 0 3.8.19-r1
Chainguard python-3.8-default 0 3.8.19-r1
Chainguard python-3.8-dev 0 3.8.19-r1
Chainguard python-3.8-doc 0 3.8.19-r1
Chainguard python-3.9 0 3.9.19-r2
Chainguard python-3.9-base 0 3.9.19-r2
Chainguard python-3.9-base-dev 0 3.9.19-r2
Chainguard python-3.9-default 0 3.9.19-r2
Chainguard python-3.9-dev 0 3.9.19-r2
Chainguard python-3.9-doc 0 3.9.19-r2
Debian:11 pypy3 0 No fix
Debian:11 python3.9 0 No fix
Debian:11 python3.9 0 3.9.2-1+deb11u2
Debian:12 pypy3 0 No fix
Debian:12 python3.11 0 3.11.2-6+deb12u3
Debian:13 pypy3 0 7.3.18+dfsg-1
Debian:13 python3.12 0 3.12.4-1
Debian:14 pypy3 0 7.3.18+dfsg-1
Mageia:9 python3 0 3.10.11-1.3.mga9
Red Hat:enterprise_linux:8::appstream PyYAML 0 0:5.4.1-1.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream PyYAML-debugsource 0 0:5.4.1-1.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream mod_wsgi 0 0:4.7.1-7.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream numpy 0 0:1.19.4-3.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream numpy-debugsource 0 0:1.19.4-3.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream platform-python 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream platform-python-debug 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream platform-python-devel 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python-PyMySQL 0 0:0.10.1-2.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-cffi 0 0:1.14.3-2.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-cffi-debugsource 0 0:1.14.3-2.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-chardet 0 0:3.0.4-19.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-cryptography 0 0:3.3.1-3.module+el8.10.0+21271+eccd1d86
Red Hat:enterprise_linux:8::appstream python-cryptography-debugsource 0 0:3.3.1-3.module+el8.10.0+21271+eccd1d86
Red Hat:enterprise_linux:8::appstream python-idna 0 0:2.10-4.module+el8.10.0+21815+bb024982
Red Hat:enterprise_linux:8::appstream python-lxml 0 0:4.6.5-1.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-lxml-debugsource 0 0:4.6.5-1.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-ply 0 0:3.11-10.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-psutil 0 0:5.8.0-4.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-psutil-debugsource 0 0:5.8.0-4.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-psycopg2 0 0:2.8.6-3.module+el8.10.0+21142+453d2b75
Red Hat:enterprise_linux:8::appstream python-psycopg2-debugsource 0 0:2.8.6-3.module+el8.10.0+21142+453d2b75
Red Hat:enterprise_linux:8::appstream python-pycparser 0 0:2.20-3.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-pysocks 0 0:1.7.1-4.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-requests 0 0:2.25.0-3.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-toml 0 0:0.10.1-5.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python-urllib3 0 0:1.25.10-5.module+el8.10.0+20443+f0a692fe
Red Hat:enterprise_linux:8::appstream python-wheel 0 1:0.35.1-4.module+el8.9.0+19644+d68f775d
Red Hat:enterprise_linux:8::appstream python3 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3-debuginfo 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3-debugsource 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3-idle 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3-libs 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3-test 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3-tkinter 0 0:3.6.8-67.el8_10
Red Hat:enterprise_linux:8::appstream python3.11 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-debug 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-debuginfo 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-debugsource 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-devel 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-idle 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-libs 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-rpm-macros 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-test 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.11-tkinter 0 0:3.11.9-7.el8_10
Red Hat:enterprise_linux:8::appstream python3.12 0 0:3.12.5-2.el8_10
Red Hat:enterprise_linux:8::appstream python3.12-debug 0 0:3.12.5-2.el8_10
Red Hat:enterprise_linux:8::appstream python3.12-debuginfo 0 0:3.12.5-2.el8_10

Related vulnerabilities