SQLインジェクション攻撃の方法と対策

2021.07.06

Webセキュリティ

SQLインジェクション攻撃の方法と対策

SQLインジェクションをご存知でしょうか?SQLインジェクションは、Webサイトの運営者が留意し対策すべきサイバー攻撃のひとつです。ここではSQLインジェクションの概要とその対策について解説します。

目次

SQLインジェクションとは

SQLインジェクションの流れ

多くのWebアプリケーションはデータベースと繋がっています。ユーザーが入力した情報を元に、WebアプリケーションはSQL文を構成してWebサーバーやデータベースにアクセスし、その結果をユーザー側に返します。

 

SQLとはデータベース言語のひとつで、それぞれstructured(組立)、query(命令文)、language(言語)を意味しており、データベースを管理するソフトウェアの操作・制御を行います。また、ISO(国際標準化機構)によって規格が標準化されている、汎用性の高いデータベース言語です。

 

SQLインジェクションは、Webアプリケーションの脆弱性を悪用したサイバー攻撃です。Webページの入力フォームに想定外の情報が入力されると、入力値のチェックなどによりWebアプリケーションはその内容をエラーとして処理します。ところが、Webアプリケーションに脆弱性がある場合、想定外の入力値をエラーとして処理せずにそのままSQL文として認識することがあります。SQLインジェクションは、このエラーとして処理するべき情報をそのまま受け付けるという脆弱性を悪用して行われます。攻撃者は、Webアプリケーションへの情報入力の際に意図的にWebアプリケーションがSQL文の一部であると判断するような言語を入力(injection=注入)し、Webアプリケーション側は直接文字列連結処理を行うことでSQL文を合成します。そして、攻撃者はWebアプリケーションを通じてデータベースやWebサーバー内の情報の窃取、改ざんなどを行います。このような攻撃手法や、悪用される脆弱性をSQLインジェクションと言います。

SQLインジェクションの被害とは?

SQLインジェクションによって想定される主な被害は、情報の漏洩、データの消去や改ざん、Webサイトの改ざんなどです。データベースやサーバの中には企業の機密情報や取引先、顧客の個人情報が保存されています。例えばショッピングサイトであればクレジットカードのカード番号が代表的なものとして挙げられるでしょう。

 

SQLインジェクションによって、こうした個人情報などが攻撃者に削除される危険性があります。重要な情報が削除された場合、ビジネスの継続に支障をきたすかもしれません。また、重要情報を窃取されるようなケースも多発しています。窃取された情報が悪用されると、被害はさらに拡大し、莫大な金額の損害賠償に発展することも珍しくありません。さらに、企業のサーバを第三者に乗っ取られる被害も多く発生しています。

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

SQLインジェクションを防ぐ代表的な対策についてご紹介します。

1.安全なWebアプリケーションを開発する

安全なWebアプリケーションを開発することは、SQLインジェクション攻撃への根本的な解決策となります。

 

1-1 プレースホルダを利用する

 

SQLには通常、プレースホルダを用いてSQL文を組み立てる仕組みがあります。SQL文の雛形の中に変数の場所を示す記号(プレースホルダ)を置いて、後に、そこに実際の値を機械的な処理で割り当てるものです。Webアプリケーションで直接、文字列連結処理によってSQL文を組み立てる方法に比べて、プレースホルダでは、機械的な処理でSQL文が組み立てられるので、SQLインジェクションの脆弱性を解消できます。(IPA「安全なウェブサイトの作り方 – 1.1 SQLインジェクション」参照)

 

プレースホルダにクエリ内のパラメータの値だけを変更してクエリを実行できるプリペアドステートメント機能を利用します。プレースホルダに実際の値を割り当てる処理をバインドと呼びます。

 

1-2 エスケープ処理を行う

 

エスケープ処理では、検索バーや入力フォームなどSQLインジェクション攻撃を受けやすい機能を実装しているWebサイトに対して、特定の文字が普通の文字として解釈されるよう処理します。エスケープ処理を行うことで、SQLインジェクションを受けた際に、攻撃コードの中の特定の文字列や記号を削除したり置き換え、攻撃を無効化できます。エスケープ処理の実施には専門的な知識が必要ですが、その分高い効果を期待できます。

 

1-3 Webアプリケーションに渡されるパラメータにSQL文を直接指定しない

 

Webアプリケーションに渡されるパラメータにSQL文を直接指定する実装は、そのパラメータ値の改変により、データベースの不正利用につながる可能性があります。IPAが提供する「安全なウェブサイトの作り方 – 1.1 SQLインジェクション」では避けるべき実装として挙げられています。

2.データベースのアカウント権限を制限する

