SQLインジェクション攻撃の仕組みとは?例と種類

Nov 23, 2021
6 minute read
ServerWatch のコンテンツおよび製品のおすすめは、編集上の独立性を保っています。パートナーへのリンクをクリックすると、当社が報酬を得る場合があります。 詳細を見る

SQLインジェクション(SQLi)攻撃は、今日、データの完全性と機密性に対する最も深刻な脅威の一つであり、攻撃者が権限のない安全なデータにアクセスすることを可能にします。本記事では、SQLiとその攻撃の仕組みを、種類や例とともに解説します。

SQLインジェクションとは?

SQLインジェクション(SQL挿入)は、SQLベースのアプリケーションの脆弱性を悪用する悪意のある攻撃手法です。SQLiでは、ハッカーがSQLクエリに任意のコードを挿入し、データベースに保存されたレコードを直接追加、変更、削除できるようにします。SQLi攻撃は、MySQL、SQL Server、Oracleなど、SQLデータベースを使用するあらゆるWebアプリケーションやWebサイトに影響を及ぼす可能性があります。

ハッカーはSQLクエリに任意のコードを挿入し、データベースに保存されたレコードを直接追加、変更、削除できるようにします。

SQLiに関する最初の公開討論は、1998年にJeff Forristalによって始まりました。ForristalはSQLiについてのインタビューで、「SQLの仕組みを完全に変えられる」と語っています。2017年には、Open Web Application Security Project(OWASP)が、脆弱なWebアプリケーションに対する最も一般的な脅威としてインジェクションを挙げました。

ハッカーはSQLi攻撃を利用して、個人情報、企業データ、顧客データ、企業秘密などの機密データに不正アクセスする可能性があります。SQLi攻撃によって、悪意のあるSQL文を実行し、Webアプリケーションの背後にあるデータベースサーバーを制御できるようになります。

攻撃者はSQLの脆弱性を利用してアプリケーションのセキュリティを回避し、Webアプリケーションの認可や認証を迂回して、データベース全体からデータを取得できます。

詳しく読む: 2022年版・SQL Serverの監視およびパフォーマンスツールのベスト

SQLインジェクション攻撃の仕組みとは?

SQL(Structured Query Language)は、リレーショナルデータベースに保存されたデータを管理するために設計された標準化プログラミング言語です。SQLi攻撃は、入力データを介してSQLクエリを注入または挿入するものです。SQLコマンドをデータプレーンの入力に挿入し、あらかじめ定義されたSQLコマンドの実行を攻撃します。

SQLi攻撃は、入力データを介してSQLクエリを注入または挿入するものです。

SQLi攻撃を実行するため、攻撃者はWebサイトやWebアプリケーション内の脆弱な入力箇所を探します。次に、SQLクエリ形式のユーザー入力を使って、この脆弱性を悪用します。攻撃者は、特別に細工したSQLコマンドをサイバー侵入として実行します。このコードによって、データベースの構造を明確に把握できる応答を取得し、データベースへの完全なアクセスが可能になります。

SQLiを使った攻撃は、データベースエンジンの種類によって異なりますが、すべてのSQLi攻撃は動的SQL文を標的にします。SQLiとその亜種は、扱いが難しい場合があります。

SQLiの一般的な亜種には、次のようなものがあります。

  • ユーザー入力ベースのSQLi
  • CookieベースのSQLi
  • HTTPヘッダーベースのSQLi
  • 二次SQLi

eSecurity Planetの関連記事: 2021年にSQLインジェクション攻撃を防ぐ方法

SQLインジェクション攻撃の例

SQLi攻撃は最も一般的な攻撃手法の一つであるため、多くの事例があります。以下に、SQLiを使った代表的な攻撃例を紹介します。

Advertisement

CIO Insightの関連記事: 組織が直面するサイバーセキュリティ脅威のトップ

SQLインジェクションの種類

SQLiは、バックエンドデータへのアクセス方法と、それによって生じる被害の可能性に基づいて分類できます。SQLインジェクションは通常、次の3つの主要カテゴリーに分類されます。

  • インバンドSQLi(クラシック)
  • 推論型SQLi(ブラインド)
  • アウト・オブ・バンドSQLi

インバンド(クラシック)SQLi

インバンド(クラシック)SQLiは、最も一般的なSQLi攻撃の種類の一つです。攻撃者は、攻撃の実行と結果の取得に同じ通信チャネルを使用します。インバンドSQLiには2つの亜種があります。

  • エラーベースSQLi:この手法では、データベースサーバーが返すエラーメッセージを利用して、データベース構造に関する情報を収集します。
  • ユニオンベースSQLi:この手法では、UNION SQL演算子を利用してSELECT文の結果を結合し、単一のHTTPレスポンスを取得します。攻撃者は、そのレスポンスのデータをさらに利用できます。

推論型(ブラインド)SQLi

推論型(ブラインド)SQLiは、サーバーの応答と動作パターンに依存するため、実行は通常より遅くなりますが、より大きな被害につながる可能性があります。攻撃者はサーバーにペイロードを送信し、その応答と動作を観察してデータベース構造を再構築します。推論型SQLiには2つの亜種があります。

  • ブールベースSQLi:攻撃者は、アプリケーションに結果を返させるSQLクエリをデータベースに送信します。その結果に基づいて、HTTPレスポンス内の情報が変更されるかどうかが決まります。
  • 時間ベースSQLi:この手法では、応答を返す前にデータベースを指定した時間(秒単位)だけ待機させるSQLクエリを送信します。応答時間によって、クエリの結果がTRUEかFALSEかを判定できます。

アウト・オブ・バンドSQLi

これはSQLi攻撃の中で最も一般的でない手法です。アウト・オブ・バンドSQLiでは、データベースサーバーにDNSまたはHTTPリクエストを実行させ、攻撃者にデータを送信します。この攻撃は、攻撃者が攻撃の実行と結果の取得に同じチャネルを使えない場合に発生します。アウト・オブ・バンドSQLiは、特にサーバーの応答が安定しない場合に、推論型の時間ベース手法に代わる手段となります。

アウト・オブ・バンドSQLiは、特にサーバーの応答が安定しない場合に、推論型の時間ベース手法に代わる手段となります。

あらゆる組織は、SQLi攻撃から貴重な情報を守ることに注力する必要があります。こうした脆弱性を検査するための自動検出ツールは数多く存在します。データを中心とした戦略を含む多層的なアプローチは、SQLi攻撃に対する最適な防御策になり得ます。これは、アプリケーションやネットワークだけでなく、データ自体の保護にも重点を置くものです。

次に読む: SQLパフォーマンスチューニングのベストプラクティス

Al Mahmud Al Mamun

Al Mahmud Al Mamun is a writer for TechnologyAdvice. He earned his BSc in Computer Science and Engineering from Prime University, Bangladesh. He attained more than twenty-five diploma courses and a hundred certificate courses. His expertise and research interests include Artificial Intelligence, Artificial Neural Networks, Convolutional Neural Networks, Intelligent Transportation Systems, Information Technology, Computer Vision, Psychology, and Astronomy.

ServerWatch Logo

ServerWatch is a top resource on servers. Explore the latest news, reviews and guides for server administrators now.

TechnologyAdvice が所有・運営しています。 © 2026 TechnologyAdvice. 無断転載を禁じます

広告主に関する開示:このサイトに掲載されている製品の一部は、TechnologyAdvice が報酬を受け取っている企業のものです。この報酬は、製品がこのサイトのどこにどのように表示されるか(表示される順序など)に影響する場合があります。TechnologyAdvice は、市場で入手可能なすべての企業やすべての種類の製品を掲載しているわけではありません。