Quick Answer — In September 2022, WhatsApp shipped an emergency fix for CVE-2022-36934, a critical-severity (CVSS 9.8) integer-overflow leading to remote code execution in the video-call setup path. The terrifying property: successful exploitation could execute code during the call’s ring phase — before the recipient answered. No click, no file open, no link tap: receiving the call request was the attack surface. No exploitation in the wild was demonstrated, and the patch was already out when disclosed. The lesson: memory-unsafe parsing of untrusted streams is still the highest-yield bug class on earth, and a zero-interaction call surface is the most dangerous place to host it. (Note: this article covers a security event; see web vulnerability primers for background.)
What happened
Per WhatsApp’s own security advisory and Meta’s bug-bounty disclosure flow:
- The bug. An integer overflow in WhatsApp’s video-call processing — the code that handles the setup parameters of an incoming video call mis-sized a buffer or index, and classic memory corruption followed: heap metadata corruption, control of execution.
- The trigger. A maliciously crafted video call, engineered so that merely ringing the target executed the payload. The victim’s participation was not required. This is the “zero-interaction” tier of severity that is reserved for memory-corruption bugs in always-on parsers.
- The discovery and fix. Reported privately through WhatsApp’s bug-bounty program (Meta’s internal security engineering and an external researcher are credited in the era’s disclosure records). The fix shipped in WhatsApp builds released in September 2022; the CVE followed as CVE-2022-36934 at CVSS 9.8.
- The companion bug. The same advisory cycle covered a second overflow (CVE-2022-27492, in a different module per contemporaneous advisories) patched in the same release wave — a reminder that parser bugs cluster.
Impact and numbers
| Metric | Value |
|---|---|
| CVE | CVE-2022-36934 |
| Severity | Critical — CVSS 9.8 |
| Bug class | Integer overflow → memory corruption → RCE |
| Affected surface | Video-call setup (pre-answer / ring phase) |
| Interaction required | None beyond receiving the call request |
| Observed exploitation | None publicly demonstrated at disclosure |
| Fix | Shipped in September 2022 WhatsApp releases (Android and iOS) |
Why “before you answer” changes everything
Most social-engineering defenses assume a human decision point: click, open, approve. A ring-phase RCE deletes that decision point. The victim’s phone begins parsing the attacker’s call-setup data the moment the ring starts — the code executes while the UI is still deciding whether to bother you. In defensive terms: the attack surface is the parser, not the person. That is why this bug class (and its siblings in VoIP stacks, image decoders, and message previews) draws immediate nation-state attention when discovered — imagine wget-level reliability, no user, no prompt, no firewall traversal needed beyond the app’s own always-on connection.
Timeline
| Date | Event |
|---|---|
| 2022 (earlier) | Researcher reports overflow via WhatsApp bug-bounty; internal validation |
| 2022-09 | Patched WhatsApp builds roll out to users worldwide |
| 2022-09-26 | Advisory + CVE-2022-36934 (CVSS 9.8) published; companion overflow noted |
| 2022 → 2024 | Cited in industry post-mortems arguing memory-safe languages for messaging stacks |
Why it still matters in 2026
Because the same math still governs: a billion-user messaging app with a C/C++ parsing core has zero square meters of memory-corruption-free territory. The industry response to bugs like CVE-2022-36934 — rewriting parsers in Rust, sandboxing codec and call-setup paths, fuzzing the ring pipeline continuously — is now baseline practice at platform companies. The bug is also a standing argument in the memory-safety debate: Microsoft and Google’s own attribution of ~70% of their critical CVEs to memory-safety issues traces directly through cases like this. When your threat model includes “attacker code executes because someone called you,” the answer is language choice and process isolation, not user training.
The bug, in one diagram
attacker victim's phone
| |
| crafted video-call setup |
|-------------------------->|
| ring starts
| parser reads params
| integer overflows
| buffer/index corrupts
| heap metadata flips
| code execution
| (victim never taps accept)
| |
patch: bounds-checked
parsing in updated builds
Detection and hardening takeaways
- Fuzz every parser that touches untrusted data pre-interaction. Ring-phase call setup, message previews, thumbnail decoders — anything that parses before a human acts is your crown-jewel fuzzing target.
- Prefer memory-safe languages at trust boundaries. Rust/Go/Swift for new parser code; the overflow class simply does not occur in checked arithmetic.
- Isolate the codecs. Run call-setup and media parsing in sandboxed processes with no ambient authority — compromise of a parser should yield a crash report, not a shell.
- Ship patches fast and measure roll-out. An RCE fix is only as good as its install-base; telemetry on version distribution is part of incident response.
- Assume zero-interaction paths exist. Design call and message acceptance so the pre-answer phase trusts nothing, including the phone’s own willingness to render.
Was CVE-2022-36934 exploited in the wild?
Not that was publicly demonstrated or attributed at disclosure time. WhatsApp’s advisory and contemporaneous reporting described the bug as responsibly reported and patched via the bug-bounty flow. The severity rating reflects what the bug could do — and the zero-interaction vector is why defenders treated patch roll-out as urgent regardless of observed abuse.
Why does an integer overflow lead to code execution?
An integer overflow lets a size or index calculation wrap past its maximum — producing a too-small allocation or an out-of-bounds offset. The parser then reads or writes past the end of a buffer, and in languages like C/C++ there is no runtime check to stop it. Heap metadata and function pointers live in exactly that neighborhood. An attacker who controls the input stream controls the arithmetic, and therefore the corruption pattern, and therefore — in the worst cases — the instruction pointer.
Do messaging apps still ship this bug class?
The class, yes; this exact bug, no. Every large messaging platform has since invested in memory-safe rewrites of parsing hot paths, continuous fuzzing farms, and codec sandboxing. But the measured reality — the majority of critical CVEs in major software tracing to memory-safety errors — means the class remains the single most reliable way for a researcher to convert an incoming call into a CVE. The defensive advice is unchanged: keep clients auto-updated, because the patch pipeline is the protection.
Part of the hmmnm.com security-timeline series — one event per month, 2021–2024, indexed here.
