SQLインジェクションの本当の恐怖
一般のWebサイトも攻撃されればマルウエアを配布する
SQLインジェクションのもう1つの目的は、マルウエアの配布/拡散目的である。その方法は、脆弱性のあるWebサイトを改ざんして、マルウエアをダウンロードするサイトへ一般の利用者を誘導する。そして、一般利用者のPCをマルウエアに感染させ、感染したPCを増やしていく。さらに感染したPCを踏み台としてSQLインジェクションの脆弱性のあるWebサイトを探し、次々と攻撃を仕掛けていく。
こうしてSQLインジェクションの攻撃に弱いWebサイトを次々と改ざんし、後でSQLインジェクションの脆弱性が見つかったWebサイトから個人情報を抜き取っていく。結局は、マルウエアの配布/拡散目的も金銭目的に帰着するものが多いだろう。
最近はマルウエアの配布/拡散方法として、USBメモリを経由する方法と並んで、Webサイトを経由する方法がトレンドになり、今後も継続して増えそうな勢いなので、十分に注意が必要である。
しかも攻撃対象Webサイトはいつも閲覧しているWebサイトであるケースが増えている。2008年12月にも「東京都障害者サービス情報」が改ざんされ、マルウエアを配布させられていた。怪しいWebサイトを閲覧しないから大丈夫、という考えは捨てなければならない状況にわれわれは追い込まれている。
SQLインジェクションはどのような影響を及ぼすのか?
では、次にSQLインジェクションの影響についてみていくことにしよう。SQLインジェクションによって引き起こされる問題はいくつか存在するが、その中でも代表的な問題は以下の通りだ。
・情報漏えい
・Webページの改ざん、Webサイトから送信するメールの改ざん
・バックドア作成
では、これらの問題がどれほど深刻なのかを説明しよう。
SQLインジェクションの脆弱性があるWebサイトでは、データベースに格納された情報が、開発者の意図に反してWebサイトから流出する可能性がある。大きく以下の2つの情報がある。
・個人情報や企業の機密情報など、その情報だけで換金できる情報
・ID・パスワードなどのシステム情報やデータベースを構成する情報などWebサイトを攻撃するための有用な情報
1つ目の「個人情報や企業の機密情報などの情報の漏えい」は、まさにSQLインジェクションにおける最大の脅威である。個人情報や企業の機密情報が流出することで、企業の信用は失墜する。流出先が特定でき、すべての流出先で情報を取得した者がそれ以上情報を拡散していないことが確認できた場合など、ごくわずかの例を除いて、一度流出した情報は一般的には回収が不可能である。
POSTやCookieで送信された内容のログや、データベースに発行されたSQL文そのもののログが取られていない場合、流出した情報の件数は正確に把握ができない場合が多い。そのため個人情報が流出した場合は、そのWebサイトが持つ個人情報の全個人に対して謝罪や補償を行わなければならないケースが増えている。
機密情報が漏えいした場合、その情報がライバル会社へ流れれば、企業存続の危機ともなりかねない。
2つ目の「システム情報やデータベース情報」が漏えいするとさらなる攻撃のきっかけとなる。
通常SQLインジェクションはある程度そのWebサイトやデータベースがどのように構築されているかという情報を元に行われる。正しい開発/運用が行われているWebサイトであれば、このような情報を収集することは難しいのであるが、SQLインジェクションの脆弱性を持ったサイトでは、それらの情報を収集できることが多い。
例えば、以下のような情報が収集できる。
・データベースアプリケーションの種類やバージョン
・データベースのテーブル構成などのデータベース構築内容
・システムコマンドが実行できるか否か
・HTML、プログラムやスクリプトなどの追加や改ざんができるか
これらの情報を元にして、攻撃者はSQLインジェクションだけでなく、ほかの攻撃を仕掛けてくる。