とある企業の情報システム部門。頼りなかった若手社員の通称「ネコSE」も、セキュリティーに関する豊富な知識と経験を持つ「センパイ」のおかげで、少しずつ成長してきた。セキュリティー対策を極めるには、攻撃の具体的な手口を知ることも重要だ。今回は、データベースの情報を一気に盗み出すSQLインジェクションについて見ていこう。

ネコSE:センパイ、動いているシステムから派手にデータを盗み出すにはどうしたらいいですか。

センパイ::怖いことを言うなあ。

ネコSE:攻撃者の手口を知らないと、守るものも守れません。

センパイ::それは私がいつも言ってることじゃないか。まあいい。とびっきり危険な攻撃手法を教えてあげよう。

ネコSE:やったー。

センパイ::情報を扱いやすく整理した集まりを「データベース」と呼ぶ。DBと略すこともあるね。データベースを専門に扱うサーバーがDBサーバーだ。

ネコSE:何でいきなりそんな話をするんですか?

センパイ::データベースは情報を扱いやすいように集めたものだ。攻撃者にしてみればどうだろう。

ネコSE:あ、宝の山だ!

センパイ::例えば、インターネットの通販サイトでは、お客さんのリストや購入履歴などの情報がDBサーバーに収められている。

ネコSE:Webサーバーだけじゃないんですね。

センパイ::普通は、お客さんとやりとりするのはWebサーバーで、お客さんからはDBサーバーに直接アクセスできない。お客さんの操作に従って、WebサーバーがDBサーバーを参照する感じだ。

ネコSE:なるほど。

センパイ::例えば、ユーザーが通販サイトにログイン情報を送ると、WebサーバーがDBサーバーに照会する。ユーザー名とパスワードの組み合わせが正しければログインできる(図1)。

図1●正常なログインの流れ
名前が「nekose」かつパスワードが「pw002」のユーザーがいればログインを許可し、該当するユーザーの情報を返す。
[画像のクリックで拡大表示]

ネコSE:問題ないですね。

センパイ::ところが、Webサーバーをだまして、DBサーバーの情報をごっそり盗み出す、という攻撃手法がある。これがSQLインジェクションだ。

ネコSE:まさにそういうのをやってみたかったんです!

▼SQL
以前は、StructuredQuery Languageの略とされていたが、現在は略語ではないと定義されている。

この先は有料会員の登録が必要です。「日経NETWORK」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら