トップ

中東イスラム世界への扉



中東イスラム世界 社会統合研究会 中東イスラム世界への扉

WhatsApp ハッキングによる「盗聴」と
ジャマール・カショーギ氏暗殺

令和元年(2019) 5月21日
村瀬一志






ジャマール・カショーギ氏
画像はオフィシャルサイトより






WhatsAppのアイコン






iPhoneアプリ開発環境である Xcode






iPhoneアプリのプログラミング中にオーバーフローが発生していることを警告している表示 (動作する前からわかる場合はこのように警告が出る)






オーバーフローさせるプログラム
10億を7乗して y に入れるだけだが、y には入り切らないのでオーバーフローする(こういう場合はpow関数を使うものだが、ここではわかりやすいように単純な掛け算にしている。また、オーバーフローするかどうかはこの場合コンピュータは計算してみないとわからないので、上図とは異なりプログラミングの段階では警告は出ない)






オーバーフローして、y の値が 0 になってしまっている(必ず0になる訳ではなく、負の数になったりすることすらある)






オーバーフローしてもアプリ自体は動くことも多い(画面は iPhoneXR をシミュレートして動作させたもの)






ネットワークのトラフィックを解析するソフトウエア(ここではグーグルと通信していることがわかる)






ネットワークのトラフィックを解析するソフトで、WhatsApp がどこと通信しているかを調べてみた(私の WhatsApp は WhatsAppサーバとしか通信していないようだ)







 著名なサウジ人ジャーナリストであるジャマール・カショーギ氏(Jamal Khashoggi ジャマル・アフマド・カショギ または ジャマール・アフマド・ハーショグジーとも表記される)は、トルコのイスタンブールにあるサウジアラビア総領事館へ婚姻届を提出するためトルコ人の婚約者とでかけ、婚約者を外に待たせて中に入り、殺害された。2018年10月2日のことである。


 総領事館の外で待っていた婚約者は iPhone 経由で彼の持っていた Apple Watch からの音声を聞き、殺害を知ったとされている。一方トルコ当局は総領事館内の音声を盗聴していたため婚約者からの通報を待つまでもなく殺害を知っており、しかも後日その音声を米英独仏そしてサウジアラビアとまで共有したという報道もある。複数の国にシェアしたのならトルコ当局が盗聴していたのは本当なのだろう。サウジアラビアは嘘だと言うかもしれないが、複数国にシェアしているので説得力に乏しいし、米英独仏がそろって口裏を合わせるのは困難と考えられるからだ。また、婚約者が iPhone で殺しの実況中継を聞いたという報道は、実はトルコがサウジアラビア総領事館を盗聴していた事実をカモフラージュするための嘘だという説もある。iPhone と Apple Watch 間の距離がある程度離れていたはずであること、Apple Watch がセルラーモデルだったとの説明もないので私も婚約者が聞いたという話は信憑性が低いとは思っている。(この件、カショーギ氏オフィシャルサイトに問い合わせてみたが返事はなかった。)アメリカもサウジアラビアのムハンマド・ビン・サルマン王子(MbS)の電話のやりとりを盗聴しており、殺害を掴んでいたという報道がある。


 ここで重要なキーワードはずばり「盗聴」だが、ジャマール・カショーギ氏のとの通話をイスラエルのソフトウエア会社 NSO Group に盗聴されていたとしてして2018年2月に英国でOmar Abdulaziz 氏らが裁判を起こしている。そして2019年5月、WhatsApp というアプリをハッキングして盗聴できる可能性についての報道いくつか出てきた。しかもずばりイスラエル NSO Group 製ソフトウエアを仕込むものだという。ターゲットに電話をかけるだけで、電話に応答してもらう必要もなく、スパイウエア(盗聴ソフト)を注入することができるとも報道されている。イスラエルとサウジアラビアは相容れない仲だったはずなのに、ここでも接近し、カショーギ氏暗殺にも協力していたということなのだろうか。WhatsApp は日本ではあまり馴染みがないが、メッセージングや音声通話のアプリとして海外ではこれはよく使われている。私自身はどういうめぐり合わせかトルコ人とインド人の知人とは以前からこれで通信している。


 今報道されている盗聴方法は WhatsApp に内在するバッファ・オーバーフローという脆弱性を突いたものである。脆弱性の存在自体は WhatsApp を買収したFacebook がオフィシャルに認め公表している。これは脆弱性データベースにもCVE-2019-3568として登録されている。ただし詳細は "AWAITING ANALYSIS" 状態だ。脆弱性は確かにあるが、これを悪用してどの程度のことができるかはまだ分析待ちである。つまり、電話を相手にかけるだけでスパイを行うためのソフトウエアを相手のスマートフォンに注入できるという報道は、バッファ・オーバーフローという手法でよくなされる攻撃を本件に当てはめてみるとどうなるかを想像して書いているだけで、再現してみた訳ではない可能性もある。


 ではバッファ・オーバーフローとはどのような攻撃か。技術論はめんどくさいと感じられた方は、普通の電卓に規定以上の桁数の数を入れて動かなくなった状態を想像してみていただきたい。画面に E あるいは EEEEEE などと表示され、ACキーを押さない限り何を押しても動かなくなってしまうだろう。想定外のサイズのデータを送りつけるだけで相手を狂わせることができる場合がある、という理解はしていただけると思う。電卓はACボタンで復旧するが、アプリの場合はどうなるだろう。ざっくりとだが、答えは「わからない」である。プログラミング言語の仕様としてこうしようという統一ルールはないし、そもそも狂わされた場合にはこうしよう、と決められるのならそれは狂わされたとは言わない...というのは言葉遊びではあるが、現実的に多種多様なハードウエア、OS、処理系が混在するなか、ルールなど作りようがない。


 どのような攻撃なのかさらに話を進めよう。まずアプリが想定しているサイズ以上のデータを送りつけてやる。すると想定以上のサイズを切り捨てる等の前処理をしていないソフト(こういうソフトウエアに脆弱性があると言う)はそのデータをそのままプログラムに取り込んでしまう。想定以上のデータはどこへ行くかといえば、そのデータを格納する場所の隣の領域を侵食する。隣の領域を侵食させるとともに、送りつけるデータの中に悪意のあるプログラムを仕込んでおく。さらに侵食してプログラムの動作の順序が書いてある部分を書き換え、次に動作するのはそうして仕込んだプログラムであるとしてしまう。こうすれば任意のプログラムを送りつけて動作させることができる、というのがざっくりした仕組みだ。


 送りつけるデータは画像などでもよい。例えば 動画プレーヤー RealNetworks RealPlayer は動画ファイルの読み込みでこの脆弱性があったし、マイクロソフトのウインドウズのヘルプシステムは画像の読み込みでこの問題があった。電話はどうなのかとお考えの方もおられると思うが、アプリによる音声の電話もテキストによるメールなどと同じデジタル化されたデータ通信なので、結局は01の数値を送受信しているだけであって、画像、音声、動画、テキストも結局は同じである。すべてを数値化しているからこそ「計算機」で通話ができ写真や動画が撮れるわけだ。そして実際の通信においてはデータを細切れに刻んで「パケット」という単位で通信する。


 さて今回の WhatsApp の場合、SRTCP というパケットの処理において脆弱性があり、SRTCP パケットを特定の形に作って流し込んでやるとバッファオーバーフローが発生する。 SRTCP とは特に音声通信のように品質よりもリアルタイム性が問われる通信においてデータのやりとりを制御するためのものだ。だから WhatsApp で音声の電話をかけることによりハッキングできるということになるし、相手が電話を取る必要はないというのもありうると思う。(逆に言えば通常の使用では、問題となる形式の SRTCP パケットが生成されることはなく、バッファ・オーバーフローは発生しないと考えられる。)


 理論的な可能性は見えたところで現実的にどうかを見たい。バッファ・オーバーフローの脆弱性がある以上、想定外のデータを送りつけて隣を侵食するところまではできるのだろう。想定外のデータの中に悪意のあるソフトウエアを入れておくことができたとしても、次に実行するのはそこからですよ、とターゲットのマシンを騙すためには、プログラムの次の実行順序がどこに書いてあるのかがわからねばならず、そこへうまいこと侵食させていかなくてはならない。さらにプログラムの次の実行はここから、と指定するためには、侵入させたプログラムがどこに配置されたという情報も必要だ。果たしてそれが現実的に可能か。さらに、WhatsApp はエンドツーエンド、つまり WhatsApp 同士がデータを暗号化して送受信しているので、アプリからネットへ出ていくデータを途中で横から盗聴したところで通信内容は不明だと思うのだがどうだろうか。 WhatsApp 自体を乗っ取るソフトウエアを仕込めば可能性はあるが、そもそもバッファオーバーフローの原理からして難しいように思える。


 iPhone の場合さらに2つの関門がある。一つは、AppStore 経由でインストールしたアプリでないと動作しないようになっていることだ。自分で iPhone アプリを開発し、USBケーブルで自分の iPhone にアプリを入れることはもちろん可能だ。しかししばらくすると動かなくなる。これはやってみればすぐわかる。そういう仕組があるなかで、不正に仕込んだアプリが動くかどうか。
 もう一つは サンドボックス(sandbox) だ。これは直訳すれば「砂箱」「砂場」だが、各アプリに専用の独占的排他的な領域を割り当て、お互いに独立して動くようにしている仕組みだ。各アプリは サンドボックス という枠の外には出られないようになっているので、悪意のある動作をしても他のアプリは影響を受けないし、システムも影響を受けない。つまり他のアプリのデータを盗み取ろうとか暗号化してしまおうということは不可能である。だからアップル社は iPhone にウイルスは存在しえないし、アンチウイルスソフト(ワクチンソフト)は不要と断言している。さらに言えば、そもそもアンチウイルスソフトは他のソフトやその挙動を監視するものであるが、これはまさにサンドボックスの外に出ようとする挙動そのものであり、iPhoneでは許されない。つまり iPhone にアンチウイルスソフトは不要どころか動作するはずがないということになる。本題に戻ると、もしも盗聴アプリを仕込むことができたとしても、盗聴できるのは同じサンドボックス内にいる WhatsApp だけということになるだろう。


 対策としてはアプリのアップデートを行うことになるが、対象となるバージョンは Facebook に記載がある。ちなみに私が使っているのは iPhone版で ver2.19.50。 v2.19.51以前は脆弱性があるとのことだし、すでにアップデートがあるはずなのだが、ちっともアップデートされない。そもそも WhatsApp サーバで SRTCP のうちオーバーフローを起こすものをフィルタリングしてくれればよいようにも思うがどうだろうか。


 さて最後に、もしかして私も盗聴されているとしたら面白いなと思って自分で調査してみた。WhatsApp を起動し誰かと通信している状態でネットワークを流れるパケットを分析してみる。調査結果の画面キャプチャはこのページの左にあるが、調べた範囲では WhatsApp サーバ(mmx-ds.cdn.whatsapp.net / whatsapp-cdn-shv-01-nrt1.fbcdn.net)としか通信していなかった。イスラエルのどこかにでも出ていくパケットがあったらエキサイトしたのだが! もし盗聴していたとしても盗聴データを自分のサーバに直接送る間抜けなスパイはいないとは思うが、WhatsApp サーバ以外の身に覚えのないサーバに向けて出ていくパケットがあれば、盗聴されているのかもしれない。WhatsApp は使っていないにしても、ご自身が盗聴されているのではないかとご心配な方は調査してみるとよいかもしれない。在外公館や海外にある日本企業の通信パケットは特に監視しておいたほうがよいように思う。2013年1月16日、日本人も10人犠牲になったアルジェリアのイナメナスにある天然ガス精製プラントで発生した人質事件も、内部からの情報があったればこその事件だった。砂漠のど真ん中で高いフェンスに囲まれた施設をいきなり襲撃するのはさすがに難しいが、居住区から移動のためバスで出てきたところをうまく狙うことが出来たからこそ、まず人質を取ることができた。内通者がいなければ襲撃はされてもそれほど多数の犠牲者は出なかったかもしれないし、そもそも襲撃してこなかったかもしれない。内部情報が漏らされていないか、日常的に調査しておくべき理由は十分にある。





お問い合わせ   (C)中東イスラム世界 社会統合研究会