Flash に新世代の脆弱性

先ごろ、シマンテックはある Adobe Acrobat PDF ファイルを入手しました。このファイルを開くと悪質なバイナリが作成され、実行されます。この PDF ファイルが何らかの脆弱性を突いてペイロードを作成しているのは明らかでした。実際に解析してみると、この脆弱性はこれまで見てきたものとはまったく異なることがすぐに判明しました。さらに驚いたことに、この脆弱性は当初予想していた Adobe Reader ではなく、Adobe Flash に影響するものでした。


Adobe Flash が影響を受けるとなると、事態は深刻です。ほとんどの脆弱性は、1 種類のテクノロジに限定されます。たとえば、ある特定のブラウザに影響する脆弱性、ある特定の OS に影響する脆弱性、といった具合です。複数のプラットフォームや製品にまたがって影響を与える脆弱性はほとんどありません。しかし、Flash になると話は別です。Flash は一般的なすべてのブラウザに存在し、PDF 文書でも利用されます。また、特定の OS にも依存しないので、その脅威の大きさは計り知れません。今や、Flash は Web ブラウズに不可欠な存在となっており、ふだんユーザーが気にも留めないようなところであちこちに使われています。


Flash の脆弱性がどれほど危険なものであるかは、Matasano Security の Thomas Ptacek 氏の言葉がうまく言い当てています。「Flash に対する攻撃になぜそんなに大騒ぎする必要があるのか。それは、Flash が陥落するだけで世界中のブラウザのほとんどが攻撃者の意のままに操られてしまうからだ」(同氏のブログ記事 This New Vulnerability: Dowd's Inhuman Flash Exploit から引用)Flash はユーザー数が多いだけに攻撃者にとっても膨大な数の標的が存在するわけで、とても魅力的な攻撃対象であるのは間違いありません。


Ptacek 氏の上記の書き込みは、Mark Dowd 氏(IBM ISS のリサーチエンジニア)が 2008 年 4 月に発表したレポート(Application-Specific Attacks: Leveraging the ActionScript Virtual Machine)を受けて投稿されたものです。Dowd 氏は Adobe Flash Player バージョン 9.0.115.0 に存在するごくわずかなメモリ破壊の問題を利用して脆弱性を確実に攻撃できるコードを作成し、その詳細をレポートで公開しました。また、Flash の開発者によって用意されたさまざまな攻撃防止策をどのようにしてくぐり抜けたかも詳しく説明しています。これは大変意義のある問題提起でした。氏が意図したかどうかは分かりませんが、このレポートを読めば、脆弱性を確実に攻撃することが非常に難しいこと、そして修正パッチが提供されたとたんにこの問題は完全に解消されることがよく分かるので、読者は安心感を得ることができます。もちろん、Dowd 氏のレポートの内容を模倣した攻撃が多発することは予想されていました。Dowd 氏のレポートが発表されて以来、シマンテックでも Flash の脆弱性を突いた攻撃が広範に観測されましたが、どれも Dowd 氏が発見した攻撃法を利用したものばかりでした。ところが、今回は様相が異なります。


この攻撃コードの作成者たちは、あるバグを利用して、これをヒープスプレー手法によって確実に攻撃可能なコードに変換しています。通常、攻撃者はユーザーを悪意のある Web サイトに誘導するか、または悪意のある PDF ファイルを電子メールで送信してきます。ユーザーがこうした Web サイトにアクセスしたり PDF ファイルを開いたりすると、この攻撃コードはユーザーの PC に別のマルウェアを作成します。この悪質な PDF ファイルは Trojan.Pidief.G として検出され、作成されたファイルはトロイの木馬として検出されます。


この問題について、シマンテックは Adobe PSIRT チームと連絡を取り合っています。ユーザーの皆さんは、ウイルス定義ファイルを常に最新の状態にするように心がけてください。Dowd 氏が発見した脆弱性同様、今回の脆弱性を悪用した攻撃も今後数カ月にわたって大量に発生するものと考えられます。いつものように、Adobe からの正式なパッチ提供を待つとともに、すべての製品を常に最新の状態にしておくよう心がけてください。Vista ユーザーは、UAC(ユーザーアカウント制御)機能を有効にしておけば感染を防ぐことができます。


今回の攻撃に利用されている PDF には、複数の Flash ストリーム(FWS)が含まれます。そのうちの 1 つが動的にシェルコードを作成し、ヒープスプレー手法を利用して攻撃の成功率を高めようとしています。この攻撃では、ヒープには 64 MB のデータがロードされます。以下に、ヒープの内容を示します。

 

 

次に、攻撃者は何らかの手口でこのヒープに実行をリダイレクトして、悪意のあるシェルコードに到達する必要があります。ここで出番となるのが、前述の脆弱性です。このシナリオでは、Flash は悪意のある命令をそのまま実行してしまいます。end 関数は不正な構成のオブジェクトを想定していないため、攻撃者の思惑どおりにヒープに実行を渡してしまいます。


さらに、攻撃者があるアクションを実行することにより、実行ポインタは攻撃者があらかじめヒープスプレーによって準備したセクション内のリージョンを指し示します。このため、ヒープ内で実行が継続し、最終的に攻撃者が用意したシェルコードが実行されてしまいます。


テストを行ったところ、この脆弱性は Windows XP と Vista で悪用される危険性がありますが、Vista の UAC を有効にしていれば、作成されたファイルが実行されることはありません。また、この脆弱性は Flash に影響するため、Flash を使用するソフトウェアはすべてこの問題の影響を受ける可能性があります。


(文:Patrick Fitzgerald 解析:Ka Chun Leung、Kaoru Hayashi、Kevin Savage、Piotr Krysiuk)

 


この記事は Security Response Blog(英語)にてPatrick Fitzgeraldによって掲載された内容を日本向けに編集された記事です。本文はこちら。(英語)