2015年11月6日

セキュリティウィーク42:SHA-1衝突、ルーターの現実のハッキング、Android/セキュリティ/憂鬱

ニュース 脅威

台風の目に入ってしまったら、実際に何が起こっているのか、おそらく理解できないでしょう。渋滞にはまっている最中は、原因がわかりません。事故現場にたどり着き、飛行機の残骸で車線がふさがれているのを見て、ようやく事故だと気付きます。それまでは、十分な情報がなく、正確に予測できないのです。

情報セキュリティの世界ではよくあることですが、今回のテーマは複雑で、細かい数字やとっつきにくい理論が何かと含まれています。また、この複雑さのせいで、ある調査の結果が将来的に悪用される可能性もあります。

security-week-42-featured

今回の3大セキュリティニュースに共通点はありません(どのニュースも重要な意味を持つ、という点を除けば)。この業界の経験がなければ、どれだけ重要なセキュリティ事件なのかきちんと評価できないものもあるでしょうし、重大な点を見逃す可能性もあります。

わかりやすい例を使って、できるだけ正確に要点を説明しようと思っていますが、文脈があいまいではっきりしないため、読む人によって判断が異なるでしょう。とにかく、腰を落ち着けて、今週の『セキュリティウィーク』をお楽しみください。タイトルは「正体を表す」です。いつものように、Threatpostの編集スタッフが厳選した最重要ニュース3本に、私が情け容赦なくコメントしていきます。バックナンバーはすべてこちらにあります。

SHA-1衝突の調査費用、大幅に下落

ニュース(英語)。3年前のジェシー・ウォーカー(Jesse Walker)氏の予言(英語)。このアルゴリズムのセキュリティについての見方を変えた新しい調査(英語)。

Linuxのファイル操作についてUbuntuの自動設定以上のことを多少知っている人なら、Linuxシステムが「指示を慎重に読め」とプロンプトを出すのを知っています。もちろん、私はまず、コマンドに関するドキュメントをGoogleで探してみるのですが、場合によっては、何もうまくいかず、にっちもさっちも行かなくなることがあります。

このニュースも似たようなものです。少なくとも、多少の説明がなければ、簡単にはテーマを理解できません。今までの『セキュリティウィーク』で最も複雑なトピックであることは間違いありませんが、私はあえて、どういうことなのかシンプルな表現で説明しようと思います。

security-week-42-cat-jumps

そうですね、こんなことをしてみようかと

SHA-1は暗号ハッシュアルゴリズムです。このアルゴリズムは、入力シーケンスの制限がなく、160ビットのデータを生成します。このデータは元のデータ列の識別に使用されます。元のデータ列がなければハッシュの計算は不可能です。ひき肉をステーキ肉に変えられないのと同じで、ハッシュから情報を復元することはできません。

もっと正確に言うなら、たとえ「123456」のようなダミーのパスワードでも、復元は不可能でなければなりません。このようなアルゴリズムには2つの要件があります。1つ目は、ハッシュだけでは元のデータの復元が不可能なこと。もう1つは、両方が同じハッシュを持つデータ列の組み合わせを見つけるのが不可能なことです。

厳密に言えば、両方とも可能性はあります。ただ、これは非常に難しく、手間のかかる計算で、試してみる価値さえありません。では、スーパーコンピューターを購入して、暗号解読作業を任せてみたらどうでしょう。そうすると、240年後に、答えは42だと教えてくれますが、今の時点ではどうでもいいですね。

それでも、不安要素はあります。その1、PCの処理能力は上昇の一途をたどっています。その2、リサーチャーは、暗号アルゴリズム解読の近道を絶えず探し続けています。元のデータ列を復号するよりも、むしろ暗号化アルゴリズムの衝突を発見する方がずっと簡単です。

一方、SHA-1はさまざまな暗号化システムや認証ソリューションで使用されていて、2種類のエージェントのデータが一致することを保証する役割を担っています。そこそこ手軽でコストのかからないプロセスで、同じハッシュを持つデータ列が複数発見されると、そのアルゴリズムは信頼できなくなります。

ここでちょっと中断。頭がくらくらするかもしれませんが、1ランク上の本格的な微積分の講義をさせてください。つまり、こういうことです。リサーチャーは衝突を探すためのアルゴリズムを作成します。そのアルゴリズムは通常の、総当たり方式よりも少ない労力で衝突を探すことができます。もっと正確に言うと、私たちは今、誕生日攻撃(原文ママ!)について話しています。

