ソフトウェアの未修正の脆弱性を悪用し、ウイルスに感染させようとする「ゼロデイ攻撃」が、昨年末からたて続けに発生している。知らない間にウイルスに感染してしまう事態にならないよう、ゼロデイ攻撃にも対処できる回避策をご紹介する。
インターネットネット経由のウイルス感染には、だまされてユーザーが自身でウイルスを実行してしまうケースと、ソフトウェアの脆弱性(欠陥)を悪用され、知らない間に実行されてしまうケースの二通りしかない。これら感染経路を遮断するには、「信頼できると分かっているもの以外は、絶対にダウンロードしたり実行したりしない」、および「脆弱性を修正するセキュリティパッチを適用し、常にシステムを最新の状態にする」という2つを履行すればよい。たったこれだけで、ネット経由のウイルス感染のほとんどが防げるのだ。
ところが、この「ほとんど」から漏れてしまう例外がある。セキュリティパッチの提供前に脆弱性が悪用されてしまう、ゼロデイ攻撃がそれだ。未修正の脆弱性が悪用されるため、注意しているだけでは防げないのだ。
以下は、今年に入ってから出された、ゼロデイ攻撃に対処するセキュリティパッチで、多くの方に影響を及ぼす可能性の高かったものである。修正日、製品の順に示す。
1月14日 JRE
1月15日 Internet Explore
2月 2日 JRE
2月 8日 Adobe Flash Player
2月21日 Adobe Reader
2月26日 一太郎
2月27日 Adobe Flash Player
1月修正のJRE(Java Runtime Environment:Java実行環境)以外は、一般の方に被害がおよぶ大規模攻撃に発展する前にパッチが提供されたが、いずれもパッチ提供前の数日から数週間の間は、攻撃されれば誰もがウイルスに感染してしまう、危険な状態にあったことには変わりない。
■ゼロデイ攻撃を緩和/回避するために
これらゼロデイ攻撃のうち、攻撃の成立条件が少し特殊な「一太郎」の脆弱性(後述)以外は、ダウンロードしたファイルやメールの添付ファイルを開いた場合だけでなく、Webサイトを閲覧するだけで知らない間にウイルスに感染してしまう可能性があった。
ゼロデイ状態で、Webサイトを閲覧するだけで感染してしまう事態を、どうやって回避したらよいのだろうか。単純で確実なのは、脆弱性のあるソフトをアンインストールし、パッチが提供されるまで、使用を中止することだ。これなら確実に回避できる。
そこまではできないという場合は、不審なサイトの閲覧や不用意なリンクのクリックを避けることにより、攻撃されてしまうこと自体を、ある程度回避できる。ただし、公式サイトが改ざんされ、攻撃サイトに誘導されてしまうケースもあるので、攻撃される確率は減るものの、運任せなところもある。
より効果的な対策としては、攻撃対象となっている脆弱なソフトウェアを、Webの閲覧から一時切り離す方法や、実行時のセキュリティレベルを上げる方法がある。
<JRE>
コントロールパネルの「Java コントロールパネル」の[セキュリティ]タブにある、「ブラウザでJavaコンテンツを有効にする」のチェックボックスのチェックを外すと、Webブラウザ上でJavaアプレットやJava Web Startアプリケーションが実行できなくなり、ブラウザ経由での攻撃を回避できる。
同じタブ内の「セキュリティ・レベル」を、ディフォルトの「高」や「非常に高」に設定すると、未署名のアプレットやアプリケーションの実行時に、ユーザーに実行許可を求めるようになり、自動実行を防ぐことができる。
<Adobe Flash Player>
ブラウザ側でFlash Playerのプラグインを無効化すると、Webブラウザ上でFlashコンテンツが利用できなくなり、脆弱性攻撃を回避できる。
<Adobe Reader>
ブラウザ側でAdobe Readerのプラグインを無効化すると、Webブラウザ上でPDFファイルが利用できなくなる。ただし、Webブラウザによっては、自動的にダウンロードした後、Adobe Readerが起動して開いてしまう場合がある。そのような場合は、開かないよう設定する、あるいは、Windopwsのファイルの関連付けの解除や変更、安全なファイルの扱いの変更などで対処する必要がある。
Adobe Reader X/XIでは、[編集]→[環境設定]の[セキュリティ(拡張)]の「サンドボックスによる保護」を有効(ディフォルト値)にすると、他への影響を抑えた安全な方法で動作し、脆弱性を悪用した攻撃の影響を緩和できる可能性がある。
Reader XIで追加された「保護されたビュー」を利用すると(ディフォルトはオフなので変更する)、Readerのすべての機能を無効にしてPDFファイルを閲覧するようになり、脆弱性の悪用を回避できる可能性がある。
<Internet Explore>
[インターネットオプション]の[セキュリティタブ]にある[セキュリティレベル]を[高]にしたゾーンでは、セキュリティ上の問題を起こす可能性のあるプラグイン(ActiveXコントロール)やスクリプト、ダウンロードなどの機能が無効になり、脆弱性の悪用を回避できる可能性がある。
マイクロソフトでは、パッチが提供されるまでの暫定措置として、ゼロデイ攻撃の発生時に「Fix It」を提供することがある。「Fix It」が提供された場合には、これを適用することにより、問題を回避策できる可能性がある。この「Fix It」は、Windowsの自動更新には含まれないので、その都度ユーザー自身でダウンロード/実行していただきたい。
■ちょっと特殊な一太郎のゼロデイ攻撃
Windowsアプリケーションは、アプリケーション本体のプログラムファイルとは別に、コードやデータをDLL(Dynamic-Link Library)と呼ばれるファイルに格納しておき、必要に応じて読み込む仕組みが用意されている。この仕組みを悪用し、アプリケーションが使用する正規のDLLの代わりに悪質なDLLを読み込ませ、任意のコードを実行する攻撃があり、「DLLプリロード攻撃」などと呼んでいる。一太郎には、一太郎がシステムフォルダにインストールした正規のDLLよりも、文書ファイルと同じフォルダに置いたDLLを優先的に読み込んでしまう欠陥があり、これが攻撃に悪用された。
DLLプリロード攻撃は、以前より問題になっており、安全なDLLを読み込むように対処したアプリケーションも多い。しかし、いまだに対処されていない製品も多々あるので、対処済みであることが確認できているアプリケーション以外では、安全であることが分かっているファイル以外は開かないように注意したい。
この攻撃に使われる一般的な手法では、攻撃者が用意したDLLと文書ファイルを同じフォルダ内に置くのが、攻撃成立の絶対条件となる。そのうえで、ユーザーに文書ファイルを直接開いてもらうと、攻撃が高確率で成功する。そこで攻撃者は、細工したDLLと文書ファイルなどをひとつにまとめたアーカイブファイルをユーザーに送りつける。ユーザーがアーカイブファイルをまるごとフォルダに展開してから、その中の文書ファイルを直接開けば、条件が満たされ攻撃が成功してしまう。アーカイブファイルから文書ファイルだけを取り出して開いた場合には、この攻撃は成立しない。
もし安全性の確信が得られない状況下で、どうしてもファイル開かなければならない場合には、この特殊な条件を逆手にとるとよい。開こうとするファイルだけを別の安全なフォルダにコピーしてから開くようにすれば、この問題を回避できるわけだ。また、アプリケーションを起動してから、アプリケーション上からファイルを開くようにすることによっても、この問題を回避できることがある(起動時に正規のDLLが読み込まれる場合)。
(2013/03/01 ネットセキュリティニュース)