IBM X-Forceが、「Android」のデシリアライゼーション処理に存在する脆弱性を発見した。任意のコード実行と特権昇格を誘発するという。
セキュリティ研究者のOr Peles氏はブログ投稿でこの脆弱性について説明し、55%以上のAndroid端末(「Android 4.3」~「Android 5.1」)と次期「Android M」リリースの最初のプレビュー版がこの脆弱性の影響を受ける、と述べた。
この脆弱性を突くことで、攻撃者は標的の端末で実行中のアプリケーションを置き換えて、データを抽出し、SELinuxポリシーを変更してSELinuxを回避することができる。一部の端末には、悪質なカーネルモジュールをロードすることも可能だ。デモ動画の中で、IBMは実際にFacebookアプリを別のアプリに置き換えた。
「今回発見された脆弱性の原因は、任意のアプリのメモリスペースでのオブジェクトデシリアライゼーション中に攻撃者がポインタ値を制御できることにある。ポインタ値はランタイムのガベージコレクタが呼び出すネイティブアプリコードによって使用される」(Peles氏)
Peles氏とそのチームは、システム全体で利用可能な「OpenSSLX509Certificate」という脆弱なクラスを発見した後、任意のコードを実行することができる概念実証を構築した。
Peles氏とIBM Securityの同僚であるRoee Hay氏は、「これは非対称な戦いである。なぜなら、デフォルトのAndroidクラスローダーで利用可能な脆弱なクラスを1つ悪用するだけで、すべてのアプリ(または1つの高度な特権を持つサービス)を攻撃できるからだ」と書いている。
同チームは、この脆弱性がAndroidや「Google Play Services」だけでなく、複数のサードパーティー製ソフトウェア開発キット(SDK)にも存在することを発見した。それらのSDKの共通点は、SWIGを使用していることだ。
Peles氏によると、Googleは「Android 4.4」「Android 5.0」「Android 5.1」「Android M」でこの問題を修復済みで、サードパーティーのSDKはtransient修飾子の追加、コードの修正によるSWIGの使用停止、または、シリアライゼーションプロセスを使用するメソッドのオーバーライドによって、この脆弱性を修復済みだという。
「生成された脆弱なコードは、開発者によって与えられた稚拙な構成が原因なので、われわれはSWIGが脆弱だとは考えていない。これは、バッファオーバーフローをコンパイラのせいにするようなものだ。しかし、最も有能な開発者でも、自分が誤ってシリアライズ可能なクラスを拡張してしまったことを見逃すことはある」(Peles氏)
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」
住環境に求められる「安心、安全、快適」
を可視化するための“ものさし”とは?