2013年12月4日
あな素晴らしきJava対策、穴ではなく。
サイバー犯罪者がMicrosoft Office環境にしかけた攻撃がまた1つ、当社の精巧で頑強なセキュリティ技術によって阻止された。
先ごろ、新しいものではあるが、よくある攻撃が発見された。Word文書を開くと、悪意のあるコードがこっそりとコンピューターに侵入するという攻撃だ。これがゼロデイ攻撃でなければ、大きなニュースにはならなかっただろう。つまり、これまで知られておらず、修正パッチが存在しないMS Officeのぜい弱性が利用された攻撃だったのだ。この種の攻撃は、ほとんどのアンチウイルス製品の網をすり抜けてしまう。もうおわかりだろう。Kaspersky Labのアンチウイルスが、きめ細かく編みこまれた網によって、この攻撃を一網打尽にしたのだ。
具体的に説明すると、当社のぜい弱性攻撃ブロック技術が異常なふるまいを検知し、それに伴う攻撃を事前にブロックした。更新をインストールすることなく、待つ必要もなく、面倒な作業もない。あっという間に片づけた。
ゼロデイ攻撃は近年、極めて深刻な脅威となっている。
全力をもって真正面から取り組まなければならない。だが、多くのアンチウイルス製品は、ゼロデイがもたらす未来のリスクの前にはまったくの無力だ。なぜなら、ほぼシグネチャだけに頼っており、「未来の脅威からの保護」は宣伝文句でうたわれているだけだからだ(ずいぶんと立派な宣伝文ではあるが)。しかし、当然ながら、未来の脅威からの真の(効果のある)保護というものには、並外れた知力と膨大な量の開発リソースの両方が必要になる。すべてのベンダーが知力を備えているわけではなく、開発リソースだけ豊富にあったとしても、うまくいくとは限らない。これは決してコピーできるような技術ではないのだ。
ブッダやニューエイジの信奉者は「今を生きる」べきだと説く。人生においてはすばらしい格言だが、ITセキュリティが今この瞬間を生きることは許されないと我々はずっと信じてきた。ITセキュリティは常に未来に目を向け、サイバー犯罪者の頭の中で何が起きているかを、事件が起きる前に予見する必要がある。映画「マイノリティ・リポート」のようなものだ。そのため我々は、90年代前半から長きにわたって「事前予防」に取り組んできた。我々は当時、特にヒューリスティックと独自のエミュレータを開発したことでITセキュリティ業界から注目を集めていた。先見性はKaspersky LabのDNAに組み込まれている!
それ以来、この技術には大規模な改修や微調整が行われて強化されてきたが、約2年半前、既知のぜい弱性と未知のぜい弱性の悪用を防ぐすべての機能が、ぜい弱性攻撃ブロックに集約された。そして、何とか間に合った。この技術によって、Red October、MiniDuke、Icefogなどのさまざまな標的型攻撃を事前に発見することができたのだ。
その後、突如としてOracleのJavaがサイバー犯罪者から大きな注目を集めるようになったが、そのときもぜい弱性攻撃ブロックは迎撃態勢が整っており、さまざまな脅威との戦いでその効果を発揮した。ぜい弱性攻撃ブロックの戦いを可能にしたのは、Javaによる攻撃の検知に特化したJava2SWモジュールだ。
この記事ではJava2SWモジュールについて詳しく説明していく。
一般的なコンピューターの中でソフトウェアがどんな様子かというと、昔ながらのパッチワークに少し似ていて、たくさんの「パッチ」と「穴」がある。ソフトウェアには絶えず新しいぜい弱性が見つかっている(製品の人気が高ければ高いほど、多くのぜい弱性が頻繁に発見される)ため、ソフトウェアメーカーはパッチをリリースして修正しなければならない。
しかし、第1の問題として、ソフトウェアメーカーはすぐにパッチをリリースしない。何か月も放置する企業もある。
第2に、ほとんどのユーザーはパッチのインストールを忘れるか、気にもかけず、セキュリティホールだらけのソフトウェアを使い続ける。
とはいえ、明るい話題もある。世界のコンピューターの大半にアンチウイルスソフトウェアがインストールされているのだ!
ではどうするのか?答えは簡単、Java2SWを使う。Javaに関しては一石二鳥の技術だからだ。
全体的に見て、Javaのアーキテクチャはセキュリティ面ではかなり高度だ。各プログラムが隔離された環境(Java仮想マシン、JVM)で実行され、Security Managerに監視される。しかし、Javaはその人気の高さ故に標的にされた。システムをどれほど強固に保護しても、(人気の高さに比例して)あっという間にぜい弱性が見つかってしまう。ぜい弱性とは遅かれ早かれ発見されるものだが、すべてのソフトウェアベンダーはその準備をする必要がある。特に重要なのが、①保護技術をいち早く開発すること、②対応までの時間を短縮すること、③パッチによる更新がいかに重要かをユーザーに伝えること、だ。
実は、OracleはJavaに関して、こうした準備をうまくできなかった。むしろOracleの対応が非常にまずかったために、ユーザーはこぞってブラウザーからJavaを削除するようになった。Javaがないと、一部のWebサイトを開くのがとても大変になるのだが、それでも多くのユーザーが削除した。
次に挙げる数字は、読者のみなさんがご自分で判断してほしい。Javaで発見されたぜい弱性の数は、2010年が52件、2011年が59件、2012年が60件、2013年は(まだ終わっていないが)180件だ。一方、Javaのぜい弱性を悪用した攻撃の数も増加しており、憂慮すべき事態となっている。
では、Java2SWが優れている点とはどこか?どうやってJavaのぜい弱性を突く攻撃を防ぐのか?
Javaには既定のセキュリティエージェントがあるが、Java2SWによってすべてのJava仮想マシンでセキュリティの要素をもう1つ利用できるようになる。Javaコードを独自に分析し、怪しい動作が見つかればそのコードの実行を停止させるというものだ。
これが本当に難しい。というのも、単に「包む」だけでなく、Javaプラットフォームに直接アクセスする必要があるからだ。なぜか?Javaは外側からだとよくわからないからだ。中で何かが起きていても、その理由がはっきりしない。たとえば、Javaが何らかのプロセスを起動しているとしても、何のために起動しているのかが謎なのだ。しかし、内部を見ることで、Javaマシンでどんなコードが実行されているか、どんな権限を持っているのか、ソースは何か、などを発見することができ、発見した情報に基づいて結論を導き出すことが可能になる。
Javaはアーキテクチャが優れているために、さまざまなプラットフォームで使用することができる(Javaアプリケーションは、変更を加えなくてもほぼすべてのオペレーティングシステムで動作する)。しかし、このような柔軟性のために、多大なる知力をもってセキュリティ技術を開発しなければならない。Javaプラットフォームの心臓部に直接アクセスする必要があり、「心臓手術」は決して簡単ではないからだ。
言うまでもないが、すべてのアンチウイルス製品で「高度な心臓手術」が可能なわけではない。だが、当社の技術はすでにその点をクリアしている。現在、特許の出願中だ。
Java2SWのもう1つの長所は、ぜい弱性を保護する他のサブシステム(ぜい弱性攻撃ブロック)との連携だ。
疑わしい動作を発見すると、その情報がシステムウォッチャーに送られる。システムウォッチャーは、他のウイルス検知モジュールからの信号を収集して全体像を把握するコンポーネントであり、極めて高度な攻撃にも、最適な情報に基づいた(正確な)対策を実行する。
このように、JavaのSecurity Managerが攻撃を受けて乗っ取られたとしても(Security Managerはサイバー犯罪者に頻繁に狙われる)、問題にならない。それでも攻撃を検知してブロックすることができるのだ。
では、Java2SWはJavaの未知のぜい弱性に対する万能薬なのだろうか?
これが重要なのだが、Java2SWはゼロデイを検知するわけではなく、ぜい弱性を発見するわけでもない。その権限はない。おかしな話に思えるかもしれないが、実際のところ、Java2SWはそうした点においてのみ効果を発揮する。Java2SWが発見するのはエクスプロイト、つまりコードの異常なふるまいだ。こうしたエクスプロイトがどこを攻撃するかは、あずかり知らぬこと。先ほど述べた古いパッチワークの穴を塞ぐのではなく、その穴を利用した攻撃を阻止するだけだ。このように、我々は特定のぜい弱性を追いかけるのではなく、もっと幅広いやり方でユーザーを保護している。
その結果どうなったか。
第1に、Javaのぜい弱性を利用した未知の攻撃から、かなりの確率でユーザーを保護できている。つまり、ぜい弱性が発見されてからパッチが提供されるまでの間に、安全な時間ができたということだ。
第2に、無関心ですぐにパッチをインストールしないようなユーザーであっても、こうした攻撃から守られている。
この明るいニュースが今回の記事の締めくくりだ。近いうちにまた新しい記事をお届けする。