1. 情報セキュリティブログ ホーム
  2. 月イチIT総括
  3. SQLインジェクションと受動的(誘導型)攻撃

SQLインジェクションと受動的(誘導型)攻撃

Webブラウザ上で操作可能なWebアプリケーションの脆弱性を狙った、いわゆるSQLインジェクション攻撃が仕掛けられているというニュースが頻繁に報じられている。

特に、2008年の3月以降はこの傾向が顕著であり、独立行政法人 情報処理推進機構(IPA)も2008年5月のコンピュータウイルス・不正アクセスの届出状況の中で、SQLインジェクションによる不正アクセスが多発していると注意を呼びかけている。

コンピュータウイルス・不正アクセスの届出状況[5月分]について(IPAのサイト)

今回はこの、SQLインジェクションの攻撃が多様化、巧妙化してきている点に着目したい。端的にいうなら、その標的が「サーバーへの攻撃」から「サーバーを経由したユーザーへの攻撃」に変質しつつあるということである。


SQLインジェクションとは何か

SQLインジェクションとは、SQLを使って構築されたデータベースに対し、SQLで書いた命令文(コマンド)を使って不正にデータベースにアクセスする攻撃手法のこと。そのような不正なSQL文を素通りさせてしまう脆弱性を指すこともある。

SQLで構築されたデータベースと連携しているWebサイトでは、ユーザーが入力した内容に従って商品を価格順に表示させたり、ユーザーIDとパスワードを使ったログイン処理などを行っている。この時、データベース内の情報の操作に使用されるのがSQLの命令文である。

これを悪用し、例えば、サイトのURLなどにSQL文を挿入(=injection)することで、通常はアクセスできないデータベースのテーブルを出力したり、削除したりするのがSQLインジェクションの例だ。


サーバーへの直接攻撃は「能動的攻撃」

これまで、SQLインジェクション攻撃というと、悪意の犯罪者が企業のWebサーバーなどに不正にアクセスし、データベース内の機密情報を改ざんしたり、顧客情報などを盗んだりする事例が中心であった。

例えば2005年頃に盛んに報じられた、企業サイトを狙った不正アクセス事件においては、攻撃者の標的はWebサーバー(あるいはサーバーに格納されたデータ)である。

<当ブログ内の参考記事>
増加するウェブアプリケーションへの攻撃

このように、攻撃者が直接サーバーを攻撃するタイプの攻撃は「能動的攻撃」と分類されている。そして、従来のSQLインジェクション攻撃は「能動的攻撃」が主体であったのだ。


最近は受動的(誘導型)攻撃に悪用されるケースが多数

一方、最近の事例では、SQLインジェクション攻撃を受けたサーバー内の情報が改ざんされ、その結果、攻撃を受けたサイトは、攻撃者が用意した別の悪意のサイトへ閲覧したユーザーを誘導する仕掛けが埋め込まれるケースが多数見受けられている。

つまり、SQLインジェクション攻撃の直接の標的はサーバーであり、二次的にはそのサーバーと連携するWebサイトを閲覧するユーザーが標的となっている。

こうした「二次被害」をもたらす攻撃は、「受動的(誘導型)攻撃」と分類されている。つまり、攻撃を受けるユーザー側の行動を必要とするタイプであり、攻撃者が標的のサーバー上または連携するWebサイト上に“わな”を仕掛け、閲覧したユーザーに悪意のコードを実行させる。主にユーザーに被害を及ぼすことが攻撃の目的である。

第6回 SQLインジェクション攻撃、ターゲットは“あなた”です(@IT)

受動的攻撃に悪用される代表的なWebアプリケーションの脆弱性は、クロスサイトスクリプティング(XSS)や、クロスサイトリクエストフォージェリ(CSRF)などがある。SQLインジェクションを使ってWebページにXSSの攻撃コードを埋め込むといった事例だ。

これにより、ユーザーのPCのブラウザ上で攻撃コードが実行されるなどして、直接的に被害を受けるのは、サーバーではなくユーザーである点が特徴である。

こうしたSQLインジェクションを用いた攻撃を防ぐためには、Webアプリケーションの開発の際にきちんとした脆弱性対策を施すことが肝要だ。

また、Webサイト管理者側の対策としては、(1)Webサーバーの基本ソフト(OS)、インストールされているアプリケーションソフトのセキュリティ状態を常に最新に保つことで、脆弱性を解消しておく、(2)新たなサービスを公開する際には、事前に脆弱性検査を行い必要があれば修正しておく、といった対策が必要である。

  • 個人情報漏えいはUSBメモリ経由が増加
  • カテゴリートップへ
  • HTTPヘッダ・インジェクションとは