[画像のクリックで拡大表示]

 「JavaScriptを使えば外部からイントラネットへの攻撃が可能になる」。東京で開催されたセキュリティ関連のイベント「Black Hat Japan 2006 Briefings」で2006年10月5日,米WhiteHat Securityの設立者であり,同社の最高技術責任者(CTO)であるJeremiah Grossman氏は,外部からイントラネット内の機器をハッキングするデモを行った。JavaScriptがオンになっていれば,イントラネット内といえどももはや安全ではないことを示すショッキングなデモとなった。

 Grossman氏によると,攻撃者がWebページでJavaScriptを動作させるにはいくつかの方法があるという。「Webページのオーナーが意図的にJavaScriptを埋め込む」「クロスサイトスクリプティングのぜい弱性を利用する」「攻撃用のリンクを作成し,電子メールやインスタント・メッセンジャなどで送る」といった方法である。こうしていったんユーザーにJavaScriptを実行させることができてしまえば,攻撃者は好きなことができてしまう。

 JavaScriptを悪用した攻撃のデモでは,Grossman氏はステップを踏んで最終的に外部からイントラネット内の機器の設定を変えてしまうところまでを示した。同氏はまず,ユーザーがどんなWebブラウザを使っているかを知る方法を紹介。次に,ユーザーのアクセス履歴も取得できることを示した。Javaアプレットを併用することにより,イントラネット内のパソコンが持つプライベートIPアドレスも割り出してみせた。

 次に行ったのが,イントラネット内のどのアドレスにWebサーバーが存在するかを割り出すデモである。Grossman氏はこれを「JavaScriptポート・スキャニング」と呼んだ。具体的には,scriptタグのsrc属性を使えば任意のURLにアクセスできることを悪用する。イントラネット内のアドレスに順番にアクセスしていき,エラーが返ってきたらWebサーバーが存在することの証になる。このやり方ではポート80番(http)と443番(https)に対するスキャンしか行えないが,Webサーバーを発見するという用途には十分である。

 Webサーバーがあれば,プリンタやDSLルーターといった機器のWeb設定用のものである可能性がある。そこでデバイスの識別を行う。ロゴの画像データのURLといった,攻撃者があらかじめ知っていたユニークなURLにアクセスできれば,機器も特定できてしまう。

 これで準備はおわりである。次にGrossman氏は,JavaScriptによりブラウザを乗っ取って自由に操作できるようにした。攻撃者が用意したフルスクリーンのiframeをWebページとして表示することで,ユーザーの操作をすべてサーバーに送ることができる。これで例えば,Webアプリケーションへのログイン時のキーストロークもモニタリングできるようになった。

 いよいよイントラネット上にある機器のハッキングだ。DSLルーターには本体にユーザー名やパスワードが書いてあることがあり,機器によってはパスワードが設定されていないことすらある。ユーザーがそのままの状態で利用していれば,それらのユーザー名/パスワードで設定画面に侵入できる。デモでは,DSLルーターのDMZの設定を変更して,セキュリティを無効にする方法を披露した。また,プリンタをハッキングすれば,プリンタの名前を勝手に変えたり,設定用のWebページにクロスサイト・スクリプティングのぜい弱性を埋め込むといった攻撃も可能だという。

 Grossman氏は「ネットワークのセキュリティとWebのセキュリティは別物だ」と強調する。ネットワークのセキュリティはだいたい自動化できるが,Webのセキュリティで自動化できるのは半分程度で,半分は専門知識をもったうえでマニュアルで行う必要があるという。同氏は,JavaScriptを使った攻撃から自分を守る方法として,以下の三つを提案した。

  1. 長いリンクには気を付ける。安易にクリックするのではなく,まずドメイン名を手で入力してログインするといった手順を踏む
  2. IEがターゲットになることが多いのでFirefoxなどの別のブラウザを使う(ただし,あくまでぜい弱性は変わらない)。Firefoxの拡張機能では「Stanford SafeHistory」「NoScript」「Netcraft Toolbar」が有用
  3. 安全かどうかの確信が持てないときにはJavaScriptを無効にする