安全#逆向工程

Android「短信死机」漏洞公开:一条 WAP Push 短信打崩电话进程,约 20 条进重启循环,Android 14–17 已修、12/13 永久暴露

研究员 10 月 29 日披露:一条恶意 WAP Push 短信即可击溃 Android 电话进程、切断紧急呼叫,修复只覆盖 Android 14–17。

一排飞行中的对话气泡冲向一部屏幕碎成几何碎片、顶上悬着重启箭头的智能手机插画,左侧一只气泡带蓝色裂痕

安全研究员 Mark B(X 上的 @sourone)于 10 月 29 日公开了被称为「短信死机」(SMS of Death)的 Android 远程拒绝服务漏洞:一条发往 WAP Push 端口 2948 的数据短信就能让系统电话进程 com.android.phone 崩溃,全程零交互、收件箱里不留痕迹;连发约 20 条可把手机打进重启循环,通话(含紧急呼叫)全部中断。修复已随 2026 年 10 月安全更新覆盖 Android 14–17,而 Android 12 和 13 已停止安全维护、拿不到修复。多家媒体引述该漏洞的编号为 CVE-2026-58882;MITRE 官方 CVE API 与 CVE 项目列表仓库在 11 月 2 日查询均无此编号记录,研究者自己的站点通篇也未提任何编号,所以本稿把它当作「媒体所称编号」而不是已正式分配的编号。

要点

  • 触发路径:畸形 WSP 头长度经 uintvar 解码成 0x80000000,转成有符号 int 为 -2147483648,WapPushOverSms.decodeWapPdu 拿它分配字节数组时抛出未捕获的 NegativeArraySizeException,电话进程随之死亡(smsofdeath.com 技术写作)。
  • 后果:每条消息造成 1–2 秒无服务、掐断进行中的通话;约 20 条可致设备长时间不可用,毒消息滞留 content://sms/raw,每次开机重放,RescueParty 大约每 90 秒就把设备重启进 recovery 模式。
  • 修复边界:修复进入 2026 年 10 月 Android 安全更新,只覆盖 Android 14–17;据 Android Authority 10 月 30 日报道,10 月安全公告里没有列出这个漏洞。

攻击机制

这个洞藏在 telephony 框架处理 WAP Push 的老代码里。WAP Push 是上世纪的功能:运营商把一条普通数据 SMS 指到 2948 端口,WapPushOverSms 负责把它解析成推送内容,这个处理发生在消息进入收件箱之前,所以整个过程对用户不可见——发送方号码不显示,收件箱没有新消息。

具体链条是:WSP 头里的长度字段按 uintvar 编码解码后先放进 long,再未经范围检查直接转成 int、用作字节数组的大小。研究者用五字节序列 88 80 80 80 00 解码出 0x80000000,转成有符号 int 即 -2147483648,数组分配抛出 NegativeArraySizeException。异常发生在 telephony 主线程上且无人捕获,com.android.phone 整个进程被杀,重启期间通话全部掉线,异常类型是 DisconnectCause 的 CS_DEATH。

更麻烦的是消息本身不会消失。崩溃发生时消息还留在待处理入站队列 content://sms/raw 里,每次开机系统重放它、再崩溃一次;Android 的 RescueParty 机制反复触发,大约每 90 秒就把设备重启进 recovery 模式——普通用户到这一步通常只能恢复出厂设置。研究者的测试里,一条测试消息曾让一部手机断续断网长达一周,因为运营商还会重投毒消息。Pixel 9(2026 年 4 月固件)和多款 Samsung Galaxy、A 系列机型上复现率 100%,这段有缺陷的代码随 Android 多个版本发布,最早可追溯到 Android 12(Android Authority 引)。

披露时间线

