|
|
被害が続くSQLインジェクション攻撃,もう一度対策を見直そう
今週のSecurity Check 第202回
2008年3月11日,不特定多数のWebサイトに対する大規模なSQLインジェクション攻撃が発生した。本攻撃はターゲットとなるWebサイトのソースコードを改ざんし,攻撃者が用意した不正なWebサイトへのリンクを挿入するものである。セキュリティオペレーションセンター(SOC)でも,2008年3月11日〜13日の間に,このSQLインジェクション攻撃を試行する通信を多数検知した。今回の攻撃はIIS(Internet Information Services),Microsoft SQL Server,ASP(Active Server Pages)を利用するWebサイトを対象としたものだった。 大規模なSQLインジェクション攻撃は3月後半から4月後半にかけても度々発生しており,世界的な被害の発生が報告されている 。いずれも,攻撃の方法およびその対象は3月11日に発生したものと同様であり,引き続き注意が必要である。本稿では,発端となった攻撃について全体の流れを整理するとともに,WebサイトへのSQLインジェクション攻撃の対策について解説する。 不特定多数のサイトを一斉攻撃今回の攻撃の流れは図1のようになる。攻撃者はまず,不特定多数のWebサイトに対してSQLインジェクション攻撃を試行する。成功すると,ターゲットのWebサイトには不正なWebサイトのURLが挿入される。
SOCでは,図2のような文字列をHTTP POST要求として送信し,SQLサーバー上のテーブルを改ざんしていたことを確認している。
ユーザーは,改ざんされたWebサイトにアクセスすると,Webページに挿入されたURLにリダイレクト(転送)される。そして複数のぜい弱性を利用した,クライアントへのウイルスのダウンロードと感染が試行される。同時にクライアントのプラットフォームや使用言語などの情報が取得され,攻撃者が用意したサーバーへ送信される。 図2に示した文字列のうち赤字部分を見ると,攻撃用コードがCAST関数を使って隠ぺいされている。CAST関数とは明示的に文字列を変換する関数である。CAST関数の中に記述された数列をデコードすると,不正サイトのURLを挿入するコードが現れる(図3)。Webサイト側では,このコードをEXEC関数で実行する(動的プロシージャ実行)。ここまでの攻撃が成功するとデータベース内のテーブルが書き換えられ,その書き換えられた内容を基に動的にWebページが生成される。
連載新着記事一覧へ >>
|