われわれのPwn2Ownコンテストに関する記事は、多くの注目を集めた(PWN 2 OWNコンテスト開始2分でMacBook Airが陥落、PWN 2 OWNコンテスト最終日にAdobe FlashのセキュリティホールでVistaが陥落、More details on the Pwn2Own Flash flaw that won the Vista machine、PWN 2 OWN:本当に勝利したのはどのOSか)。記事のコメントではいくつかの論点について熱い議論が交わされ、中でもVistaを陥落させたFlashのセキュリティホールに議論が集まった。これは見事なものであり、私は議論に参加した方たちすべてに感謝したい。特にn0neXn0ne氏とOButterball氏には、個人的にも非常に長い間詳細な議論に付き合ってもらった。
重要な論点は次のようなものだ。
- Pwn2Ownコンテストで勝ったのは誰か(あるいは、答える人によっては、負けたのは誰か)?はっきりさせておくと、ここで「誰か」というのは、「どのOSか」という意味だ。
- Adobe Flashのセキュリティホールに対して脆弱性を持つOSはどれか?
- このAdobe Flashのセキュリティホールは、Adobeの過失なのか、それともオペレーティングシステムの過失なのか?(それともSunの過失か?)
私はAdobe Flashのセキュリティホールを突いた当人に、直接起こったことに関する体験談を聞くのが理にかなっていると考え、Shane Macaulay氏(k2氏としても知られる。ZDIのウェブサイトから取った写真の右側の人物)とAlexander Sotirov氏(ZDIのウェブサイトから取った写真の左側)にインタビューを行った。これは、素晴らしいインタビューだった。内容は以下の通りだ。
Nate:君たちがAdobe Flashに発見したセキュリティホールは、本当にクロスプラットフォームなんですか?
Shane:そうです。これはスタックの問題で、あるタイプはパラメタを2つ取るように定義されると、3つのパラメタを受け取る。これは多態性と名前がめちゃくちゃになるバグかも知れないが、どちらにせよ、このオブジェクトは3つめの不正な、初期化されていないメモリを通じて呼び出され、メモリに埋めてあった値の場所にジャンプするんです。
Nate:君は3つすべてのOSの攻撃用コードを持っているんですか。それとも、十分な時間さえあれば攻撃コードをかけると分かっていた?
Shane:十分な時間があれば書けたと思うが、もう何年もgdb使っていないので、今はそれが一番大きな問題です。僕のこれまでの職歴はMicrosoftプラットフォームでのもので、*nixを扱う時間はあまり取ってこなかったから。
Nate:どうして*NixやMacではなく、Vistaを選んだんですか。
Shane:その質問には、今答えたところだと思うけど。もちろん、あるセキュリティホールを一度使ってしまったら、他のものを攻撃するには使ってはいけないし。
Nate:InfoWorldの記事では、Alexanderを連れてきたのは、Javaの利用に関する忍術が必要になったからだと書かれていました。僕は君たちはJavaアプレットを使ってDEPの制約をバイパスしたのだと考えていて(JVMはDEPと相性がよくないため)、これはFlash内部のバッファオーバーフローの類のものだと仮定しているんですが、正しいですか。
Shane:尊敬するSotirov氏にお任せします。
Alex:目標のマシンは、Internet Explorerのプロセス内部に実行不能なヒープを持っていて、このためにShaneはJavaScriptのヒープスプレイを使ってヒープでシェルコードを実行することができなかった。僕はDEPのバイパスについて多少研究していて、今回の攻撃に使える攻撃手法を持っていたんです。僕たちはJavaアプレットを使って実行可能なメモリを割り当て、そこにシェルコードを書き込みました。指摘しておきたいのは、これはJavaの脆弱性ではなくて、単にJavaアプレットを使うことで他の脆弱性を利用するのが簡単になる方法があるということだということです。僕は他にもDEPをバイパスするテクニックをいくつか持っているので、JavaなしでもFlashの脆弱性を突くことはできたんです。
Nate:Sotirov氏が「Javascript Heap Feng Shui」で有名なことを考えると、それがここで役に立ったということですか?この攻撃を実現するのに、JavaかJavaScriptを使ってヒープを用意しましたか。
Shane:そういう形の質問には、答えるべきではないと思います。僕たちはFeng Shuiを必要としませんでしたが、JavaとJavaScriptは両方とも使いました。ActionScriptを使うという方法もあり得ましたが、それだとターゲットに手を加えることになったでしょう。
Alex:この脆弱性を突くにはHeap Feng Shuiのテクニックは必要ありませんでしたが、Charlie Miller氏は2日目にMacBook Airを攻撃するのに、僕のHeap Feng ShuiライブラリのOSXポートを使っています。今年の賞品のラップトップのどちらにも自分のコードが関係しているというのは、結構すごいことだと思いますね。
Nate:うん、これはすごい。僕も実際に自分の研究でHeap Feng Shui攻撃を使っているんですが、Macに対するポートもあるとは気づきませんでした。それは非常におもしろいし、僕の仕事を進めるのを少し簡単にしてくれそうです。この攻撃がFlash内部で起こしたことについて、もう少し話せることはありませんか。
Shane:セキュリティ情報が公表されるまでは、黙秘権を行使するしかありません。