SQLインジェクションとは
SQLインジェクションとは、データベースを操作する命令文を脆弱性のあるWebアプリケーションに注入することによって、データベースにあるカード情報や顧客情報といった非常に重要な情報を窃盗する攻撃です。インジェクション攻撃の一種として知られ、Webアプリケーションの脆弱性を狙った代表的なサイバー攻撃のひとつです。
SQLインジェクションは早期発見がされないままでいると深刻な被害を引き起こしてしまいます。しかしセキュリティ対策の遅れによってなかなか被害が減ることがないというのが現状です。

SQLインジェクションの恐怖
SQLインジェクションの特性について確認してきました。では次にSQLインジェクションがもたらす恐怖について見ていきましょう。
カード情報が盗まれる被害も発生
アウトドア用品ショップのカード情報漏えい、ゲームソフト会社会員サイトの個人情報漏えい、電気通信事業者のカード情報漏えいなど多くの企業サイト、オンラインショップ、会員サイトが重要な個人情報を窃盗されています。これらは、SQLインジェクションによる典型的な被害事例として知られており、特にカード情報や会員データの漏えいリスクが高い攻撃手法です。実際の例を見ていきましょう。
- 【通販サイトを運営するA社の例】
- A社のWebサーバが不正アクセスを受け、顧客情報が流出したことが判明しました。会員IDやパスワード、クレジットカード情報など、約13万件の顧客情報が流出しています。
- 【リサーチサイトを運営するB社の例】
- B社のWebサイトが不正アクセスを受け、約6千名分の情報が流出したことが判明しました。海外子会社向けのモニター登録サイトから侵入され、共通のデータベースを使ったサイトが被害に遭っています。
企業の信用を失う結果になることも
クレジットカード情報などが漏えいした場合、企業は調査や被害者対応の人件費、システム再構築関連費、賠償費、営業停止期間の機会損失など全体で莫大な損失が生じるケースも少なくありません。
また最大の損失は顧客の信用を失ってしまうことです。そういった意味においてもSQLインジェクションによる攻撃は事前に十分な対策を取ることが必須といえます。
SQLインジェクション攻撃の対策方法
SQLインジェクション攻撃を防ぐにはどうすればよいのでしょうか。
安全なWebサイトを作成する
Webアプリケーションを開発する際は、脆弱性の少ない設計にするよう心がけましょう。
すべての脆弱性を取り除いたWebアプリケーションを開発するのは困難です。そのため、脆弱性を補う手段としてWAFなどが存在します。しかし、Webアプリケーション自体の脆弱性も最小限に抑えたほうがよいのは間違いありません。
開発の際には、独立行政法人情報処理機構(IPA)が公開するマニュアルを参考にするとよいでしょう。また、外注する場合は要件にセキュリティ対策をしっかりと含めておきましょう。そして、脆弱性が発見された場合には、すみやかに対策することが大切です。
脆弱性診断を行う
定期的に脆弱性診断を行いましょう。
脆弱性診断とは、疑似的な攻撃を行って脆弱性を発見する方法です。実際に被害に遭う前に、外部からの攻撃を想定したシミュレーションを行うことで対策が可能になります。
具体的な方法はサービスにより異なりますが、ツールと人の手を組み合わせた診断が一般的です。そして、発見された脆弱性はレポートにまとめられ、質疑応答や対策方法の検討が行われます。
WAFを導入する
そして、もっとも現実的で有効な対策が、WAFの導入です。WAFはWebアプリケーションを守るためのセキュリティで、SQLインジェクションなどの特殊な攻撃に対応しています。
その中でもクラウド型は手軽なのが特徴。制約が多かった従来のWAFと比較すると以下のような特徴があります。
- ■短期間で導入できる
- ■導入に伴うインフラ整備が不要
- ■運用をベンダーに任せられる
- ■常にアップデートされ、最新の状態を維持できる
- ■初期費用が安い
- ■短期のスポット利用など、柔軟な利用が可能
クラウド型のWAFについてさらに知りたい方は以下の記事をご覧ください。
WAFの以外のSQLインジェクション対策システムも検討する
SQLインジェクション対策としてはWAFが代表的ですが、それ以外にも導入すべき有効な対策があります。例えば、IPS(Intrusion Prevention System:侵入防止システム)は、ネットワーク上の不正な通信をリアルタイムで検知・遮断する仕組みです。アプリケーション層とは異なるレイヤーから攻撃を防ぎます。
また、RASP(Runtime Application Self-Protection)と呼ばれる技術も注目されています。これはアプリケーションの実行時に内側から動作を監視し、不正な挙動を検知・防御する仕組みです。開発側での導入が必要ですが、コード単位で攻撃を防げるため、よりきめ細かなセキュリティ対策が可能になります。
このように、SQLインジェクションを防ぐ主な技術には、WAF・IPS・RASPなどがあり、それぞれの役割を理解しながら併用することが、実効性の高いセキュリティ対策につながります。
WAFがSQLインジェクションを防げる理由
どれほど注意しても開発には不備が生じ、脆弱性が生じることは避けられません。さらに、Webアプリケーションは通常のファイアウォールの防御範囲外です。
WAFは、Webアプリケーションの、脆弱性に特化したセキュリティシステムのため、通信内容を機械的に解析し、悪質な通信を検知しブロックできます。SQLインジェクションも不正通信の一つであるため、WAFを通すことで検知し、防御できるのです。
WAFをすり抜けた攻撃を受けた場合の対処法
万が一、SQLインジェクションがWAFを通り抜け、攻撃を受けたことが発覚した場合、まずはWebサイトの一部、もしくはすべての公開を一旦停止してでも早期の修正をすることを優先します。
特にSQLインジェクション攻撃による損失は金銭だけではなく顧客の信用という他に替えられない大きなものになりますので、とにかく早期の修正を徹底しましょう。
まとめ
WAFはSQLインジェクションを防御する最も効果的な方法です。WAFを導入することで、SQLインジェクションだけでなく、様々な攻撃を防ぐことができるため、WAFはWebアプリケーションを利用している企業にとっては必須のアイテムといえるでしょう。
ただし、WAFにもたくさんの製品があるため、どの攻撃に対応しているのか、事前に知っておく必要があります。まずは資料請求を行い、自社にあった製品を選びましょう。以下の記事からも製品情報をご覧いただけます。