うーん、シンプルに説明しようと思いましたが、大してシンプルになりませんね

そして、リサーチャーはアルゴリズムを改善し、復号の試行回数を減らします。その結果、今まで240年かかっていた攻撃が、たった120年になり、その後、12年に、最終的にはたった2年で成功するようになります。というわけで、攻撃に必要な時間が2世紀ではなく2か月とわかったときが、心配し始めるときです。

話を続けます。3年前、Intelの暗号研究者、ジェシー・ウォーカー(Jesse Walker)氏は、2015年までには、実際のSHA-1衝突攻撃にかかる時間は211サーバー年(典型的なサーバーを基準にした、ちょっと特殊な見積もり単位)になっているだろうと推測しました。

Amazon EC2などのクラウドサービスのおかげで、このハッシュの解読に必要なインフラを現金に換算するといくらになるのか計算できるようになりました。理論的には、70万ドルあれば、比較的短時間でデジタル署名の偽造方法を入手できます。

ただし、この見積もりが行われたのは2012年です。つまり、その時でさえ、SHA-1の信頼性はそれほど高くありませんでした。とはいえ、資金の豊富な政府関係者しかアルゴリズムを解読する余裕はありませんでした。

当然のことですが、こうした組織は暗号との戦いに勝ったからといって、あわてて世間に公表などしません。ですから、大切なのは、裕福なサイバー犯罪者(間違いなく存在します)がいつこの「ツール」を手に入れるようになるか予測することです。

security-week-42-dog

先日、オランダ、シンガポール、フランスにある大学の研究者グループが、衝突の計算に必要なプロセスを最適化する方法をまとめたホワイトペーパーを発表しました。この研究成果に従って攻撃者が武装した場合、実際の衝突攻撃まではわずか49日、コストは75,000ドル(Amazonの環境を使用した場合)しかかかりません。

十分な資金があれば、さらに早くなる可能性もあります。著名な暗号研究者、ブルース・シュナイアー(Bruce Schneier)氏は、2012年の見積もりはムーアの法則のみを考慮し、攻撃アルゴリズムの進化(高い処理能力を備え、値ごろ感のあるGPUを計算に使用するなど)は一切勘案していなかったと見ています。アルゴリズムの最適化がもたらす影響を正確に見積もるのは不可能です。

さてここで、お決まりの質問です。この研究と見積もりは事実上、真の脅威を意味しているのでしょうか?必ずしもそうではありません。このような「脆弱性」は実際に悪用できるのでしょうか?あまり安全性の高くないMD5アルゴリズムをベースにしたわかりやすい(英語記事)があります。2種類のファイル(この例ではロックスターの写真)を使って、その1枚にいろいろな修正を施したところ、その結果得られたハッシュは完全に同じでした。2つの画像はまったく異なるというのに。

実例をご紹介しましょう。悪名高きサイバー活動、Flame(英語記事)はこの方法を使って、当時は有効だったMicrosoftの電子証明書で悪意あるファイルを署名しました。もっと厳密に言うと、署名は捏造されたものでしたが、ハッシュが一致していました。独自に行われた見積もり(英語記事)では、こういった信頼性の低いアルゴリズムを悪用した手口には20万~200万ドルかかることがわかります。これはいくらなんでも高すぎます!

では、SHA-1は?このアルゴリズムは1995年から使用されています。2005年にはすでに、このアルゴリズムがまったく信頼できないことは、はっきりしていました。最新の見積もりを考えると、実用的なSHA-1衝突エクスプロイトは今でも遠い未来の話ですが、SHA-1は寿命を迎えたテクノロジーとして徐々に廃止され、もっと信頼性の高いハッシュアルゴリズムで置き換えられています。

2017年までには、主要なブラウザー開発元はSHA-1を廃止するでしょう。急がなければなりません。たった3年間のうちに衝突攻撃のコストが277万ドルから10万ドルにまで下がったのですから、1年経ったらどうなるでしょう?

一方、SHA-1の脆弱性の研究には純粋に科学的な価値があります。ここから起こり得る結末を想像するのは、「1961年4月12日、カザフスタンのとある砂漠上空で、250トンのロケット燃料が燃えた」というたった1行のニュースを頼りに、宇宙へ飛び立った人間を発見するのと同じくらい漠然としています。さてどうなるでしょう。お楽しみに。

