前回はWebの安全面を損なう要因に「ユーザーが意図していないプラグインの脆弱性」を挙げた。今回は、Webブラウザ本体にある問題点を解説する。
従来からよくある問題として「バッファオーバーフロー」を使ってマシンを乗っ取るという方法が挙げられる。プログラムには、作業用のデータ領域が設けられているが、この領域以上の不正データが処理されると、データ領域の先の領域まで書き込んでしまい、不正なプログラムなどが実行されることがバッファオーバーフローだ。また、最近ではiPhoneやPSPで「自作プログラム」を動かすために、バッファオーバーフローが利用されたケースもある(メーカーが対応を行なっている例1、2)。
バッファオーバーフロー攻撃は、規定外のデータを書き込むことをプログラムでチェックすることによって防げるほか、最近はCPUがデータ領域外に書き込もうとすると例外エラーを出す機構(NX-bit/XD-bit)がある。Windows XP SP2やWindows Vistaにおいては「Trustworthy Computing(信頼できるコンピューティング)」の方向性のもと、このような問題を排除するようなプログラム開発が行なわれているという。
実際、Windows XP SP2の登場以降にOSをターゲットにした大規模な攻撃事例は今のところ見当たらない。プログラムの問題は出てきているものの、現在は月1回の修正パッチ配布によって修正されていると考えられる。前回はそのような統一的なパッチの配布やプログラム製作ポリシーのないサードパーティ製プラグインの問題を取り上げた。
● 「表現力を高める」JavaScriptにも問題あり
|
「ブラウザクラッシャー」の画面イメージ。このようなかたちで画面が埋め尽くされる
|
では、現在のWebブラウザにおける問題はどこにあるだろうか? 筆者は「スクリプト言語」にまつわる問題があると考えている。
Webブラウザの表現力を高める動きは過去にも色々とあった。例えばAdobe Flashや、最近ならばMicrosoft Silverlightのようなアドインを使うものがあるだろう。これらはアドインゆえに「アドインを入れないと利用できない」という最大の問題がある。
一方、Webブラウザ標準の形式での機能拡張としてJavaScriptというスクリプト言語がある。Netscape Navigator 2.0やInternet Explorer3.0から搭載され、現在はECMAScript(ECMA-262 3rd edition)がベースとなっており一定の互換性が保たれている。ちょっとした作業から、Google Mapsのようにページ移動を伴わないで動的に画面が変化する「Webベースのアプリケーション」と呼べるものまで、現在JavaScriptは幅広く使われている。しかし、一方でJavaScriptの悪用もある。
JavaScriptを使った「イタズラ」として一番わかりやすいのは、ページを開いただけでパソコンを実質的に操作不能に陥れる「ブラウザクラッシャー」と呼ばれるものだ。この「ブラクラ」と呼ばれるページを作るのは非常にたやすく、新しい画面やメール送信画面を大量に開くだけで実現できる。この新しい画面やメール送信画面はJavaScriptを使えばすぐに作ることが可能だ。開いた途端に機能不全になるとすぐにバレるが、たとえば「ページを開いて1分後に発動」するようなページを作成し、長い文章をゆっくり読ませるという手も考えられる。
ブラクラは大量のウィンドウを開くため、パソコンの作業メモリが足らなくなることでマシンを不安定にしたり、ハングアップに陥れる。他に作業中の画面があった場合はこれが使えなくなるという実害も出るだろう。
また、ポップアップ広告に悪用されるケースもある。ページを開いただけで他のウィンドウに広告画面が表示されるポップアップ広告は、以前かなり使われていた。これもページを開いてすぐに出すよりも、ちょっと時間を置いたほうが“効果”がある。筆者は、ウィンドウを下に配置するポップアンダー広告(ウィンドウを閉じると下から広告ウィンドウが出てくる)でこのような使い方をした例を見たことがある。
さらにアダルト系サイトでは、広告ウィンドウを閉じると別のウィンドウが開くという悪質な広告を展開しているところもあった。これらはすべてJavaScriptを悪用しているケースだ。
● Web経由の不正プログラム感染を助長するツールが販売されている
ここまでは悪質ながらイタズラの範疇といえるだろうが、JavaScriptと前回説明したサードパーティプラグインの脆弱性を組み合わせると、Webを閲覧しただけで不正なプログラムを実行させられる恐れがあり、すでに問題になっている。
特に問題なのは「この手の攻撃ツールが販売されている」という点にある。MPackやIcePackなどという名で販売されているツールは、「普通のサイト」に一行コードを追加するだけで、JavaScriptと脆弱性を利用した不正なプログラムを実行可能にする。
「普通のサイト」そのものの動作にはほとんど影響がなく、ページの閲覧もそのまま行なえるので、ユーザーは不正プログラムが実行されていることに気づかないケースが多い。
なお、MPackやIcePackのケースでは管理者に把握されにくくするために、攻撃のためのスクリプトはサイト内に置いていない。攻撃側のサイトに誘導するためのコードを埋め込んでいる。
● 「JavaScriptを使用不能にすればよい」はムリがある
|
JavaScriptが必須となっているサイトもある。このように警告画面が出る作りのところはよいが「なぜか使えない」というサイトもあるのでNoScriptを使うなら注意したい
|
ユーザー側の対策方法としては「JavaScriptを使用不能にしておけばよいか?」というと、これは非常にムリがある。現在JavaScriptを使用しているサイトは非常に多いだけでなく、JavaScriptが使えないとまともに閲覧できないところも多いからだ。また、Webベースのアプリケーション(Ajaxとも呼ばれる)も、全面的にJavaScriptに依存しているため、JavaScriptを切ることは難しい。
「あなたのブラウザはJavaScriptが使えないので閲覧できません」と表示するならマシだが、そのチェックすら怠っているサイトもある。つまり状況に応じてON/OFFする仕組みが欲しくなる。
とはいえ、Internet Explorer(IE)でJavaScriptを無効にするための解決策には、やや弊害を伴う。IEは、ツールメニューのインターネットオプションにあるセキュリティタブから、Webコンテンツのゾーンを「インターネット/イントラネット/信頼するサイト/制限付きサイト」の4つに分類できる。(他の3つに該当しないものがインターネットゾーンに設定される)。
インターネットゾーンの詳細設定でスクリプトの利用を禁止しておき、問題がないサイトを「信頼するサイト」に入れることで、サイトによってJavaScriptのON/OFF設定ができる。しかし、この方法は「信頼するサイト」のドメインを毎回オプションから設定する必要があるので面倒くさい。
● 必要なサイトだけJavaScriptを利用可能にする「NoScript」
|
必要に応じてJavaScriptをドメイン単位でOn/Offできるのが「NoScript」だ。非設定なサイトが含まれると右下に設定ボタンが現われる
|
筆者が現在オススメできるのは、Webブラウザ「Firefox」に「NoScript」というプラグインを使う方法だ。Firefoxにはさまざまなプラグインが用意されており、好きなように組み合わせることができる。NoScriptは、Firefox公式サイトでも配布されている。
NoScriptの入手方法としては、Firefoxのメニューバーのツールメニューからアドオンを選択して右下の「新しい拡張機能を入手」のリンクを押すと、公式サイトのアドオンページが開く。プライバシー&セキュリティのカテゴリ内にNoScriptがあり、現在1.3.2が最新版だ。このバージョンではJavaScriptだけでなく、Java/Flash/Silverlightと幅広くブロックできる。ただし、NoScriptを使うのはやりすぎという人もいるし、ホワイトリスト形式なので、初期状態ではほとんどがブロックされてしまう。
IEにこのような仕組みがないのが残念だが、普段訪問しているサイトでどのぐらいJavaScriptが使われているかをFireFox+NoScriptで見てはどうだろうか? 初期設定では入っていないが「スクリプトをブロックしたときにサウンドで通知する」にチェックを入れれば、ありとあらゆるサイトで警告音が鳴り、さらに訪問しているサイトとは無関係と思われるドメインのスクリプトを実行しようとしていることもわかるだろう。
次回もスクリプトの話を続ける予定だ。
● 先週の気になったセキュリティ関連ニュース(2/4~2/10)
◆偽検索サイトが現われる。検索結果と一緒にマルウェアも送付 http://blog.trendmicro.com/another-italian-job-or-a-gooogle-job/
トロイの木馬を実行するとIEのスタートページが偽google(イタリア語版)となり、検索すると検索結果とともにmicrosoft-files.comというドメインにある「セキュリティパッチのような名前のファイル」も届けられる。検索サイトにつないでセキュリティパッチが届くという時点で疑うべき。
◆IPAが1月のウイルス届出状況を公表、「原田ウイルス」の被害に注意喚起 http://internet.watch.impress.co.jp/cda/news/2008/02/04/18337.html
報道があったため原田ウイルスの問い合わせが多く、注意喚起を行なっている。筆者は検体を入手したいのだがサイズの大きなファイルにまぎれているとのことで、入手していない。
◆米Yahoo! Jukeboxにゼロデイ攻撃発生 http://www.symantec.com/enterprise/security_response/weblog/2008/02/that_didnt_take_long_unpatched.html
米Yahoo! Jukeboxで使用しているActiveXに脆弱性があり、リモートで任意のコードが実行される恐れがあるという。このようなゼロデイ攻撃への対策としては、対策版が出るまで無効化かアンインストールをしなければならない。
◆「Adobe Reader 8.1.2」公開、脆弱性の修正を含むアップデート http://internet.watch.impress.co.jp/cda/news/2008/02/06/18377.html
安定性の向上と未公開の脆弱性の修正を行なう。アップデートはReaderを起動すればしばらくするとダイアログが表示されるが、「ヘルプ→アップデートの有無をチェック」ですぐに更新可能だ。
◆「脆弱性を修正した「Skype for Windows 3.6」公開 http://internet.watch.impress.co.jp/cda/news/2008/02/07/18382.html
1月末に発見されていたクロスサイトスクリプティングを許す脆弱性の修正のほか、新機能の追加も行なわれている。「ヘルプ→アップデートの確認」ですぐに更新可能だ。
◆脆弱性を修正した「QuickTime 7.4.1」公開 http://internet.watch.impress.co.jp/cda/news/2008/02/07/18384.html
QuickTime RTSPの処理にバッファオーバーフローの問題があったのを修正している。iPodユーザーも忘れずにアップデートしておきたい。
◆「脆弱性を修正した「Firefox 2.0.0.12」公開 http://internet.watch.impress.co.jp/cda/news/2008/02/08/18401.html
クリティカルな問題3件のほか合計10件のバグを修正した。利用者は速やかなアップグレードが望まれる。これも「ヘルプ→ソフトウェアの更新を確認」でアップデートできる。
◆13日のセキュリティパッチは7件が緊急 http://internet.watch.impress.co.jp/cda/news/2008/02/08/18401.html
13日はマイクロソフトの月例パッチ公開日だが、今月はクリティカルな問題が多いので、早急にパッチを適用したい。
◆「Windows Update」の偽サイトが現われる http://internet.watch.impress.co.jp/cda/news/2008/02/08/18404.html
一昨年ぐらいに「偽セキュリティソフト」が問題になり、最近も有名セキュリティベンダーの名を騙ったソフトが出ているが、この手の「押し売り」は大抵ウソと疑うべきだ。
2008/02/13 12:40
|
小林哲雄 中学合格で気を許して「マイコン」にのめりこんだのが人生の転機となり早ン十年のパソコン専業ライター。主にハードウェア全般が守備範囲だが、インターネットもWindows 3.1と黎明期から使っており、最近は「身近なセキュリティ」をテーマのひとつとしている。 |
- ページの先頭へ-
|