SQLインジェクションとは?対策や被害について解説します

SQLインジェクションとは?対策や被害について解説します

公開日
2023年10月30日

企業はその活動の中で、さまざまなWebアプリケーションとデータベースを使用しています。これらに攻撃を加え、データの改ざんや窃取を図るSQLインジェクションに対し、どのように対策するか検討している企業も多いのではないでしょうか。
この記事では、SQLインジェクションの仕組みやクロスサイトスクリプティングとの違い、対策、被害などについて解説します。

SQLは世界で最も普及しているデータベース言語

SQL(Structured Query Language)は、データベースを操作するための言語「データベース言語」のひとつです。世界中で使用されているデータベース言語であり、多種多様なデータベースで使用できます。データベースは膨大なデータを集めて、利用しやすいように整理した情報のかたまりです。SQLはそのようなデータベースを効率良く操作するための言語で、大量のデータから必要な情報だけを抽出したり、編集したりすることができます。また、SQLを使うことで以下のような操作も可能です。

<SQLで可能な操作>
・データの検索
・データの追加、更新、削除
・テーブルの作成
・テーブルの結合、削除
・ユーザ権限の付与

SQLインジェクションは脆弱性を悪用したデータベースへの攻撃

SQLインジェクションはデータベースへの攻撃です。データベースとつながったWebアプリケーションの脆弱性を悪用して、不正な操作を行うSQL文による指示を意図的に送り込むことで、データベース内のデータの消去や改ざん、窃取などを行います。

SQLインジェクションの仕組み

企業はIDとパスワードによる承認機能やデータの検索機能など、さまざまなシステムを利用しています。これらのシステムの多くはデータベースとつながっています。例えば、データベースの検索機能は、ユーザがWeb上の検索窓に情報を入力すると、その情報をもとにSQL文を構成してデータベースにアクセスし、結果をユーザに表示する仕組みです。通常、Web上の検索窓にはSQL文を入力されることは想定しておらず、万が一SQL文が検索窓に入力された場合は、エラーとして処理されます。

ところがWebアプリケーションに脆弱性があると、想定外にSQL文が入力されてもエラーとして処理されず、そのままSQL文と認識される場合があります。この脆弱性を悪用して、意図的にシステムがSQL文と誤認する入力を行い、データの改ざんや窃取、消去などを図るのがSQLインジェクションです。例えば、データの全消去を命令するSQL文だと認識される文字列を入力することで、データベース内のデータをすべて消去するといった攻撃があります。

クロスサイトスクリプティングとの違い

SQLインジェクションに似たサイバー攻撃に、クロスサイトスクリプティングが挙げられます。両者は、Webアプリケーションの脆弱性を狙う点では同じですが、SQLインジェクションは不正なSQL文でデータサーバにアクセスするのに対し、クロスサイトスクリプティングはHTMLに悪意のあるスクリプトを埋め込むことで、そのページを閲覧したユーザを攻撃します。

SQLインジェクションの被害

SQLインジェクションは企業にさまざまな被害をもたらします。ここでは4つの被害について解説します。

情報漏洩

SQLインジェクションの被害として、データベースからの情報漏洩が挙げられます。データベースに蓄積された個人情報やID・パスワードなどのデータが不正に持ち出され、漏洩させられてしまう可能性があります。被害規模も大きくなる可能性もあり、データベースに保存された全ユーザの情報が流出することもありえるでしょう。

マルウェア拡散の踏み台として悪用

SQLインジェクションの攻撃を受けた結果、被害を受けたパソコンなどをマルウェア拡散の踏み台として悪用されてしまう可能性があります。不正なSQL文を流し込むことで、データを登録することもできるので、マルウェアそのものをデータ登録したり、悪質なWebサイトを登録したりするなどの方法で、マルウェア拡散の踏み台として悪用される可能性があります。

データの改ざん

SQLインジェクションによって被害を受けると、データを改ざんされてしまう可能性がある点にも注意が必要です。データベースを利用してWebサイトが改ざんされ、企業の意図とは違う情報が発信されたり、悪意あるサイトへの誘導に使われたりすれば、業務の混乱や消費者からの信用の失墜、ブランドイメージの毀損などにつながります。また、SQLインジェクションによって漏洩した管理者のID・パスワードを使って、Webサイトそのものが書き換えられてしまうこともあります。

データベースの全消去

SQLインジェクションには、データベースが全消去されてしまうリスクもあります。SQLでは、データベース内のデータをすべて消去することも可能です。万が一、攻撃によって消去されてしまった場合には、バックアップを使ってすみやかに復元しないと、事業に大きな影響があるだけでなく、事業の継続が困難になることも考えられます。

