見覚えのない番号から届く1通のSMS。ふだんなら、開いて中身を確かめてから対応を決める。ところがAndroidには、その1通を受け取っただけで、開かなくても電話機能そのものが落ちる経路があった。通話中なら切れ、緊急通報でも例外ではない。Googleは2026年11月のセキュリティ更新でこの欠陥を直したと発表した。何が起きていて、どこまで直り、自分のスマホで何を確認すればいいのかを順に追う。
通話が止まる欠陥は実在した
本当にあった。Googleが2026年11月2日に公開したAndroid Security Bulletinは、CVE-2026-58882という番号でこの欠陥を扱っている。深刻度は最上位の「Critical」で、種別はサービス拒否(DoS)だ。対象はAndroid 14・15・16・16-QPR2・17で、2026-11-01以降のセキュリティパッチレベルで修正済みとされている。
この欠陥は、研究者のあいだでは「SMS of Death」と呼ばれている。発見者のMark B氏が技術公開ページで、Googleへは2026年5月5日に報告したと説明している。報告から半年ほど経って、ようやく公式ブレティンに載った形だ。
ではこの半年のあいだ、SMSを受信するという普段どおりの操作が、なぜ電話機能全体を巻き込んで落とす経路になっていたのか。
受信だけで電話が落ちる仕組み
ふだん目にするSMSとは別に、スマホの設定を遠隔で書き換えるための、画面に表示されない制御用メッセージがある。これを「WAP Push」と呼ぶ。SMS of Deathは、このWAP Pushを処理する部品の不具合だ。
長さを表す数値は、本来もっと大きな型で受け取ったあと、扱いやすい型へ変換されることがある。この変換で元の数値が大きすぎると、符号が反転して負の値になることがある。AOSPに公開されているソースコードによると、WapPushOverSms.decodeWapPdu()という処理の217行目がまさにこれだった。メッセージのヘッダー長を読み取り、範囲を確かめないままint型の変数へ変換している。この変換結果は244行目で、そのまま配列の大きさとして使われる。
細工したメッセージを送ると、この変換結果を負の数にできる。負の数を配列の大きさに指定するとNegativeArraySizeExceptionという例外が発生する。この例外は電話機能を担うメインの処理では受け止められず、com.android.phoneというプロセスごと落ちてしまう。発見者のテストでは、Pixel 9と複数のSamsung Galaxy機種で再現率100%だったという(smsofdeath.comより)。
長さを確かめる1行が抜けていただけで、SMSの受信処理から電話アプリ全体を落とせる経路になっていた。自分が一番驚いたのはここで、攻撃の材料がふだん意識することのないWAP Pushという地味な部品だった点だ。では、受け取った端末には、どれくらいの影響が残るのか。
SMS1通が電話を1週間止める
このメッセージは受信箱に表示されず、送った番号も利用者には見えない。通知すら出ないまま、電話機能だけが落ちる。
厄介なのはここからだ。電話機能のプロセスは1〜2秒で再起動するが、壊れたメッセージは未確認のまま保留キューに残る。キャリア側が「届いていない」と判断して再送を続ける限り、再起動のたびに同じクラッシュが繰り返される。発見者のテストでは、1通のメッセージが原因で最大1週間ほど断続的に電話が使えなくなった例があったという(smsofdeath.comより)。繰り返しの回数が増えると、Android自身の異常検知の仕組み(RescueParty)が働き、約90秒おきにリカバリーモードへ入ってしまうこともある。
1通のSMSが、開かれることも、通知されることもないまま、スマホを長期間使いにくくする側に回る。自分には、ここまでの深刻さこそが「Critical」判定の理由に見える。
Googleの修正と対象機種
発見者は、変換する前にヘッダー長の範囲を確かめる修正を提案していた。だがGoogleが実際に取り込んだコミットを見ると、採用した方式は違う。デコード中に起きる実行時エラーを広く捕捉してクラッシュの連鎖を止め、原因になった壊れたメッセージを保留キューから削除する、という方式だ。自分には、原因そのものを塞ぐというより、症状が起きても落ちないようにする対処に見える。この判断についてGoogleは理由を公表していない。
どちらの方式でも、利用者が更新すればクラッシュしなくなるという結果は変わらない。問題は、どの機種がその修正を受け取れるかだ。
| 項目 | 内容 |
|---|---|
| 対象AOSPバージョン | Android 14・15・16・16-QPR2・17 |
| 修正済みのパッチレベル | 2026-11-01以降 |
| 2026年10月のブレティンでの記載 | なし(10月5日公開・10月8日更新のいずれにも未掲載) |
Android 12・13は、この11月のブレティンの対象バージョン一覧には含まれていない。発見者はAndroid 12の端末でも再起動ループが起きたと報告している。だが、Googleがこれらの旧バージョン向けに個別の修正を配信するかどうかは、今回確認できなかった。該当する端末を使っている場合は、端末メーカーの案内を確認したい。
なお、一部の海外メディアはこの修正が「2026年10月のアップデートに含まれていた」と報じている。だがGoogleの10月版ブレティンを確認した限りCVE-2026-58882への言及はなく、公式に掲載されたのは11月版が最初だった。本文はこの公式ブレティンの日付を基準にしている。
直った範囲と直っていない範囲が分かったところで、自分の端末では何を確認すればいいのか。
今すぐ確認すること
- 「設定」からデバイス情報を開き、Androidのセキュリティ更新(セキュリティパッチレベル)の日付を確認する
- 日付が2026-11-01より前なら、端末メーカーやキャリアからの更新を確認してインストールする
- 更新の提供がまだ無い場合は、端末メーカーのサポートへ状況を問い合わせる。特にAndroid 12・13の端末は、個別の対応状況を確認する必要がある
- 更新後に再起動を求められたら再起動し、「設定」で更新後のパッチレベルが反映されているか確かめる
まとめ
Androidには、WAP Push形式のSMSを1通受け取るだけで、通知も表示されないまま電話機能全体を落とせる欠陥(CVE-2026-58882)があった。原因は、メッセージのヘッダー長をint型へ変換する際に範囲を確かめていなかったことだ。キャリアによる再送が重なると、最大1週間ほど断続的に電話が使えなくなることもあった。
Googleは2026年11月のAndroid Security Bulletinでこの欠陥をCriticalと認定した。例外処理を広げて壊れたメッセージを破棄する形で修正しており、対象はAndroid 14・15・16・16-QPR2・17になる。セキュリティパッチレベル2026-11-01以降であれば防げる状態だ。まずは自分の端末の設定でパッチレベルの日付を確認するところから始めたい。
コメント
気づきや感想をどうぞ記事への補足や、読んで考えたことをお寄せください。個人情報や、他の人を傷つける内容の投稿はお控えください。
投稿にはGoogleログインが必要です。
Googleでログイン投稿にはGoogleアカウントの表示名が公開されます。メールアドレスは取得・公開しません。
コメントを読み込んでいます…