セキュリティウィーク39:XcodeGhost、D-Link証明書の漏洩、iOS 9のバグに100万ドル

2015年10月16日

今週のセキュリティウィークは、情報セキュリティとはまったく関係のないニュースから始めようと思います。フォルクスワーゲンのディーゼル車が、試験時よりもはるかに大量の汚染物質を図らずも排出していました。

全容が明らかになるまでは、この程度のコメントにとどめておき、一方的に判断を下すのは避けることとしましょう。この事件は、現代社会においてソフトウェアがいかに重要な役割を果たしているかを物語っています。コードをちょっといじっただけで、誰にも気付かれずに、重要な機能を変更できることがわかったのですから。

Wired(英語記事)によると、排出レベルの高さを隠すのはごく簡単でした。試験場での検査がどのように行われるか、ご存知ですか?路上走行を再現する装置の上に自動車を載せ、アクセルを踏み、タイヤを回転させて、排出された物質を測定します。

試験場での検査と実際の走行の違いは、ハンドルが操作されない点です。つまり、誰もハンドルを操作していなければ、法定検査用の台に載っているという条件でプログラムを作成すればいいのです。これは偶然発見されたのかもしれません。私はそうだと思っています。

繰り返しになりますが、この事件の全容は解明されていません。なので、排気ガスのデータの食い違いは意図的なもので、責任は自動車メーカー(または、コードの作成を担当した組織)にあるとも、意図的なものではないとも考えられます。間違えた可能性は?もちろん、あります。Threatpost.com(英語)から厳選した今回のセキュリティウィークでは、いろいろなコードの誤りと、それをさまざまな目的(金儲けを含む)に使う方法を取り上げます。バックナンバーは、こちらでご覧になれます。

誤って自社のデジタル証明書を公開してしまったD-Link

ニュース(英語)。オランダのWebサイト、Tweakers.netに公開された詳細な調査結果(元はオランダ語。ありがたいことに、Google翻訳で英語になっています)。

想像してみましょう。あなたは、ルーターから監視カメラまで、さまざまなネットワーク機器を製造する会社の一員です。こういった機器には、ファームウェア、ドライバー、ソフトウェア、ファームウェアのアップデート用ソフトウェア、ドライバーのアップデート用ソフトウェアなどが付属しています。これらのファイルは非公開のサーバー上にある「Workflow」といったフォルダーに保存してあり、スケジュールに従ってアップデートされ、配布され、アップデートサーバーにアップロードされます。その後、アップデートのフラグが設定され、ようやくがユーザーの手にアップデートが渡ります。流れるような工程じゃありませんか?

言うまでもなく、ハードウェアのインベントリ全体を手作業で管理などできません。これはスクリプトの仕事です。新しいコードを受け取ったらバッチファイル(Shellスクリプトでも、Pythonでも何でもOK)を実行する、コードが所定のフォルダーに配布される、すべてがアーカイブされる。これで一件落着です。

さて、エンジニアのジャックは、このスクリプトを大幅に改良することに決めました。いくつかの事例でテストをしたところ、非常に満足のいく結果を得られました。ところが、ジャックはバグを作ってしまいました。正しいアップデートファイルやフォルダーを選択するためのコード、そのたった1行のコードで、ダッシュを入れなかったか、カッコを閉じ忘れたかしたのです…見よ、汝の大切なデータは公に流出し、無数のユーザーに次々とメールで送られている。

もちろん、私の見解が100%正しいとは言いません。おそらく違っていると思います。実際に起きたことを説明しましょう。ある注意深い人がD-Link製カメラ用のファームウェアアップデートをダウンロードしたところ、アーカイブ内にD-Linkのソフトウェアの秘密鍵が含まれていることに気付きました。そのアーカイブには多数の証明書が入っていて、期限切れのものもあれば、9月3日(割と最近です)に期限を迎えたものもありました。

ところが、この秘密鍵は期限を迎える9月3日の6か月前から公開状態にありました。その間、ソフトウェア(もちろん、マルウェアも含む)の署名に使用された可能性があります。これは明らかに恥ずべき、危険な失敗でした。今は512個の数字から構成される行1つで何でも表せる時代です。それは無数のコンピュータ-を感染させるために必要な鍵であったり、大量の仮想通貨であったり、あるいは、機密情報へのアクセスコードかもしれません。

