PJSIP is a free and open source multimedia communication library written in C. Versions 2.16 and below have a Heap-based Buffer Overflowvulnerability in the DNS parser's name length handler. Thisimpacts applications using PJSIP's built-in DNS resolver, such as those configured with pjsua_config.nameserver or UaConfig.nameserver in PJSUA/PJSUA2. It does not affect users who rely on the OS resolver (e.g., getaddrinfo()) by not configuring a nameserver, or those using an external resolver via pjsip_resolver_set_ext_resolver(). This issue is fixed in version 2.17. For users unable to upgrade, a workaround is to disable DNS resolution in the PJSIP config (by setting nameserver_count to zero) or to use an external resolver implementation instead.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
This repository is a small standalone exploit PoC for CVE-2026-32945, a remote denial-of-service issue in pjproject/PJSIP's DNS parser. The repo contains only three files: a GPL license, a README describing the vulnerability and usage, and a single Python script `poc.py` that implements the exploit. There is no framework dependency and no auxiliary payload staging; the exploit is self-contained. The core capability is a rogue UDP DNS server that listens on a configurable address and port (default `0.0.0.0:5353`) and responds to any incoming DNS query with a fixed 20-byte malformed DNS response. The response is crafted so that the final byte is `0xC0`, which indicates the start of a DNS compression pointer, but the required second byte is missing. According to the README and code comments, vulnerable pjproject versions (`<= 2.16`) call `pj_memcpy(&offset, p, 2)` in `get_name_len()` / `get_name()` after seeing the compression-pointer marker, without first ensuring that two bytes remain in the packet buffer. When the malformed response is parsed, this causes a 1-byte heap out-of-bounds read and typically crashes the application. `poc.py` is the only code file and the clear entry point. It uses Python standard library modules (`argparse`, `socket`, `struct`, `sys`) to: parse CLI options, bind a UDP socket, minimally decode incoming DNS queries for logging, copy the transaction ID from the query into the malicious response, and send the crafted packet back to the requester. The exploit does not attempt code execution, persistence, or post-exploitation; its purpose is to reliably trigger the parser bug and demonstrate remote crashability. Operationally, the victim must be induced or configured to use the attacker's DNS server. The README gives examples such as running `pjsua --nameserver 127.0.0.1:5353 sip:user@target.example`. This makes the attack vector clearly network-based: any affected PJSIP application that performs DNS resolution against an attacker-controlled resolver can be crashed remotely. The exploit is therefore an operational PoC for remote DoS, not merely a detector or documentation-only repository.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
1 sources tracked across advisories and community write-ups. News coverage will land here when it surfaces.
No news coverage yet. Advisories and community discussion only.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.