SQLインジェクションとは?仕組みと対策方法を解説

 2020.05.18  2024.08.14

私たちは日頃からインターネットを通じて、Webアプリケーションやサービスを利用し、その恩恵を受けています。その一方でWebサイトの改ざんや情報漏えいといった事件・事故が後を絶たないという実情もあり、Webサイトの運営者はセキュリティに対する正しい知識を身に付ける必要があります。

本稿では、データベースを不正に操作することで機密情報の窃取などを行うSQLインジェクションについて解説します。安心・安全なWebサイトを運営するために様々な攻撃手法についての知識を身に付けるようにしましょう。

データベースとSQL

情報化社会の中、企業はなんらかのかたちでWebサイトを活用することが当たり前となり、Webサイトはビジネスの成長に欠かせない存在となっています。Webの利用者である私たちが日頃から利用している検索サービスやオンラインショッピングなどでは、データベース(Database)が活用されており、重要な役割を果たしています。

データベースは、検索や追加、更新、削除などを容易にし、かつ再利用可能な情報の集まりを指します。略して「DB」とも呼ばれます。データの基地といった意味合いから書類として纏められた電話帳などもデータベースと呼べますが、コンピュータシステムで実現された情報の集まりを指すことが多くなっています。

データベース

Microsoft社のExcelで作成され、条件抽出などが行える顧客リストなども立派なデータベースであり、AccessのようにMicrosoft Windows向けのデータベースの管理を目的とした専用ソフトウェアもあります。

先述の検索サービスやオンラインショッピングなどにおける情報の活用では、データベース管理システムが活用されており、膨大な情報の中から目的の情報を探し出したり、必要なときにその情報を使用したり更新できるようになっています。

SQLとは、データベース言語で最も普及している言語の一つです。データベース管理システムに対して、情報の検索(SELECT文)や追加(INSERT文)、更新(UPDATE文)、削除(DELETE文)といった命令をすることで、データベース上の情報を活用します。

Webを通じた私たち利用者からの入力(要求)に応じて情報を引き出したり、編集するためにデータベースが活用されており、さまざまなサービスを提供するWebアプリケーションが私たちの日常生活に欠かせない存在となっているのです。

【解説】Webセキュリティ ~Webサイトを取り巻く脅威と対策~

【解説】Webセキュリティ ~Webサイトを取り巻く脅威と対策~

安心・安全なWebサイトの運営に欠かせない脆弱性対策、WAFによる対策について解説します。

詳細はこちら

SQLインジェクションとは

先ほど、データベースの操作はSQLによって行うという話をしました。セキュリティを考えたときに、この時点で「不正にデータベースを操作されたらどうなるのだろうか?」とお気付きの方もいらっしゃるかもしれません。

そうです、意図していない情報の検索や更新が生じると、機密情報が漏えいしたり、改ざんされるといった事態に陥る恐れがあります。

インジェクションは「注入」を意味し、外部からSQL文を含んだリクエストを送信して不正にデータベースを操作する攻撃、またはその脆弱性がSQLインジェクションです。SQLインジェクションは、Webアプリケーションの実装の不備を悪用し、アプリケーションが想定しないSQL文を実行させることでデータベースを不正に操作するのです。

データベースを直接操作されてしまうことから大規模な情報漏えいにつながる可能性があるなど、対策を怠るととても深刻な被害を受ける恐れがあります。

SQLインジェクション
  • データベースの情報が攻撃者によって盗まれる
  • データベースの情報が攻撃者によって改ざんされる
  • 攻撃者によって会員サイト等の認証を回避される など

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

「SQL(Structured Query Language)」は、データベースの定義や操作を行うためのデータベース言語です。ECサイトや会員制Webサイトでは、RDBMS(関係データベース管理システム)を使用して、データベースを構築し、会員情報等のデータを記録します。登録したデータは、必要に応じていつでも使用できます。

SQLインジェクションは、Webアプリケーションのセキュリティ上の不備、つまり脆弱性を意図的に悪用し、アプリケーションが想定しないSQL文を実行させることで、データベースを不正に操作する攻撃のことです。

ユーザーIDやパスワードを入力するフォームに不正にデータベースを操作するSQL文を入力することで、認証を回避されたり、会員情報等が窃取されるなど、深刻な被害を受ける恐れがあります。

関連動画:攻撃デモ~WAFによる防御(SQLインジェクション攻撃) 

SQLインジェクションによる被害事例

被害事例① テーマパーク運営会社のサイトから会員情報4万6千件以上が流出

2021年6月、テーマパーク運営を事業とするS社は、同社のウェブサイトへの不正アクセスにより、会員制サービスに登録されている会員情報4万6,421件が流出した可能性があることを発表しました。SQLインジェクションによる外部からの不正アクセスであるとみられ、調査の結果、メールアドレスのみが、情報流出の対象であることがわかりました。

被害事例② スニーカーフリマサイトから会員情報275万件以上が流出

2022年6月、スニーカーフリマサイトへの不正アクセスにより、会員情報275万件の情報漏えいの可能性が判明したと発表しました。SQLインジェクションによる不正アクセスとされ、氏名、生年月日、メールアドレス、住所、電話番号、購入情報、口座情報、パスワードが窃取された可能性があるとしています。同社ではWAF(Web Application Firewall)の導入のほか脆弱性診断などの再発防止策を行ったと発表しています。

