メニュー

WAFで守れる攻撃の例:WAFの基礎知識5

WAFの基礎知識

更新日:2020年6月25日(初回投稿)
著者:増井技術士事務所 代表 増井 敏克

前回は、WAFの検知方法を説明しました。WAFの導入に当たって、具体的にどのような攻撃を防げるのか分からない、そもそも自社のシステムにWAFが必要なのか、という疑問を持つ人も多いのではないでしょうか。Webアプリケーションはさまざまな攻撃を受けます。今回は、特にWebアプリケーションに対してよく使われる攻撃方法と、WAFがどのようにしてこれを防ぐのかについて解説します。

今すぐ、技術資料をダウンロードする!(ログイン)

1. SQLインジェクション

ショッピングサイトやSNS、掲示板、検索エンジンなど多くのWebアプリケーションでは、データの保存にデータベースを使用します。こうしたWebアプリケーションでは、SQLという言語を使ってデータベース管理システムを操作します。プログラムの中でこのSQLの記述方法に問題があると、攻撃者が特殊な記述内容を送信してSQLに攻撃コードを埋め込むことで、開発者の想定していない指示を出すことができてしまいます。これにより、データベースの破壊や、個人情報の抜き出しなどが可能になります。

このように、不正な指示をSQLの中に注入する(インジェクション)ものが、SQLインジェクションという攻撃方法です。例えば、ログイン画面のあるWebアプリケーションがあります。入力したIDとパスワードが一致すればログインできる仕組みで、一般的な使い方であれば問題なく動作します。しかし、パスワードの欄に図1のような値を入力することで、IDさえ分かっていれば、パスワードを知らなくてもログインできてしまいます。

図1:SQLインジェクションの例(引用:増井敏克、おうちで学べるセキュリティのきほん、翔泳社、2015年、P.260)

図1:SQLインジェクションの例(引用:増井敏克、おうちで学べるセキュリティのきほん、翔泳社、2015年、P.260)

このとき、Webアプリケーションの中では、次のようなSQLが実行されていました。

ここに、上記のパスワードが入力されると、パスワード認証の部分が無視され、ログインできてしまったのです。これが、SQLインジェクションです。「’」のような記号が入力可能になっている場合、それがSQL文として意味を持ってしまうことが問題になります。パスワード入力欄に図1の値を入力すると、実際に発行されるSQLは次のような内容になります。

ここで、最後の「’a’ = ‘a’」という条件は常に成り立つため、パスワードが何であってもログインできてしまうのです。

SQLインジェクションを防ぐには、入力欄に含まれる「’」などの不適切な文字を、エラーと判断させる方法が考えられます。これは、WAFのブラックリストなどに、パスワードとして不適切な文字を登録しておくことで可能になります。

2. クロスサイトスクリプティング

掲示板など、利用者投稿型のWebアプリケーションでは、利用者が入力した内容を他の人が閲覧できます。とても便利な仕組みである反面、利用者がHTMLの構文を含んだ内容を入力し、それをそのまま出力した場合は、問題が発生します。一般の利用者にとって、自由に好みのフォントや画像を投稿できるHTMLは便利なものです。しかし、攻撃者はスクリプトと呼ばれるプログラムを投稿できてしまいます。

続きは、保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

3. クロスサイトリクエストフォージェリ

保管用PDFに掲載中。ぜひ、下記よりダウンロードして、ご覧ください。

  • セミナー6月
  • カタログバナー
  • 販促_無料出展

ピックアップ記事

tags

  • 特集バナー0615_01
  • 特集バナー0615_02
  • 特集バナー0615_03
  • 特集バナー0615_04
  • 特集バナー0608_01
  • 特集バナー0608_02
  • 特集バナー0608_03
  • 特集バナー0608_04
  • 基礎知識一覧