Androidのドライブ・バイ・ダウンロード攻撃を考える

先日の、Android向けドライブ・バイ・ダウンロード攻撃について、もう少し調べてみました。

侵入経路

分析済みなのは、Hacking Teamの攻撃コードがベースということ。 しかしHacking Teamの流出事件は知っていたものの、特に調べてはいませんでした。

検索上位はなぜか中国語が多いようです。上位にあった、Tencent(QQ、WeChatのところ)のセキュリティ研究者による分析は、中国語が分からなくても、そこそこ意味がわかります。

Hacking Team Android Browserコード分析 http://drops.wooyun.org/mobile/7030

使っている脆弱性はCVE-2011-1202、CVE-2012-2825、CVE-2012-2871ですね。 Chromeは当然対応済みですが、Android Browser(Androidの、いわゆる「ブラウザ」)は対応してないようです。

Androidは4.4から基本ブラウザもChromeベースになったので、「Chromeアプリ」さえアップデートしていれば、この脆弱性の影響は受けないはずですが、ニュース記事を見る限り感染マシンに4.4の機種があります。何か別の手段も使っているのか、それとも想定外の穴(脆弱なブラウザを埋め込んだ何かを実行したとか……)があったのか。

とりあえず各種記事では、ブラウザの対策が書かれています。 おそらくChromeなどでアップデートしていれば回避できるとして、Android 4.4より前の機種について問題なのは、アプリでしょう。

WebViewアプリ

「アプリ」の一部は、単にWebViewを表示して所定のURLを開くだけ、などのタイプがあります。そこで表示される広告に、こういった悪性コードが含まれていればAndroid Browserで実行されます。

ハイブリッドアプリ

Cordovaなど、HTMLアプリをベースとしつつ、内部JavaScriptからOSの機能を実行するタイプのアプリの一部も、表示部分(HTMLアプリ部分)はWebViewです(※Crosswalkのような独自ブラウザを同梱する場合もあります)。 WebViewだった場合(あるいは、独自ブラウザでも脆弱性が残った古いものを使った場合?)には、やはり脆弱性がそのままなので、侵入されます。

ネイティブアプリ

気になるのは広告ですが、試しに調べてみたところでは、多くはテキストか画像のようですね。

(例)nend.netの広告規定 https://nend.net/faq/info/15

しかし、こんな例も。

Android広告の概念 - アマゾン アプリ 開発者ポータル https://developer.amazon.com/public/ja/apis/earn/mobile-ads/android/android-ad-concepts

静的バナーとは、通常はアプリ内ブラウザー、ネイティブブラウザー、またはAndroidインテントを開くHTMLウェブビューです。

ここに悪質なJavaScriptが挿入されたら侵入される可能性は十分にあるでしょう。

率直な感想

今回重要なのは、Android脆弱性を使ってdrive-by-download攻撃が可能なことが「実証」されたことです。今回は、おそらく4.4以上の機種では影響は小さいはずですが、他の脆弱性を組み合わせることで、もっと新しいバージョンでもWindows向けと同様の攻撃が可能になったと示されました。今後、クラッカーによる技術開発が進む可能性は十分あると思います。

ここで痛いのは、(以前から多数の指摘がありますが)統一的な「Android Update」がないこと。多くのAndroid機は、脆弱性修正パッチが出るとしても遅く、出なくなっている機種も多数あります。別にOSのアップグレードをしろとは言いませんが、脆弱性に対応できないのは重大な問題です。