おまけ:私たちが「ハッシュ」と呼んでいるものの正式名称は「ダイジェスト」または「メッセージダイジェスト」です。つまり、あなたは今、ダイジェストに関するダイジェストを読み終えたところです。再帰法バンザイ!

Netgear製ルーターの脆弱性、実際に悪用可能

ニュース(英語)。この脆弱性の説明(英語)

Netgear N300ルーターに脆弱性が発見されました。ルーターに再び、新たな穴が見つかったわけです。まったく違うものですが、ほとんど同じに見えます。以前の『セキュリティウィーク』で、Belkinルーターのバグについてはすでにお話ししました。しかし、Netgearの状況は、かなり悲観的です。

では、このルーターのWebインターフェイスを開き、パスワードを入力しましょう(もっとも、正しいパスワードではありません。だって、自分のルーターではないので、パスワードはわかりません)。すると、アクセス拒否ページにリダイレクトされます。BRS_netgear_success.htmlページを開こうとしても…どこへも行けません。しかし、それも数回のことです。何回か繰り返すと、最後には成功します。

security-week-42-netgear

もちろん、ローカルネットワークにログインした方がいいでしょう。冒険は難しくなりますが。しかし、ルーターがカフェにある公衆Wi-Fiに対応している場合なら、ネットワークの内部に問題なく入り込めます。そして、カフェのオーナーが突然、Webインターフェイスへのアクセスを公開すると決めたりしたら、何もかも驚くほど簡単になります。

ところで、Webアクセスを部外者に公開しなければならない理由をどなたかご存じですか?そんなことをすれば、ローカルネットワーク内のインスタンスではなく、ルーター自体にアクセス可能となります。私はそんなことをする理由はまったくないと思いますし、そうしない理由は山ほどあると思います。

しかし、Netgearルーターを巡る状況はきちんと法律にのっとって進展しました。報告を受けたベンダーは、2か月以内に新しいファームウェアのベータ版を公開しました。すべてうまくいっているように思えましたが、悪い知らせが届きました。脆弱性がすでに実環境で悪用されていたのです。

スイスのセキュリティ企業Compass Securityは、設定の変更された不良ルーターを発見しました。そのDNSサーバーはサービスプロバイダーに属していませんでした― もうおわかりでしょう ― 神のみぞ知る未知のエージェントに属していたのです。このエージェントはDNS要求をすべて受信していました。攻撃サーバーを調査したところ、このサーバーはハッキングされたルーター10,000台以上にサービスを提供していました。

おまけ:Compass Securityは、Netgearから返事を貰おうと、かなり長い間、頑張りました。とうとう対話が実現し、Compass Securityはテスト用に新しいファームウェアのベータ版まで手に入れました。しかし、そのとき突然、新たな登場人物が!Shellshock Labsという会社が誰にも相談せずに(これは反則です)、調査結果を公開したのです。

Bashで見つかった悪名高いバグにちなんだ名前を調査会社につけるのは、確かにちょっとかっこいい感じもしますが、だからといって、「do no harm」(危害を与えない)の原則を無視する理由にはなりません。しかし、「Shellshokers」によるリサーチは、このバグの出所を把握するのに役立ちました。ファームウェアのコードは、初回起動時、パスワードを入力しなくても、一度だけWebインターフェイスへアクセスできるようになっていました。このオプションを無効にするフラグが必要だったのですが、それがなかったのです。そしてもちろん、最終的にこのファームウェアはアップデートされました(英語記事)。

Androidデバイスの87%は安全ではない

ニュース(英語)。研究チームのWebサイト(デバイスベンダー別のセキュリティ評価を含む。(英語))

security-week-42-lemur

冗談じゃない!今までそんなことはなかったのに、また?!別の科学的研究の話です(ありがたいことに、SHA-1のニュースほど本格的なものではありません)。ケンブリッジ大学の研究チームがすばらしい成果を挙げました。32件の重大なAndroidの脆弱性に関するデータを集め、そこから13件の特に深刻な脆弱性を選択し、脆弱性の影響を受けるデバイスかどうかをベンダー別に調査しました。