SQLインジェクションへの対策

SQLインジェクションへの対策

SQLインジェクションの被害にあわないためには、しっかりした対策が必要になります。ここでは6つの対策を紹介します。

エスケープ処理・サニタイジングを実施する

SQLインジェクションへの基本的な対策として、エスケープ処理・サニタイジングの実施が挙げられます。エスケープ処理・サニタイジングとは、データ言語やプログラミング言語などで特別な意味を持つ文字や記号を、ルールに沿って別の文字列に置き換える処理です。この処理を実施していれば、攻撃者が不正なSQL文を送ってきても攻撃を無効化することが可能です。

入力値を制限する

入力値を制限することで、SQLインジェクションの対策が可能です。SQLインジェクションは特殊文字を使わないと攻撃できないため、フォームに入力できる文字列を英数字に限るなど、入力値を制限するのも有効な対策です。例えば、電話番号の入力ボックスなら半角英数しか入力できないようにしておく、郵便番号の入力は直接打ち込むのではなく選択式にするといった手法があります。

入力値を変数に格納する(プレースホルダの活用)

SQLインジェクションへの対策として、入力値を変数に格納することも効果的です。プレースホルダという仕組みを使い、ユーザから入力された文字列を直接に接続するのではなく、入力部分は「値」として処理されるようにしておくことで、不正なSQL文による攻撃を無効化できます。

データベースサーバのログを監視・解析する

データベースサーバのログの監視・解析も、SQLインジェクションへの対策といえるでしょう。データベースサーバに不審なSQL文が送信されていないかどうかを監視・解析することで、不正なSQL文による攻撃を検知できます。同時に、データベースサーバのユーザが行ったSQL文送信以外の操作ログを記録・監視・解析することで、付与された権限を越えてのシステムカタログ(データベースの管理システムが重要な情報を格納している場所)への攻撃を検知できます。

データベースのアカウント権限整理

データベースのアカウント権限を整理することも、SQLインジェクションへの対策として重要です。あらかじめ、Webアプリケーションからデータベースに送信できるSQL文についての権限を制限しておけば、SQLインジェクション攻撃を受けた場合の被害が小さくなります。

IPS(Intrusion Prevention System)や
WAF(Web Application Firewall)を導入する

IPS(Intrusion Prevention System)やWAF(Web Application Firewall)の導入も、SQLインジェクションへの対策になります。SQLインジェクション攻撃への対応は従来のファイアウォールでは難しいですが、ネットワークを流れるデータの中身をスキャンするDPI(Deep Packet Inspection)ができるIPSや、WAFなら防ぐことが可能です。

SQLインジェクション対策に「Trend Cloud One」の導入を

SQLインジェクション攻撃は企業に深刻な被害をもたらす可能性があるので、しっかりと対策をとっておくことが重要です。有効な対策はいろいろありますが、手軽に利用できて効果の高い対策として、ネットワークを流れるデータの中身をスキャンできるIPSやWAFの導入を検討すると良いでしょう。

トレンドマイクロのTrend Cloud Oneは、Webアプリケーションに対する侵入防御機能を備えており、SQLインジェクション攻撃やクロスサイトスクリプティング、その他のWebアプリケーションの脆弱性をつく攻撃に対し、高い防御効果を発揮します。

Trend Cloud Oneの侵入防御機能は、いわゆるIPSレイヤーが対応するOSやミドルウェアの脆弱性を利用した攻撃に対応するルールも提供しますが、Webアプリケーションの脆弱性を利用した攻撃に対応するルールも保有しています。管理コンソールから簡単な設定を行うだけで、手軽にSQLインジェクション対策が可能です。SQLインジェクション対策に効果を発揮し、企業に貢献するTrend Cloud Oneをぜひお試しください。

また、トレンドマイクロではセキュリティに関する記事やサービス紹介資料を多数公開しています。以下のページもぜひご覧ください。

監修

福田 俊介

福田 俊介

トレンドマイクロ株式会社 ビジネスマーケティング本部
ストラテジックマーケティンググループ
グループ長 シニアマネージャー

IPA 情報処理安全確保支援士(第000893号)、AWS Certified Solutions Architect – Professional保有。
約10年間クラウドセキュリティ領域およびエンドポイントセキュリティ領域に従事、クラウドの最新アーキテクチャに対応するセキュリティ戦略を立案、市場啓蒙を実施。これまでのセミナー登壇は100回を超える。専門領域は「クラウド」「サーバ」「仮想化」「コンテナ」「脆弱性」「EDR」「XDR」。

関連記事

新着記事