現在位置入口>>セキュリティ>>マルウェア

マルウェア

ゼロデイアタック

ゼロデイアタックの成立

本来であれば、ソフトウェアの脆弱性を攻撃される前にセキュリティパッチを当てたりセキュリティソフトのパターンファイルを更新したりしなければいけないところです。

ゼロデイアタックは、この順序が入れ替わる場合を指します。つまり攻撃が対処より前に起こります。

以下はゼロデイアタックとそうでない時、それぞれを時系列に従って表示しています。比較してみてください。

以下のフローの攻撃コードはこのページの主題のマルウェアを指します。

ゼロデイアタック成立

  • 脆弱性発見
  • 攻撃コード作成
  • ×防御失敗←攻撃
  • 脆弱性に対する対策

ゼロデイアタック不成立

  • 脆弱性発見
  • 攻撃コード作成
  • 脆弱性に対する対策
  • ○防御成功←攻撃

二つの図の違いは最後の防御と対策の順序が入れ替わっているだけです。

対策する前に攻撃されているのですから、防御に失敗するのは当たり前で、こんなものは防げるはずがないと思うかもしれません。もちろん一般論としてはその通りです。

しかし、ここで終わってしまうとゼロデイアタックされたらどうしようもないのであきらめる、となってしまいます。

でも個別論はどうなのでしょう。防げるような状況というのはあるのでしょうか。検討してみる価値はあるあるかもしれません。

簡単な対策

どんな形で攻撃を受けるのかで分類してフローをもう少し詳しいものにすると、対処法が見えてきます。

実行ファイルに寄生するタイプ

インターネット時代以前からある、実行ファイルを実行したら寄生したプログラムが活動するというものです。

このタイプのゼロデイアタックをフローにすると、下のようになります。

ゼロデイアタック成立

  • 脆弱性発見
  • 攻撃コード作成
  • ファイルダウンロード
  • 実行ファイルのスキャン
  • ×防御失敗←攻撃←実行
  • 脆弱性に対する対策

防御に成功したければ、攻撃の行われる時点を対策後にすればいいことになります。

今度は成立と不成立の二つの図を並べてみます。成立の方は上と同じものです。

ゼロデイアタック成立

  • 脆弱性発見
  • 攻撃コード作成
  • ファイルダウンロード
  • 実行ファイルのスキャン
  • ×防御失敗←攻撃←実行
  • 脆弱性に対する対策

ゼロデイアタック不成立

  • 脆弱性発見
  • 攻撃コード作成
  • ファイルダウンロード(※1)
  • 脆弱性に対する対策
  • 実行ファイルのスキャン
  • ○防御成功←検出

二つの図の違いは最後の二つのステップだけです。ファイルダウンロードが攻撃コード作成の後になっていることに注意してください。

ダウンロードした実行ファイルはマルウェア入りですが、それだけではプログラムには何もできません。悪さをするにはユーザに実行してもらう必要があり、それまでは完全に受身の状態です。

防御成功の鍵は、ダウンロードから実行まで時間を取り、その間にセキュリティソフトが対策できるようにすることです。

ゼロデイアタックが行われれば、セキュリティソフトの販売会社は速やかに対策をして、パターンファイルのアップデートを行います。ということは、ファイルダウンロードしてからセキュリティソフトの更新を待ち、改めてファイルをスキャンすればゼロデイアタックに対してもある程度対策できるということになります。

実際には更新直後にゼロデイアタックの報が入るということもありそうですから、念のために2回くらい更新されてからスキャンするのがいいかもしれません。

おそらくはその間にニュースも入って来るでしょうし、スキャンする時にはもっと多くの情報が手に入っていることでしょう。

もちろん、今すぐ必要という場合には使えない対策ですが、急ぐ必要がないのであれば少し待つという簡単なことを実行するだけでより安全になります。

(※1)言うまでもありませんが、ダウンロード時に出てくるダイアログボックスの「実行する」と「保存する」の選択で「実行する」を選択してはいけません。

私は特に理由がない限り、通常は保存するのが当然だとばかり思っていました。しかし最近、直接実行する人もいることを知りました。

管理者権限を必要とするタイプ

何かインストールしたり、レジストリなどのシステムファイルに変更を加えたりするには管理者権限が必要です。このような操作を行おうとするマルウェアに対しては、この権限を持たない制限アカウントで対抗することもできます。(※1)

普段は制限アカウントを使用していれば、このタイプの攻撃に対してはゼロデイアタックを受けてもまったく影響がありません。

本来ならばインストールなどのシステム管理にのみ管理アカウントを使い、普段の使用には制限アカウントを使うべきです。そのための管理者アカウントであり、制限アカウントです。

しかし残念なことにWindowsアプリケーションの多くが実行時に管理者権限を要求しており、インストールからアプリケーションの使用まで同じくそのまま管理者として実行している人が大部分でしょう。

だからこそ逆に制限アカウントで使用できる人にはセキュリティ的に有利になるとも言えます。

Windows OSの現状が以上のようになっているため、制限アカウントの使用は万人向きとは言えません。ですがそのような使い方をしてもあまり不便ではない、あるいは多少不便でもセキュリティをより重視しなければならない事情のある人には検討する価値のある対策法です。

(※1)Windows VistaではUACという機能が導入されました。

UACはシステムに対する重要な変更操作を無条件に実行できなくするものです。これにより、管理者アカウントであってもいちいちダイアログボックスを表示することで、マルウェアがこっそり何かを実行することができないようになりました。