被害事例③ 建築関連会社の会員制サイトから個人員情報29万件以上が流出

2024年5月、建築関連会社のS社は同社の会員制サイトへ不正アクセスにより、会員情報10万件、従業員情報18万件が漏えいしたことを発表しました。このほかにも漏えいの可能性がある会員情報が約46万件、従業員情報7万件と発表しています。SQLインジェクションによる不正アクセスが原因とされ、メールアドレス、ログインIDとパスワードが流出対象とされています。

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

SQLインジェクションの根本的な対策としては、Webアプリケーションにおいて脆弱性の原因を作らない実装(セキュアコーディング)を行うことが挙げられます。

SQLを呼び出してデータベース上の情報を扱うWebアプリケーション内部で、バインド機構やエスケープ処理の実装を行うなど、サイト運営者、アプリケーション開発者は、SQLインジェクションの脆弱性のない徹底したプログラミングが求められます。

また、保険的な対策として、データベースアカウントの権限見直し、データベースに関わるエラーページの非表示やWAF(Web Application Firewall)を導入することなどが有効な対策となります。

WAF導入によるSQLインジェクション対策

WAF(Web Application Firewall)は、Webアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。

Webサイトのセキュリティ対策として、Webサーバーにインストールしたり、ゲートウェイ型としてネットワークに設置することでユーザーからのリクエストを検査し、SQLインジェクションを効率的に検出・防御することができます。

WAF

SQLインジェクションやOSコマンドインジェクションをはじめ、Webアプリケーションの脆弱性を悪用した攻撃への包括的なセキュリティ対策には、EGセキュアソリューションズ株式会社が提供する純国産WAF「SiteGuardシリーズ」が有効です。

クラウド型ホスト型ゲートウェイ型のWAFをご用意しているほか、インジェクション対策として数百パターンへの攻撃に備えた、防御性能には定評がある標準搭載のトラステッド・シグネチャにより、様々なインジェクション攻撃を防御することができます。

SQLインジェクションについてよくある質問

質問① クロスサイトスクリプティングとは違うものですか?

回答① クロスサイトスクリプティングは、攻撃者が仕掛けた不正なスクリプトをサイト利用者が実行してしまうことで被害が生じます。一方で、SQLインジェクションはWebサイト上で稼働しているデータベースの不正操作を目的に直接的な攻撃が仕掛けられます。

どちらもWebアプリケーションの脆弱性を悪用した攻撃手法となりますが、攻撃の仕組みと受ける被害は異なります。

質問② WordPressを利用していますが、SQLインジェクションの対象となりますか?

回答② WordPressをはじめとしたCMS(Content Management System)では、データベースが利用されており、SQLインジェクションの被害にあう可能性があります。

CMS本体だけでなく、プラグインやテーマなどの拡張機能でSQLインジェクションの脆弱性が発見される事例も相次いでいます。

CMSを利用している場合は、脆弱性対策のためにも古いバージョンや管理不足を放置せずに、最新バージョンの利用と管理を徹底するようにしましょう。

質問③ SQLインジェクションを受けてしまった場合、どのような被害がありますか?

回答③ 前述の被害事例にあるように、利用者のアカウント、住所、氏名、メールアドレス、クレジットカード情報といった個人情報の流出やデータベースの改ざんなど、深刻な被害が生じる可能性があります。巨額の損害賠償や信用失墜など、企業の存続に影響を及ぼすリスクとなることが考えられます。

質問④ SQLインジェクションの対策には、どのような方法がありますか?

回答④ セキュアコーディングによる安全なWebアプリケーション、サイト構築が根本的な対策となるほか、WAFの導入が有効です。また、脆弱性診断サービスなどを利用して、Webサイトの問題点を洗い出すことも、適切なセキュリティ対策を講じる上で有効な手段となります。

質問⑤ WAFを導入することで、SQLインジェクションは防げますか?

回答⑤ WAF製品には、SQLインジェクションに対応する機能が実装されています。WAFの導入は、SQLインジェクションなど、Webアプリケーションの脆弱性を悪用した様々な攻撃への対策に有効です。

関連記事:WAFによるSQLインジェクション攻撃の防御

WAFとは

WAFとは

Webアプリケーションファイアウォール(WAF:Web Application Firewall)は、ウェブサイトに対するアプリケーションレイヤの攻撃対策に特化したセキュリティ対策です。

詳細はこちら

RECENT POST「Webセキュリティ」の最新記事


Webセキュリティ

クロスサイトスクリプティング(XSS)とは?仕組みや対策を解説

Webセキュリティ

OWASP Top 10 2021 にみるWebアプリケーションのセキュリティリスク

Webセキュリティ

クロスサイトリクエストフォージェリ(CSRF)とは?被害と対策を解説

Webセキュリティ

Webアプリケーション脆弱性診断とは?

SQLインジェクションとは?仕組みと対策方法を解説
5分でまるわかり!WAFによるサイバー攻撃対策
1分でわかる「SiteGuardシリーズ」
RECENT POST 最新記事
ブログ無料購読
RANKING人気記事ランキング