公開日:2016/03/15 最終更新日:2016/03/18

JVNTA#99929369
国内のウェブサイトに SQL インジェクションの脆弱性

概要

日本国内のウェブサイトにおける SQL インジェクションの脆弱性が、国内外から JPCERT/CC に複数報告されています。

影響を受けるシステム

  • ウェブサイトで動作するウェブアプリケーション

詳細情報

日本国内のウェブサイトにおける SQL インジェクションの脆弱性が、国内外から JPCERT/CC に複数報告されています。

オー プンソースの SQL インジェクション脆弱性診断ツール sqlmap を使用して、日本国内のウェブサイトで動作するウェブアプリケーションの脆弱性を検出しようとする海外からのアクセスが発生しています。こうしたアクセスは組織規模の大小によらず、中小企業や個人のウェブサイトに対しても行われています。SQL インジェクションの脆弱性が存在するウェブサイトでは、ユーザや開発者の意図しない SQL 文が実行され、様々な影響を受ける可能性があります。

sqlmap は、おもに次の 5つの手法を使用します。

  • Boolean-based blind
    WHERE 句、HAVING句の真偽値を使用して情報を取得する
  • Time-based blind
    データベース側の応答時間差により情報を取得する
  • Error-based
    データベース側からのエラー応答から情報を取得する
  • UNION query-based
    別々のテーブルの検索結果を結合するクエリを使用して情報を取得する
  • Stacked queries
    1回のトランザクションで複数のクエリを実行させる
これらの手法による攻撃は、静的プレースホルダを使用するなど、通常の SQL インジェクション対策で防ぐことが可能です。

想定される影響

認証回避、任意のプログラム実行、情報漏えい、ウェブサイトの改ざんなど、ウェブアプリケーションが動作するサーバが深刻な影響を受ける可能性があります。

対策方法

ウェブアプリケーション開発者向けの対策

  • ウェブアプリケーション開発にバインド機構を使用する
    情報処理推進機構 (IPA) が発行する安全な SQL の呼び出し方には、次のように記載されています。
    静的プレースホルダでは、SQL 文の構文がバインド前に確定することから、プレースホルダに渡す文字列はクォートして記述する必要がありません。そのため、シングルクォートのエスケープ処理も必要ありません。また、数値リテラルもそのまま適切にバインドされます。
    このことから、セキュリティの観点で、静的プレースホルダは最も安全です。静的プレースホルダでは、SQLを準備する段階でSQL文の構文が確定し、後からSQL構文が変化することがないため、パラメータの値がリテラルの外にはみ出す現象が起きません。その結果として、SQL インジェクションの脆弱性が生じません。
  • データベースのユーザ権限を最小限に設定する
    SQL 文を実行するデータベースのユーザ権限を必要最小限に設定してください。ユーザ権限を最小限にすることで、SQL インジェクション攻撃を受けても被害を抑えられる可能性があります。
  • SQL インジェクションのテストを実施する
    SQL インジェクションのテストを実施して、意図しない SQL 文が外部から実行されないことを確認してください。また、最小限の権限で動作することを確認してください。
ウェブサイト管理者向けの対策
  • データベースのユーザ権限を最小限に設定する
    ウェブサイトで動作するウェブアプリケーションのデータベースのユーザ権限を、必要最小限に設定してください。管理者がウェブアプリケーションの権限を変更できない場合は、ウェブアプリケーションの開発者に変更を依頼してください。ユーザ権限を最小限にすることで、SQL インジェクション攻撃を受けても被害を抑えられる可能性があります。
  • ウェブサイトにおける脆弱性の有無を調査する
    脆弱性診断ツールを使用したり、セキュリティベンダに依頼したりすることで、ウェブサイトに SQL インジェクションの脆弱性がないかを確認してください。脆弱性を検出した場合は、ウェブアプリケーションの開発者に修正を依頼してください。
  • アップデートする
    ウェブアプリケーションを、対策済みのバージョンにアップデートしてください。
  • 製品のサポート期限を確認する
    パッケージ販売されているウェブアプリケーション製品を使っているユーザは、製品の開発が既に終了していたりサポート期限が切れていたりする場合には、製品を別の製品に置き換えることを検討してください。

ベンダ情報

参考情報

  1. 情報処理推進機構 (IPA)
    安全な SQL の呼び出し方
  2. 情報処理推進機構 (IPA)
    ウェブサイトの攻撃兆候検出ツール iLogScanner
  3. OWASP
    SQL Injection
  4. sqlmap.org
    sqlmap: automatic SQL injection and database takeover tool

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia

更新履歴

2016/03/18
詳細情報、参考情報を更新しました。