しかし、この512バイトはハードドライブの大海にある小さな砂の粒なので、気付かれないまま姿を消す可能性もあります。この失敗に誰も気付きませんように。この願いは結構叶うものですが、今回のケースのように、たまに気付く人もいます。流出した鍵を悪用するマルウェアを探そうとしていたわけではないのに。

XcodeGhost:AppleのIDEのブックマーク

ニュース(英語)。Palo Altoの調査(英語)。影響を受けるアプリの一覧。Appleの公式発表(英語)。

想像してみてください。あなたは中国語版iOSアプリの開発者です。他の開発者と特に違う点はありません。開発者用キットやツールは万国共通ですから。では、ここに地域的な特性を少し加えてみましょうか。あなたは新品のMacを購入し、Xcodeフレームワークをインストールして、コーディングを開始しました。

何もかも順調でした。ある1点を除いては。Appleの公式Webサイトから無料のXcodeフレームワークをダウンロードするのですが、速度が亀レベルなのです。さすがはグレートファイアウォール。非公式のWebサイトからダウンロードした方がずっと早くて簡単です。どっちだって同じでしょう?無料なんですから。

security-week-39-featured

すると、思いもよらないことに、いくつかのアプリ(有名なアプリと、それほどでもないアプリ)に悪意あるコードが挿入され、デバイスのデータがリモートのC&Cサーバーに送信されるようになってしまいました。これはまだマシなケースで、最悪の場合だとiOSの脆弱性を悪用し、ユーザーの認証情報に不正アクセスするコマンドをC&Cサーバーから受信するようになります。

Xcodeのローカルバージョンに悪意ある埋め込みが存在し、いくつかのリリース版が影響を受けたことが判明しました。つまり、何者かがこうした埋め込みを故意に行ったのです。話はさらに悪い方へ。WeChat IMやAngry Birdsのローカルバージョンなどの人気アプリに悪意あるコードが埋め込まれていたことではありません。悪意あるコードがApp Storeの規制をすり抜けることができたことが問題なのです。

もちろん、感染したアプリは今のところすべて削除され、埋め込み自体はC&C(ブロックされたものも含め)のドメイン名から容易に探し出せます。しかし、予備知識がないと、埋め込みを探すのはかなり困難です。というのも、99.9%のアプリが使用しているAppleの標準ライブラリ内に巧みに隠されていたためです。

興味深い話があります。スノーデン(Snowden)氏の暴露のおかげで手に入った機密データを公開するメディア『The Intercept』は、XcodeGhostがApple製デバイスへの侵入に使用する方法と、政府の秘密計画に書かれている方法が一致していると報じています(英語記事)。記者はこの情報をかなり前、今年の3月(英語記事)に公開したことを自慢しています。

さて、自慢には自慢で返しましょう。最初に気付いたのはKaspersky Labです。しかも、スノーデン氏の件より前の2009年に。たとえば、DelphiのIDEに感染し、コンパイル済みのアプリに悪意あるコードを挿入するマルウェア(英語記事)を発見しました。当たり前すぎることですが、改めて。問題に気付いた時点で、簡単に除去できるのですから、開発ツールとマスターバージョンの整合性を取ることです。

さらに、信じられないほど単純なアドバイスを1つ。怪しい場所にあるソフトウェアは絶対にダウンロードしないこと。変な感じがするかもしれませんね、ここまで経験豊富な開発者について話していましたから。ベテラン開発者がこんな間違いを犯すなんて、あり得るのでしょうか?まあ、実際あり得たわけで。

バグのブローカー、iOS 9のバグに100万ドルの報奨金を発表

ニュース(英語)。

さまざまなiOSデバイスの脱獄(ジェイルブレイク)の歴史をまとめた面白いがあります。Androidやデスクトップ用OSはシステム全体に対するコントロールが既定で有効化されているのが一般的なため、簡単に侵入されてしまいますが、Appleのスマートフォンやタブレットの場合(今ではテレビのセットトップボックスやスマートウォッチも)、ユーザー権限は最初から制限されています。

こちらでは著名なベンダーがデバイスを囲い込もう保護しようとしているかと思えば、あちらでは熱心なRoot化推進者がこの保護をすり抜けようとしている。そんな状況が続くこと丸7年、ついに大半のAppleデバイスは脱獄を経験する状況となりました(Apple TV第3世代と、少なくとも当面はApple Watchを除く)。脱獄のタイミングは、だいたい、製品が店頭に並んだ翌日から6か月後のどこか、といったあたりです。

