Adobe Flashエクスプロイトを武装解除する

2016年8月19日

Adobe Flashについてどう思います?どう答えるかで、あなたがサイバーセキュリティ業界の人かどうかわかります。ほとんどの人にとって、Flashは「話題の動画を再生しようとすると、ブラウザーが更新しろと要求してくるもの」という認識ではないでしょうか。一方、テクノロジーに詳しい人は、Flashの無防備さが大混乱をもたらしている、と考えただけでキレそうになるかもしれません。

flash-malware-detection-featured

実際に、Adobe Flashは2015年に最も悪用されたプログラムリスト(当社調べ)でトップでした。リストの上位には、Java、Adobe Reader、Microsoft Office、Silverlightなど、おなじみの名前が挙がっています。ところがFlashの場合、普及率が高い、脆弱性による影響が大きい、ユーザーが本来するべき定期的なアップデートをしていない、というトリプルパンチの威力があります。

こうした背景を踏まえ、Kaspersky Labは、Flashユーザーに影響を与えるエクスプロイトに対抗するテクノロジーの特許を取得しました。そのテクノロジーがどういうものなのか、Flashのエクスプロイトの説明と合わせて解説していきたいと思います。

Flashのエクスプロイトって、何が違うの?

よくぞ訊いてくれました。わかりやすくするため、これまでの経緯を少し思い出していただきましょう。PCを感染させる方法は、基本的に2通りしかありません。1つ目の方法では、被害者となる人の直接的な関与が必要です。実行可能ファイルをダウンロードして実行する、悪意あるマクロが埋め込まれた文書を開く、悪意あるURLをクリックする、などです。

2つ目の方法では、被害者となる人は何もする必要がありません。被害者となる人が使っているOSやプログラムの脆弱性を、サイバー犯罪者が見つけて悪用します。たとえば、あるブラウザーに脆弱性がある場合は、悪意あるWebページを1つオープンするだけで十分です(Kaspersky Dailyの読者なら、悪意あるWebサイトはどこにでもあると聞いても驚かないと思いますが)。

PCを感染させるには、インターネットを経由するのが一番簡単です。そのため、Webサイトのエクスプロイトは、サイバー犯罪者の間で大変な人気を集めています。必ずしもブラウザーの脆弱性を悪用する必要はなく、Webサイトでマルチメディアを再生するコンポーネントであるJavaやAdobe Flash Playerに侵入するのが一般的です。

Flash動画を、プログラムで開かれるファイルと考えるのではなく、実際のプログラムだと考えてみてください。Flash動画はWebサイトの他のコンテンツとともにダウンロードされますが、ダウンロード後は他のコンテンツと切り離され、システムにインストールされているAdobe Flashコンポーネントで実行されます。ただし実際のプロセスはもう少し複雑です。Adobe Flashは、動画プログラムを安全に実行するために独自の仮想環境を使用します。つまり、これらのプログラムは、コンピューター内部の疑似コンピューターで実行されるのです。

ということは、仮想マシンがFlashの安全性を高めている?

いい質問です。Flashは、保護された仮想環境でファイルを実行します。これは、インターネットからダウンロードされたコードを見境なく実行するのは危険だからです。すべてのコードを仮想マシン内部で実行するということは、インターネットからダウンロードしたコードがあなたのコンピューターで何かしようとしても、ファイルや文書やOSの重要コンポーネントにはアクセスできない、ということです。しかし、これはあくまでも理論上の話です。実際には、エクスプロイトはAdobe Flashの脆弱性を利用してFlashのセキュリティ対策(仮想化など)を回避することができます。

問題はまだあります。FlashファイルやFlash仮想マシンは、その性質上、サイバー犯罪組織の悪巧みをシステムから隠すのにうってつけの環境です。標的ごとに異なるファイルを作成することも可能です。

これは、大量のファイルリスト(データベース)を使ってマルウェアを検知する従来タイプのアンチウイルス製品にとって、特に大きな問題です。膨大な数に上るエクスプロイトは、どれも同じように動作しますが、セキュリティ製品から見ると、それぞれ別モノです。そのうえ、Adobe Flashプログラムの記述に使えるプログラム言語は3種類あるため、正規のFlashコンテンツの中から悪意あるコンテンツを検知する作業は、とてつもなく複雑なものとなります。

ファイル名が頼りにならず、仮想環境が安全ではないなら、セキュリティ会社はどうするの?

これはかなり前から、ITセキュリティ業界にとって頭の痛い問題です。私たちとしては、コード実行の前に悪質なコードを特定する方法が必要でした。Adobe Flashへコードを渡す前に、セキュリティ製品側の仮想マシンでプログラムを実行することは、理論的には可能でした。ただ、このやり方はあまりにも複雑なのとリソースを食いすぎるせいで、実用的ではありません。それに、この処理にかかる時間がほんの僅かだったとしても、人々は思ったものがすぐに表示されるオンライン環境に慣れ親しんでいますし。

エクスプロイトっぽいものに遭遇したときは…?

ここでKaspersky Labの新技術の出番です。アントン・イワノフ(Anton Ivanov)とアレクサンダー・リスキン(Alexander Liskin)が考案した手法は、不審なコードのエミュレーションをベースとし、ほとんど違いのない多くの類似オブジェクトを短時間で分析できます。この手法の開発にあたっては、コードを実行するためではなく、コードに関連する情報を収集するために仮想スタックマシンのアプローチが採用されました。

後に、悪意あるFlashオブジェクトを実行しなくても、そのオブジェクトの正体を暴くことができるとわかりました。当社の手法を適用した場合、マルウェア開発者が1つ1つのコードを変更しても、プログラムの悪巧みを隠しとおすことはできません。

Flash悪用の手法を当社で把握している限り、同じ手法を使用するマルウェアはすべて自動的にブロックされます。このテクノロジーはカスペルスキー インターネット セキュリティに組み込み済みであり、この種の脅威の検知率は倍増しました。

あらゆるアンチウイルス製品開発企業は、検知率を少しでも向上させようと、日々研さんしています。検知率の倍増は、素晴らしい以上の出来事です。