連載
» 2008年06月27日 00時00分 公開

SQLインジェクション攻撃、ターゲットは“あなた”ですもいちどイチから! HTTP基礎訓練中(6)(2/3 ページ)

[杉山俊春,株式会社ユービーセキュア]

ところでそれは誰に対する攻撃?

ナツ 「じゃあ、基本のところからで、“サーバに対する攻撃”と“ユーザーに対する攻撃”あたりの話からにしようか」

クウ 「おお……。基本的なところからだとうれしいっす」

ナツ 「Webアプリに対する攻撃はー……」

 Webアプリケーションに対する攻撃は、2つのタイプに大きく分類できる。

1.能動的攻撃(Webサーバに対する直接的攻撃)
攻撃者が直接ターゲットのサーバに対してコードを挿入し、主にサーバの情報を取得・改ざんしたり、不正利用することが目的。

  • 代表的な被害の例:
    認証回避、大量の個人情報漏えい、購入価格の改ざんなど

2.受動的(誘導型)攻撃(ユーザーに対する間接的攻撃):
攻撃者が対象サーバ上または外部サイト上にわなを仕掛け、ユーザーに攻撃コードの実行を強要する。主にユーザーに被害を及ぼすことが目的。

  • 代表的な被害の例:
    Webページの改ざん(認証状態の奪取、ユーザーの事実誤認)、登録情報や日記などの意図しない追加・書き換えなど

 Webアプリケーションへの能動的攻撃では、Webサーバ上の制限の回避を行ったり、Webサーバのリソースを不正に利用したりする攻撃が主になる。

 例として、脆弱性がある個所で、ショッピングサイトで価格を改ざんするなどの攻撃や、改行コードなどを利用してWebアプリケーションから送信されるメールのヘッダを改ざんし、スパムメールなどを送信するなどの攻撃が挙げられる。また、SQLインジェクションによって一度に大量の情報漏えいをもたらすなどの攻撃は能動的攻撃の脆弱性に分類される。

 これらの攻撃は、攻撃者が直接サーバを操作し被害が発生する攻撃であり、攻撃者の攻撃コードをWebサーバが処理した時点、または、Webサーバが処理した結果を攻撃者が確認した時点で攻撃が完了する。

図2 能動的攻撃のイメージ 図2 能動的攻撃のイメージ

クウ 「ふむふむ。能動的攻撃っすね。こういうのはイメージしやすいですねぇ。攻撃してるぞ! って感じで」

ナツ 「よくSQLインジェクションで情報漏えい! とかいわれてるのは、この能動的攻撃だね。Webページ改ざんとかは受動的攻撃で、SQLインジェクションを使ってクロスサイトスクリプティングの攻撃コードを埋め込むとかかな」

ハル 「なっちゃーん。準備できたからミーティング始めるよー」

ナツ 「お。早いねぇ。りょうかーい。……んー、ごめん。ちょっと呼ばれちゃったから続きはまた今度ね」

クウ 「うう……。そうっすか……残念」

能動的の反対? 受動的攻撃とは

 ナツさんのミーティングが始まってしまったので、受動的攻撃についてはまた明日ということになった。しかしクウはすぐに知りたいと思い、家へ帰ってから詳しく調べることにした。調べ物を始めようとブラウザを立ち上げようとしたとき、メッセンジャーが反応した。

                  @IT messenger v2.0(beta)

ジュン おつかれー。

クウ おおー


ジュン ひさしぶりー


クウ おひさしぶりっす! 最近Webページ改ざんしまくってる人たちがいるみたいですねぇ。怖いっす


ジュン だねー。彼ら懲りずにまた活発に活動してるみたいだね。

クウ 「彼ら」って知ってるんですか?

ジュン 手口的に、前にもやってた人たちと一緒じゃないかな。

クウ なんであんなんするんすかねー。

ジュン 単に面白いからじゃないかなぁー。よく分かんないけど。

クウ そうそう、それで、会社の先輩にどういうことが起きてるのか聞いてみたのですけど、いまいち分からんのですよね


ジュン ほう。どんなことー?

クウ 能動的攻撃と、受動的攻撃がどうとか教えてもらってたんですけど、能動的攻撃を教えてもらったとこで終わっちゃってー。

ジュン で、受動的攻撃ってどんなだ? って話だね。

クウ そうですそうです。


 Webアプリケーションでの受動的攻撃では、攻撃者があらかじめWebアプリケーションに受動的攻撃に利用できる脆弱性がないかを調査する。脆弱性がある場合、それを悪用するための攻撃コードを用意し、“ユーザーに対し攻撃コードを実行(または送信)する”ように仕向ける(図3)。

図3 受動的攻撃の行動イメージ 図3 受動的攻撃の行動イメージ

 受動的攻撃に利用される代表的な脆弱性は、クロスサイトスクリプティングや、クロスサイトリクエストフォージェリ(CSRF)などである。例えばクロスサイトスクリプティングでは、図3でのA−6、B−7の「機密情報の送信」まで行ったり、CSRFであれば、B−4の「不十分な処理」まで行き着くことで攻撃として成立する(図に記載の被害例以外にも発生し得る被害は存在する)。

 この受動的タイプの攻撃の場合、Webアプリケーションに対する攻撃が成立しただけ(成立することを確認しただけ)では、どこにも被害が出ない場合が多い。

 例えば、クロスサイトスクリプティングでWebページを改ざんする場合、表示の偽装や不正なJavaScriptを埋め込むなどの手法が取られるが、これだけでは致命的な被害とはならない。ユーザーが改ざんされた情報を閲覧してしまったり、ユーザーのブラウザ上で攻撃コードが実行されたりした段階で攻撃として成立する。このとき、直接的に被害を受けるのは、サーバではなくユーザーとなる。

                  @IT messenger v2.0(beta)

クウ ユーザーが閲覧すると、攻撃が成立するのですかー。 けど、それなら、わざわざどこかのサーバでやるより攻撃者が自分でサーバ用意した方が手っ取り早くないですか?


ジュン んー。それはちょっと違うんだなー。それでできることもあるけど、ターゲットになるサーバ上でやることが意味ある場合が結構あるんだよね



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。