Webサイトで公開しているファイルと同じファイルをローカルでも保存している場合には、それらを比較して確認する(図5)。例えば、同名のファイルのサイズやハッシュ値を照合する。UNIX系OSのdiffコマンドや、Windowsのfcコマンドでも、ファイルの内容が同じかどうかを検証できる。
データベースを利用するWebページなら、データベースに格納しているデータもチェックしよう。「SQLインジェクション▼」と呼ばれる攻撃により、データベース内のデータを改ざんされている恐れがある(図6)。
▼SQLインジェクション SQLとは、データベースを操作するための言語。SQLインジェクションとは、Webページに対する入力パラメーターなどに不正なSQL文を挿し込み、開発者が意図していないSQL文をバックエンドのデータベースに対して実行するような不正行為。入力データをきちんとチェックしないWebアプリケーションの場合、入力された不正なSQL文をそのまま実行してしまい、データベース上のデータを消す、情報を取り出す、ウイルスをダウンロードさせるわなを埋め込む──などの攻撃が可能になる。
攻撃者はWebサイト(Webアプリケーション)経由で、悪質なSQLコマンドをデータベースに送り込み、Webページ(HTMLファイル)のテンプレートから呼び出すデータを改ざんしようとする。具体的には、ウイルスをダウンロードさせるスクリプトなどを埋め込む。これにより、このテンプレートを使って動的に生成されるWebページのすべてに、ウイルスのわなが埋め込まれるようにする。
権限のある人を説得
改ざんを確認できたら、Webサイトを停止する。とはいえ、担当者の一存では停止できないケースがほとんどだろう。経営陣の判断を仰ぐ必要がある。事態は一刻を争う。納得をしてもらうためには、Webサイトを運営し続けることのリスクを、ITの専門家でなくてもわかるように説明するのが重要だ(図7)。例えば、「100人以上にウイルスを配布しています」といった具合に、現在の被害状況を具体的に話す。
緊急時に慌てないように、Webサイトを停止する際のフローなどを平常時に決めておくのが不可欠。Webサイトを改ざんされることのリスクについても、日ごろから経営陣などに伝えておく。