しかし、この機能も停止するというオプションがついており、それを使って機能を止めてしまえば従来のOSと同じになってしまいます。

webサイトを経由するタイプ

Webはインターネットの中心的なサービスです。インターネット利用者でWebを利用しない人はおそらくいないでしょう。

このWeb閲覧にも危険は潜んでいます。閲覧することで、プログラムを実行することがあるからです。

見るだけで何が実行されるのかと思うかもしれませんが、Webページに含まれているのは文字だけではありません。Webページを構成するHTMLにはプログラムを含めることも可能になっていますし、システム内のプログラムを自動的に実行することも可能です。

現在使われているWebの技術で考慮しなければいけないのはActiveX,Java applet,JavaScriptです。

Web閲覧時にこれらの機能をoffにすれば、ゼロデイアタックが行われても影響を受けることはありません。(※1)

もちろん、常にoffにし続けるするというのは実際的ではありません。通常はoffにして、必要な(信頼できるサイトの)時にonにするというのが理想的です。

Java applet

一番offにしやすい機能です。なぜなら、一番使われていないからです。

もしかしたらあなたが通常訪問しているサイトは、どこもこれを使用していないかもしれません。

必要な時のみonにするという使い方をしてもほとんど利便性は下がらず、ストレスの原因にはならないでしょう。

ActiveX

やはりほとんどのサイトでは使用されていませんが、完全にoffにすることはできないでしょう。Windows UpdateやOffice Updateに必要だからです。

Office製品を使っていないという人はいるかもしれませんが、Windowsは使っているはずです。少なくともこのページの情報が役に立つ人でWindowsを使っていない人はMacユーザくらいで非常に少ないと思います。

しかし、Microsoftのサイト以外で使う機会はないでしょうから、Updateの時のみonでもそれほど利便性は下がらないと思います。

あるいはMicrosoft以外のサイトはInternet Explorer以外のブラウザを使用するという方法もあります。

ActiveXコントロールはInternet Explorer以外のブラウザでは使われていませんので、ブラウザを使い分けることでonとoffを簡単に切り替えることもできます。

他にはセキュリティソフトを設定すると言う方法もあります。

高機能なセキュリティソフトには、Webページに含まれるスクリプトを遮断する設定を持ったものがあります。また、遮断する時にも一律にすべて遮断するのではなく、URLを見てサイトごとに遮断する・しないを制御することができるものもあります。

そのようなセキュリティソフトを使っているのであれば、そしてその設定ができるだけの知識・スキルがあるなら、信頼できるサイトのみスクリプトを実行するという細かい使い分けが可能になり、安全性と利便性を両立することも可能です。

JavaScript

最もoffにしにくい機能です。

あなたのインターネット利用形態によっては、offにすると事実上使い物にならなくなるかもしれません。

非常に多くのサイトで使用されており、特に通信販売のサイトやWebメールなど、セキュリティの必要なページではほぼすべてといっていいほど使用されています。

頻繁にonとoffを切り替えるようなインターフェースを持ったブラウザを使うか、ActiveXの項に書いたようにセキュリティソフトに制御する機能があればそれを使うのが現実的です。

どちらも難しければ、常にonでも仕方ないところかもしれません。

その場合は、「君子危うきに近寄らず」をお勧めします。(※2)

(※1)実際には画像も表示するためにはプログラム実行が必要です。しかし、さすがに画像を表示させないというのは極端で、利便性もかなり低下します。

よほどのことがない限り、そのような使い方に満足できる人はいないでしょう。

(※2)よく見かける「怪しいサイトにはアクセスしないようにしましょう。」という警告文がありますが、私はこれに疑問を感じています。

見るからに怪しいと感じるサイトにわざわざアクセスする人など、どれほどいるのでしょうか。ほとんどの場合、怪しいのにそれを感じることなく無警戒にアクセスするのではないでしょうか。

そして、怪しいということがわかるほどに経験を積んだ人は、対処するだけのスキルがあるので結局この警告は用をなしていないのではないかと思っています。

怪しさを感じるだけの経験やスキルのない人には、もっと具体的かつ客観的な怪しさの指標が必要です。

何が怪しくない安全なサイトなのかさっぱりわからないという人は、以下の条件を参考にしてください。

  • 自分もどこかで聞いたことがあるような社会的知名度の高い企業や組織のサイト。
  • 上記サイトから直接リンクされているサイト。
  • 検索エンジンで検索したら上位100位以内に名前の出てくるサイト。検索エンジン?何それ、おいしい?と思ってしまった人は、リンク集にある検索エンジンサイトを参考にしてください。
  • あなた自身、もしくはあなたの直接の知り合いが過去何度もアクセスして大丈夫だったという実績のあるサイト。

これさえ守っていれば絶対安全とまでは言いませんが、かなり安全なはずです。

この指標に異を唱えたいと思ったら、その時点で自分独自の基準で怪しいサイトが見分けられるようになったと思っていいでしょう。

参考文献

マルウェアおよびマルウェアへの対策に関して参考になりそうな文献を挙げておきます。

書名のリンクはアフィリエイトリンクになっています。クリックすると表紙の画像や価格などの詳細な情報が見られます。

ノートン・インターネット・セキュリティ設定活用ガイド

私の持っている少し古い本ですが、ノートン・インターネット・セキュリティ設定活用ガイドのp.172にはJavaScriptなどのアクティブスクリプトを遮断する設定についても書かれています。

スキルがあれば、多少古くても使えると思います。

私自身は購入していませんが、グレードアップに伴い、新しいものも出ているようです。

最終更新日:2007/11/18(日)