【活用ガイド】

JVNDB-2016-009749

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

概要

日本国内のウェブサイトにおける 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 インジェクション対策で防ぐことが可能です。
CVSS による深刻度 (CVSS とは?)

影響を受けるシステム

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

(複数のベンダ)
  • (複数の製品)

想定される影響

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

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

 * ウェブアプリケーション開発にバインド機構を使用する
情報処理推進機構 (IPA) が発行する安全な SQL の呼び出し方には、次のように記載されています。
静的プレースホルダでは、SQL 文の構文がバインド前に確定することから、プレースホルダに渡す文字列はクォートして記述する必要がありません。そのため、シングルクォートのエスケープ処理も必要ありません。また、数値リテラルもそのまま適切にバインドされます。
このことから、セキュリティの観点で、静的プレースホルダは最も安全です。静的プレースホルダでは、SQL を準備する段階でSQL文の構文が確定し、後から SQL 構文が変化することがないため、パラメータの値がリテラルの外にはみ出す現象が起きません。その結果として、SQL インジェクションの脆弱性が生じません。

 * データベースのユーザ権限を最小限に設定する
SQL 文を実行するデータベースのユーザ権限を必要最小限に設定してください。ユーザ権限を最小限にすることで、SQL インジェクション攻撃を受けても被害を抑えられる可能性があります。

 * SQL インジェクションのテストを実施する
SQL インジェクションのテストを実施して、意図しない SQL 文が外部から実行されないことを確認してください。また、最小限の権限で動作することを確認してください。

[ウェブサイト管理者向けの対策]
 * データベースのユーザ権限を最小限に設定する
ウェブサイトで動作するウェブアプリケーションのデータベースのユーザ権限を、必要最小限に設定してください。管理者がウェブアプリケーションの権限を変更できない場合は、ウェブアプリケーションの開発者に変更を依頼してください。ユーザ権限を最小限にすることで、SQL インジェクション攻撃を受けても被害を抑えられる可能性があります。

 * ウェブサイトにおける脆弱性の有無を調査する
脆弱性診断ツールを使用したり、セキュリティベンダに依頼したりすることで、ウェブサイトに SQL インジェクションの脆弱性がないかを確認してください。脆弱性を検出した場合は、ウェブアプリケーションの開発者に修正を依頼してください。

 * アップデートする
ウェブアプリケーションを、対策済みのバージョンにアップデートしてください。

 * 製品のサポート期限を確認する
パッケージ販売されているウェブアプリケーション製品を使っているユーザは、製品の開発が既に終了していたりサポート期限が切れていたりする場合には、製品を別の製品に置き換えることを検討してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

共通脆弱性識別子(CVE)  CVEとは?

参考情報

  1. JVN : JVNTA#99929369
  2. 関連文書 : 安全な SQL の呼び出し方
  3. 関連文書 : ウェブサイトの攻撃兆候検出ツール iLogScanner
  4. 関連文書 : SQL Injection
  5. 関連文書 : sqlmap: automatic SQL injection and database takeover tool
更新履歴

  • [2024年09月11日]
      掲載