この調査のために、研究チームはDevice Analyzerというアプリを開発し、被験者のデバイスからOSのバージョンやビルド番号などの遠隔測定データを集めました。そして、2万台を超えるスマートフォンのデータを蓄積できました。

研究チームは、OSのバージョンと脆弱性のデータを比較考量し、問題の規模を評価しました。その成果は次のとおりです。

結果を正規化したところ、デバイスの87%がある時期、何らかの重大な脆弱性(場合によっては複数のバグ)の影響を受ける可能性があったことがわかりました。もちろん、「可能性があった」という言葉を強調しておく必要があります。Stagefright(英語記事)の例からもわかるとおり、最も危険な脆弱性であっても、実際には制限があって、最大限活用できないのです。

しかし、研究チームはさらに踏み込み、ベンダー間の「危険性」レベルを評価するためのスコアカード、FUM Scoreを開発しました。これは、新たに開示されたバグへの対応にベンダーがかけた時間と、最終的なパッチがリリースされるまでにかかった時間を基準にしています。

優勝したのはもちろん、Nexusデバイスです。Nexusはセキュリティパッチをどこよりも早くリリースしています。2位はLG、3位はMotorolaでした。まあ、この3社を勝者とはいえません。実際のところ、参加企業はすべて敗者なので。

このスコアカードは、アップデート済みのデバイスの市場占有率も考慮しています。つまり、ベンダーがパッチをリリースするだけではだめで、最終的には利用者がデバイスをアップデートしなければなりません。デバイスが古くなればなるほど、この数字は悪くなります。別の評価では、発売から2~3年が経過したデバイスはひどいスコアを示しています。なぜでしょう。デバイスの持ち主がアップデートせずに使い続けているのです。

確かにこの調査方法には、前提条件に議論の余地がありますし、当て推量もかなり含まれていて、当然といえば当然の結果になっています。研究チームによると、セキュリティパッチの配信方法を改善するようベンダーに働きかけることが目的の1つでした。しかし、重要なのは、エコシステムは100%安全にはなりえないということを知ってもらうことです。

恐ろしいほどセグメント化されたAndroidは、安全でないエコシステムの最たる例ですが、こういったものは山ほどあります。iOSの方がずっと安全という前提を支持する方もいらっしゃるかもしれませんが、このダイジェストで最初に取り上げた「ダイジェスト」に関する話題は、予算には限界があり、100%安全なシステムはありえないことを示すものでした。これはセキュリティ戦略を選択する際の必須要因です。

その他のニュース:

Appleは、App Storeから複数のアプリを削除しました(英語記事)。これらのアプリは、アドウェアのブロックするためにルート証明書をインストールしていますが、これが暗号化トラフィックを無防備な状態にし、乗っ取りや変更などの悪事を支援するおそれがあるためです。私が理解している限りでは、同じ機能を持つ新しいアプリは今後、現れません。なぜ今まではこんなことが可能だったのでしょう?

欧州航空安全局(EASA)は、航空機と地上局の通信に使用されるシステム、ACARS(英語記事)にバグが存在することを発表しました(英語記事)。このシステムはパケットの検証を前提としていないため、このシステムを通じて偽のメッセージを送信するのが簡単なのは言うまでもありません。

もちろん、この脆弱性が原因で航空管制システムがハイジャックされることはありませんが、それでも、パイロットを惑わせるようなメッセージの送信に利用される可能性はあるでしょう。ACARSのバグは、さかのぼること2013年から(さまざまなPDFファイルで)話題になっていました(英語記事)。この議論に参加していたのはセキュリティリサーチャーだけでしたが、今回は規制機関自体が問題を提起しました。これはすごいニュースです!

懐かしのあれこれ:

Indicator-734

危険な常駐型ウイルス。メモリにアップロードされるときに、COMファイルに感染します。BIOSの10hバイトを使用して、ファイルの先頭を暗号化します。つまり、同じバージョンのBIOSが実行されているコンピューター以外では、このファイルを復号し、実行することはできません。ファイルの先頭を復号できない場合、ウイルスは先にカウンターを起動して、ファイルの動作(インタラプト20hの実行)をブロックします。カウンターの状態に応じて(1時間に約1回)ウイルスは画面に赤い十字を描画し、中央に「VINDICATOR」と署名します。このウイルスはインタラプト1Ch、21hを乗っ取ります。

infosec-digest-32-book1-234x300

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

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