这份披露的价值一半在漏洞本身,另一半在它照出的流程矛盾。研究者 5 月 5 日经 Android & Devices VRP 上报谷歌;Android 代码记录显示修复提交 6 月 15 日就已写好(commit 735d967,标题「Fix remote DoS in decodeWapPdu」);修复在 10 月安全更新里下发给 Android 14–17;公开写作则等到 10 月 29 日,连同 Apache 2.0 许可的可用 PoC(GitHub 仓库 MarkBlah/smsofdeath,截至 11 月 2 日 417 星)一起发布。

项目内容来源与日期
上报2026-05-05,经 Android & Devices VRPsmsofdeath.com
修复提交2026-06-15,commit 735d967Android 代码记录(Android Authority 引)
更新下发2026-10 安全更新,Android 14–17smsofdeath.com;BleepingComputer
公开披露2026-10-29,附 PoCsmsofdeath.com;GitHub
媒体所称编号CVE-2026-58882;MITRE API 与 cvelistV5 仓库 11-02 查询无记录BleepingComputer;Android Authority

谷歌没有采用研究者建议的边界检查(长度为负或超过 PDU 长度就拒绝),而是把捕获的异常类型放宽到 RuntimeException,并顺手把毒消息从 raw 表里删掉,切断了开机重放。设备只要升到 2026 年 10 月补丁级别就在保护范围内。

各方说法

Android Authority 10 月 30 日的报道给流程矛盾补了关键细节:谷歌曾反复以「非安全问题」为由驳回这份报告,而按其引用的日期推算,修复在报告后近六周(5 月 5 日至 6 月 15 日)就已写好——文章推测是内部沟通断裂或重复报告所致,并称漏洞「apparently slated」(按计划)列入 11 月安全公告。GrapheneOS 的说法可以和厂商时间线对上:它在 7 月的安全预览里就拿到了修复,并称该修复定档 11 月公告。两种说法其实能并存——厂商在公告公开前就能拿到修复,但 10 月公告确实没列这个漏洞,谁的说法准确要等 11 月公告发布才能验证。BleepingComputer 10 月 31 日独立确认了事件主体,并同样指出 10 月公告未列此洞、Android 12/13 拿不到修复;Digital Trends 等媒体的跟进与上述数字一致。截至发稿谷歌没有公开回应,Android Authority 表示谷歌回应后会更新报道。本稿没法核对 Android Authority 全文(页面抓取不完整),「非安全问题」一语转引自其摘要。

编辑判断

这条消息对读者的意义取决于你的设备停在哪个补丁级别。一分钟自检:设置里查 Android 版本和安全更新,2026-10-01 补丁或更高即已修复;停在 12/13 的设备没有任何官方出路:谷歌的安全支持已经到期,修复不会随任何升级到来。此类设备占比不小,而漏洞攻击成本近乎为零:一部普通安卓手机加一个公开 PoC 就能发。

影响的形状也值得说清楚:它不偷数据、不要权限,直接掐的是通话和短信——依赖短信验证码登录、依赖来电通知的人,以及把旧手机留给老人孩子当备用机的家庭,暴露得最直接。紧急呼叫会被中断这一条,在澳大利亚还有制度性后果:研究者指出,ACMA 的紧急呼叫服务条例要求运营商识别无法呼通 000 的手机并停掉其服务,Telstra 称 28 天内未解决就会锁机,也就是说这个漏洞可以把受害者的设备逐出运营商网络。另一个悬而未决的问题:坑已在代码里躺了很多年、PoC 已公开,11 月公告能不能把修复补列进去、Android 12/13 的存量设备由谁兜底,这两件事目前都没有答案。我们 10 月底写过微软 Authenticator 零权限漏洞,那一单的争议在修复与细节公开之间的时间差;这次的异常在于修复写好之后,公告列名反而迟迟未落——流程没跟上的洞,伤害先落地了。设备停在旧版本又想自保的人,社区找到的应急办法是开机后用 ADB 删掉 content://sms/raw 里的毒消息(识别特征 destination_port=134020),由 GitHub 用户 @sakisdog 贡献,需要电脑和一定动手能力; recovery 里的「清除数据」选项要避开,那一步不可逆。