これは、もしもSQLインジェクション攻撃を受けた場合に被害をなるべく小さく抑えるための方法です。Webアプリケーションがデータベースと接続した際、アカウントの権限が必要以上に高ければ、それだけ被害も大きくなります。そこで、あらかじめWebアプリケーションからデータベースに送信できる命令文を特定して制限をかけます。そうすれば攻撃者が不正なSQL文を入力した場合でも、情報漏洩などの被害を抑えることができます。

3.脆弱性診断サービスを利用する

脆弱性診断サービスとは、攻撃者の視点からWebサイトやWebアプリケーションの脆弱性を調査してくれるサービスです。セキュリティ専門企業が実際に疑似的な攻撃を行うことで、WebサイトやWebアプリケーションにどの程度のセキュリティリスクがあるのかを調査します。

 

また、オープンソースのソフトウェアを利用して脆弱性診断を自ら行うことも可能ですが、ある程度の専門知識が必要です。ご自身で脆弱性診断を行うことに不安があるという場合は、セキュリティ専門企業が提供している脆弱性診断サービスを利用しましょう。診断方法にはツールによる診断と手動での診断があります。手動での診断は詳細なチェックを受けられますが、その分費用が高額となります。

WAFの導入もSQLインジェクション対策に効果的!

WAFとは?

SQLインジェクションからWebサイトやWebアプリケーションを守るために効果的な対策のひとつとしてWAFの導入が挙げられます。WAFは正式名称をWeb Application Firewall(ウェブアプリケーションファイアウォール)といい、Webアプリケーションに特化したセキュリティソリューションです。

 

同じようなセキュリティ対策としてIPS/IDSやファイアウォールがありますが、難読化された通信内容に対する検知精度が低く、SQLインジェクションへの対策としては十分ではありません。

WAFの仕組み

WAFは、アクセス自体が不正かどうかではなく、ユーザーからのリクエストに不正な操作を行う内容が含まれていないかを検査します。またWebサーバの前段に設置することで、本来なら流出しないはずのデータがユーザに返すレスポンスの中に含まれていないかを検査します。不正な通信内容の検出はアクセスパターンを定義したシグネチャを元にして行われます。そのため、シグネチャが常に最新のものに更新されているかどうかがWAFを運用する際の重要なポイントとなります。

クラウド型WAFなら費用を抑えて導入可能

WebサイトやWebアプリケーションの運営におけるWAF導入の必要性は以前から認知されていましたが、導入のためのコストが高いことや導入・運用に専門知識が必要なことから中小企業では導入が難しい状況が続いていました。

 

しかし、クラウド型のWAFサービスが登場したことにより、セキュリティに予算や人員を多くかけられない中小企業でもWAFを手軽に導入できるようになりました。クラウド型WAFは、サービスを提供するベンダー企業と契約することでWAFの導入が可能です。導入の際の手間が掛からず、導入後のシグネチャの更新などはベンダー企業が行うため、運用にセキュリティの専門知識は必要ありません。また、コストも初期費用が10万円程度、導入後も毎月数万円程度の契約料で利用できます。

SQLインジェクションからWebサイトを守るにはWAFの導入がおすすめ!

Webアプリケーションの脆弱性を悪用したサイバー攻撃のひとつであるSQLインジェクションは、IPS/IDSやファイアウォールといったセキュリティ対策では十分な対処ができません。SQLインジェクションを受けることで取引先や顧客の情報が流出してしまう危険性があります。プレースホルダの利用やエスケープ処理、アカウント権限の制限などによる安全なWebアプリケーションの開発はSQLインジェクションに対する根本的な解決策ではありますが、WAFの導入も含めた万全の対策を講じることは、企業の信用を守るために重要なのではないでしょうか。

クラウド型WAF「攻撃遮断くん」

SaaS型WAF 攻撃遮断くん Web Application Firewall
https://www.shadan-kun.com/

 

サイバーセキュリティクラウドが提供する「攻撃遮断くん」はWebサイト・Webサーバへのサイバー攻撃を可視化し、遮断するセキュリティサービスです。

 

ブルートフォースアタック、クロスサイトスクリプティング、Webスキャンと言ったサイバー攻撃をリアルタイムで検知・遮断しています。

 

ユーザーごとに提供される管理画面で、契約したWebサーバへの攻撃の情報を確認することができます。

 

(2020/02/20 執筆、2021/07/06 修正)

 

  • DDoS攻撃対策|導入社数、導入サイト数No.1|選ばれ続ける理由とは?クラウド型WAFでWebセキュリティ対策|今すぐ無料でダウンロード
  • 累計12,000サイトの導入実績 多数の事例から、導入までの経緯と抱えていた課題の解決方法をご紹介

この記事と一緒に読まれています