CVE-2023-24329 is an improper input-validation vulnerability in Python's urllib.parse component. In affected Python versions, URL parsing can be used to bypass application blocklisting logic when an attacker supplies a URL prefixed with blank characters. Applications that rely on urlparse() or urlsplit() output to enforce domain or protocol restrictions can therefore make authorization or routing decisions on insufficiently validated URL data.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
This repository is a self-contained Docker lab for CVE-2023-24329, demonstrating a parser differential in Python's urllib.parse.urlparse() on affected Python versions. The exploit path is straightforward: the vulnerable Flask API in vulnerable-api/app.py exposes POST /fetch, parses a user-supplied URL with urlparse(), blocks certain schemes and hosts, then fetches the original unmodified string with urllib.request.urlopen(). Because affected Python versions treat leading whitespace differently between parsing and fetching, a single leading space bypasses the filter. The attacker driver in attacker/exploit.py automates three modes: baseline (show direct file:// and internal-service URLs are blocked), exploit (prepend a space and retrieve /etc/passwd plus the internal secret), and verify (run the same payload against the patched Python 3.11.4 container and confirm rejection). Repository structure is clean and purpose-built: vulnerable-api contains the intentionally flawed target service, internal-service contains a fake internal metadata-style endpoint at /secret, attacker contains the exploit client, and two compose files swap only the Python interpreter version to compare vulnerable vs patched behavior. Main exploit capabilities are local file read from the target container and SSRF to an internal-only service. This is a real exploit lab rather than a scanner or detection script, but it is educational and constrained to the included Docker environment.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
25 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A vulnerability affecting the babel SRPM in CIQ LTS 8.6 / Rocky Linux 8.6, remediated by CIQ advisory ciqsa-2026_0004.
A vulnerability addressed by the referenced CentOS/TuxCare local security update. The notice indicates publicly available exploits.
Unknown; the CVE is listed as part of the OpenShift Container Platform 4.13.4 advisory, but no specific description is provided.
Unknown
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.