xchglabs
// xchglabs · research
Research
Coordinated disclosure, embargo-honest.
Every entry below is a real bug we've reported to a real vendor. Technical deep-dives are published after the patch ships and the embargo window elapses; we don't publish PoCs or addresses for unfixed bugs.
// published
Patched and public.
Coordinated-disclosure writeups for vulnerabilities that have shipped fixes upstream. Full technical detail, PoCs, methodology.
-
lwIP audit series, part 1: SMTP client server-driven AUTH-line overflow into
tx_bufFirst writeup of a thirteen-bug audit against lwIP 2.2.1.
smtp_prepare_auth_or_mail()copies the byte distance between the literalAUTHtoken and the next\r\nstraight into the 255-bytetx_bufwith no clamp againstSMTP_TX_BUF_LEN. Any SMTP server the lwIP client connects to — malicious or MITM'd — can drive a copy of up to ~64 KiB into a 256-byte allocation, plus a one-byte OOB NUL at the returned length. PoC and one-line clamp patch attached; part 1 is fixed via Savannah #68313. The remaining twelve findings have been reported to the lwIP maintainers and we're working with them on patches.part 1 published 2026-05-16
-
A KVM dirty-ring OOB that the allocator quietly defuses
A u64 wraparound in
kvm_reset_dirty_gfn()lets a VMM drive a negative index into the per-memslot reverse-map array — an OOB read with a conditional OOB write below it. The rmap array lives in vmalloc, though, so the OOB lands inside the preceding guard page and faults before any controlled value is consumed. A deterministic host-kernel DoS, not the LPE primitive it first looks like. Fix applied upstream by Paolo Bonzini on 2026-05-12 (Cc: stable, fixes 5.10's original dirty-ring patch). Writeup covers the half-step between those two readings and why the guard page closes the door cleanly.published 2026-05-16
-
Burning down the house: five CVEs in dnsmasq
A pre-auth remote heap overflow (CVE-2026-2291) reachable from a single malicious DNS response, two DNSSEC parser bugs in NSEC and RRSIG handling, a DHCPv6 helper local-root via oversized CLID hex-encoding, and an EDNS Client Subnet validation bypass that turned the cross-check into dead code. xchglabs credited with five of the six CVEs assigned. Disclosed via VU#471747.
published 2026-05-11
// in flight
Embargoed — disclosure pending.
Research from our Pwn2Own Berlin 2026 cohort. Public writeups release after vendor patches ship and embargoes elapse.
We do not publish PoCs, payloads, addresses, or vulnerability-class detail for unfixed bugs. Full public writeups are released after the vendor ships a patch and the embargo window has elapsed.