最終更新日時:2024.01.04 (公開日:2022.11.24)

WAFでSQLインジェクションからWebサイトを守ろう!

Webアプリケーションの脆弱性をついたサイバー攻撃の1つであるSQLインジェクションを知っていますか?SQLインジェクションによる攻撃をうけると個人情報を抜き取られたり、Webサイトを改ざんされたり、といった被害に繋がります。SQLインジェクションからWebサイトを守る方法の1つとしてWAF(Web Application Firewall)があります。今回はSQLインジェクションとWAFの関係性について、SQLインジェクションと似た攻撃のご説明と合わせて、詳しく解説していきます。

なお、本記事では「Webサイト」と「Webアプリケーション」をほぼ同じものを表す単語として使用します。一般的には「静的なページ」と「動的なページ」といった具合に区分されるかと思いますが、「動的=脆弱性をつかれる可能性がある」という部分を強調したい場合に「Webアプリケーション」を用い、それ以外は「Webサイト」と表記します。

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

SQLとは、データベースを操作するための言語です。このSQLを用い、具体的な命令の形にしたSQL文によって、データベースに対してデータを追加したり、更新あるいは検索したりすることができます。SQLインジェクションとは、Webアプリケーションが組み立てるSQL文の中へ別の不正なSQL文を紛れ込ませ、攻撃者が意図する不当な操作をデータベースのデータに対して行う攻撃のことです。

具体例を挙げるために、ユーザーが入力フォームへ入力した内容を元にしてSQL文を生成し、データベースを操作するWebアプリケーションがあるとします。攻撃者がこの入力フォームに不正なSQL文を入力することで、SQLインジェクションを実行されてしまう可能性があります。本来であれば、不正なSQL文が実行される前にチェックを行い、エラーとして処理する必要があります。しかし、Webアプリケーションに脆弱性が存在していてこの処理が行われなかった場合には、不正なSQL文が実行されてしまい、データの漏えいや改ざんが発生します。

SQLインジェクションの被害としては、ECサイトからのクレジットカード情報や個人情報の漏えいなどが挙げられます。 SQLインジェクションはデータベースを直接狙ってくるので、非常に危険な攻撃と言えるのです。

SQLインジェクションとOSコマンドインジェクション、クロスサイトスクリプティングの違い

SQLインジェクションと同等に有名なサイバー攻撃に、OSコマンドインジェクションとクロスサイトスクリプティングがあります。

OSコマンドインジェクションとは、ユーザーが入力フォームへ入力する内容の中に、コマンドと呼ばれるOSへの命令文を紛れ込ませる攻撃です。攻撃者がWebアプリケーションの入力フォームへコマンドを紛れ込ませると、Webアプリケーション内で入力値とともにコマンドが認識されます。そして主に入力値のチェックが不十分などの理由により、このコマンドが実行されることで、開発者が本来意図していない命令がサーバーにおいて実行されるのです。例えば、ユーザーのアカウント情報を出力するコマンドを紛れ込ませると、情報の漏えいに繋がります。

クロスサイトスクリプティングとは、罠が仕掛けられてあるWebサイト上のリンクをユーザーがクリックすることによって、本来意図していない悪意のあるスクリプトを自身の端末上で勝手に実行されてしまうサイバー攻撃です。クロスサイトスクリプティングにより、攻撃者はログインアカウントの乗っ取り、個人情報の搾取、偽情報の配布などを行います。メールに記載されたリンクに罠が仕掛けられている場合もあるため、不審なWebサイトやメールに記載されたリンクには触らない方が安全ですね。

それぞれご紹介したSQLインジェクション、OSコマンドインジェクション、クロスサイトスクリプティングは、いずれもサーバーの脆弱性を突いたものになります。また、不当な操作を引き起こすために攻撃者が命令を紛れ込ませるというところも似ています。ですが、紛れ込ませる命令の形式とその不当な操作の対象に違いがあります。これを下表にまとめます。

攻撃手法紛れ込ませる命令の形式不当な操作の対象
SQLインジェクションSQL文サーバーのデータベース
OSコマンドインジェクションコマンドサーバーのOS
クロスサイトスクリプティングスクリプトユーザー端末

WAFがSQLインジェクションやサイバー攻撃に対して防御できること

SQLインジェクション、OSコマンドインジェクション、クロスサイトスクリプティングなどの対策に注意していたとしても、どうしても開発には不備が発生し、脆弱性が生じてしまいます。一方で、WAFはWebアプリケーションの脆弱性に特化しているセキュリティツールです。WAFを導入することで、たとえWebアプリケーションの脆弱性が改修されていない状態であっても、Webサイトを保護することができます。

もちろん、開発段階での根本的な対策も必要ですが、アジャイル開発に代表されるようにWebサイトが日々改良され続けていく中で脆弱性への対策も続けていくのはとても大変なため、別のアプローチとしてWAFの導入が急速に進んでいます。

WAFを通信の経路上に配置することで、ユーザーからのリクエストを検査して、SQLインジェクションを検出し、防御します。 WAFで防御できるのは、SQLインジェクションだけではありません。前述したOSコマンドインジェクションやクロスサイトスクリプティングもWAFを導入することで検出、防御することができます。様々なサイバー攻撃を防御するために、 WAFの導入は企業にとって必然となってきているのです。

まとめ

WAFでSQLインジェクションからWebサイトを守ろう! 」と題しまして、ご説明してまいりました。SQLインジェクションによる攻撃を受けると、多大な損害に繋がる可能性があります。SQLインジェクションの対策として、根本的に開発段階からセキュリティ対策を講じたプログラム修正をしておくことも重要です。しかしWebアプリケーションの脆弱性を常に見つけ出してプログラムを修正していくことは、非常に難しいと思います。

WAFはWebアプリケーションの脆弱性をついたサイバー攻撃に特化したセキュリティツールです。WAFをネットワーク上に配置することで、Webアプリケーションの脆弱性をカバーすることができます。

WAFでは、SQLインジェクションだけでなくOSコマンドインジェクションやクロスサイトスクリプティングといったサイバー攻撃からもWebサイトを守ることができます。大きな損害に繋がる前に、開発段階でのセキュリティ対策と合わせてWAFを導入することで、Webサイトをサイバー攻撃から防御することが大切と言えるでしょう。 当サイトでは、サイバー攻撃を防ぐためのWAFに興味がある方へ、参考になるダウンロード資料をご用意しております。「サイバー攻撃可視化ツールPrimeWAF 基本ガイドブック」は、WAF選定時に抑えるべき機能やポイントがわかる資料になっています。ぜひ資料をダウンロードください。

Copyright © VALTES CO.,LTD. All Rights Reserved.