最新のiOS 9は脱獄しているとも、脱獄していないとも言えます。完全に脱獄しているのではないからです。この問題の「面倒を見て」いるのがZerodiumです。Zerodiumは、iOS9へ侵入するエクスプロイトに100万ドルの懸賞金を出すと発表しています。ただし、それには次のような条件があります。

  • リモートのエクスプロイトであること(特別に細工されたWebページにアクセスするか、悪意あるSMSやMMSを読み込むと自動的に実行されること)。
  • 任意のアプリ(Cydiaなど)をサイドロードさせること
  • リブート後も削除されず、動作を続けること
  • 「信頼性があり、人目に付かず、ユーザーの操作を一切必要としない」こと
security-week-39-money

これらの条件を見てみると、ZerodiumがRoot化ファンを喜ばせるためだけに、300万ドル(懸賞金の総額)をばらまこうとしている訳ではないことがわかります。Zerodiumの創設者、シャウキ・ベクラール(Chaouki Bekrar)氏は、もともとはVUPENの創設者でした。VUPENは国家関係者に脆弱性やエクスプロイトを販売する企業でしたが、法的にも道義的にも、情報セキュリティの世界ではうさんくさいグレーゾーン企業です。正義の味方が、悪者の作ったツールを使って悪者を告発するのですから…

VUPENは(少なくとも表向きは)バグの仲介はしていませんでしたが、Zerodiumは初めからこの目的で創設されました。つまり、一獲千金を実現する人もいれば、脆弱性の詳細を明らかにせず、購入したエクスプロイトを使ってデバイスに侵入する人もいるのです(そうでなければ、懸賞金を払う意味がありません)。

しかし、バグのブローカー自身がハッキングされると何が起こるのかは、すでにわかりきっています(英語記事)。Hacking Teamを思い出してください。多数のゼロデイ脆弱性が最終的に公になり、Hacking Teamと中東の一部の国との間で行われた数々の汚い取引が明るみに出ました。これは、まあ、大失態でした。

ここでの教訓は、スマートフォンを脱獄させたい衝動にかられた場合、誰でも脱獄する資格があるということです(もっと正確にいうと、脱獄しない資格があります)。しかし、所有者の同意を得ずに、他人のデバイスを脱獄させるのは良いことではありません。このような可能性を発見した場合は、何としてでもベンダーに開示し、パッチを適用してもらう必要があります。とにかく、大義のためのエクスプロイトとはいえ、それはやはりエクスプロイトなのです。

その他のニュース:

AdobeはFlash Playerの23個の脆弱性にパッチを適用しました(英語記事)。8月にも30個以上のバグを修正しています(英語記事)。

OPMは、今年発生した大規模な情報流出事件について、さらに深刻な調査結果を発表し、560万件を超える米政府職員の指紋データが漏洩(英語記事)したことを明らかにしました。当局のアナリストによると、パスワードが流出したときと同じように、指を取り換えるわけにはいきませんが、指紋が一致することは極めて少なく、流出した情報が何かに利用される可能性はほとんどありません。とはいえ、将来のテクノロジーでどのようなことができるのかは誰にもわかりません。

懐かしのあれこれ:

「PrintScreen」

512バイト(1セクター)を独占する非常に危険なウイルス。読み取り時にフロッピードライブやハードディスクのブートセクターに感染します(インタラプト13h)。古いブートセクターは、フロッピードライブ上の1/0/3アドレス(サイド/トラック/セクター)、あるいはハードドライブ上の3/1/13に書き込みます。このウイルスは、FATセクターまたは保存されているデータの1つを破壊します(ドライブの容量によって異なります)。ハードディスクに感染する時、ブートセクターが0/1/1アドレスに保存されていることを示しています(つまり、このウイルスの作成者の技能レベルが低いことがわかります)。

インタラプト13hも乗っ取ります。ウイルスの出力内容から判断すると、ドライブに感染した場合、(内部カウンターの値に応じて)256分の1の確率でインタラプト5(Print Screen)をコールしますが、ある誤りのため、カウンターの新しい値は保存されません。

infosec-digest-32-book

1992年、ユージン・カスペルスキー著『Computer viruses in MS-DOS』(MS-DOSのコンピューターウイルス)102ページより引用。

注意:この記事は著者の個人的見解を反映したものです。これはKaspersky Labの見解と一致していることも、一致していないこともあります。運次第です。