Source: Security research advisory published October 29, 2026, by Mark B, titled 'SMS of Death: zero-click Android telephony DoS'.

The vulnerability originates in WapPushOverSms.decodeWapPdu(), where the parser reads a WSP header length as a variable-length unsigned integer (uintvar) returning a 64-bit long. The code casts this value to a signed 32-bit integer without bounds checking before allocating memory. When supplied with a crafted 5-byte sequence of 0x88 0x80 0x80 0x80 0x00, the parser decodes 0x80000000, which evaluates to -2,147,483,648 upon casting. Attempting to allocate an array of negative length immediately throws a fatal NegativeArraySizeException on the telephony main thread.

Because com.android.phone manages all cellular modem state, its immediate death tears down ongoing calls with DisconnectCause CS_DEATH and induces 1 to 2 seconds of total cellular blackout while the process restarts. Crucially, the inbound packet is handled entirely within background telephony services without generating notifications or logging records in user-visible messaging applications, leaving victims unaware of the attack source.

Persistent denial of service emerges from carrier delivery protocols. When the telephony stack crashes mid-parse, the carrier never receives an SMS delivery acknowledgement and re-transmits the payload repeatedly. Concurrently, Android stores the unfinished message part in content://sms/raw. On subsequent system boots, the subsystem attempts to parse the stored entry, crashing com.android.phone in a cycle that prompts RescueParty to trigger recovery mode within 90 seconds.