grunfink snac2: Heap-based buffer overflow in JSON parser
Summary
snac2 before 2.93 contains a heap-based buffer overflow in the JSON parser function _xs_json_load_lexer(). An unauthenticated remote attacker can send a single crafted application/activity+json POST request containing a JSON string with a \u0000 escape. The request is parsed before signature checks, and the memory corruption crashes the server, causing a denial of service. No code execution is reported.
Affected
- snac2 versions 0 to before 2.93
Fixed in
- Upgrade to snac2 2.93 or later.
Workaround
- None documented by the vendor. Upgrading to 2.93 or later is the fix.
Exploitation
- CISA SSVC: exploitation 'poc', automatable 'yes', technical impact 'partial'.
- A public proof of concept for the crash is referenced. No reports of active exploitation found.
- Not listed in CISA KEV.
Our recommendation
- Update snac2 to 2.93 or later and verify the installed version, not only the distribution label.
- Check whether snac2 is in use, especially if it has a public inbox.
- Restrict access to ActivityPub endpoints where possible, rate-limit POST requests at the reverse proxy, and use a process supervisor with automatic restart.
- Monitor for crashes and unusual POST requests.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- snac2 project repository codeberg.org
- snac2 release 2.93 codeberg.org
- snac2 fix commit ec2c5c2 codeberg.org
- VulnCheck advisory www.vulncheck.com
- Researcher write-up (nullenvk) nullenvk.pl
- Public proof of concept (gist) gist.github.com
- Ubuntu CVE record ubuntu.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 02:04.
Original description (NVD)
snac2 before 2.93 contains a heap-based buffer overflow vulnerability in _xs_json_load_lexer() that allows unauthenticated remote attackers to corrupt heap memory by sending JSON strings containing a \u0000 escape. Attackers can send a single crafted application/activity+json POST to activitypub_post_handler(), which parses it before signature checks, overflowing heap allocations and crashing the server.
NVD references (7)
- https://codeberg.org/grunfink/snac2
- https://codeberg.org/grunfink/snac2/commit/ec2c5c2046e0381bc942ec5d0d05ec861fe377e7
- https://codeberg.org/grunfink/snac2/releases/tag/2.93
- https://codeberg.org/grunfink/snac2/src/tag/2.92/xs_json.h#L283-L285
- https://gist.github.com/nullenvk/2bf288e2d34cb3d4b7143e61dbf7d90b
- https://nullenvk.pl/posts/02-snac2-json
- https://www.vulncheck.com/advisories/snac2-before-2.93-heap-based-buffer-overflow-via-json-parser-xs-json-loa…
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
