WAF によるウェブアプリケーションの保護(安全なウェブサイトの作り方)

安全なウェブサイトの作り方での目次。

2.1 ウェブサーバのセキュリティ対策について
2.2 DNS 情報の設定不備
2.3 ネットワーク盗聴への対策
2.4 パスワードの不備
2.5 フィッシング詐欺を助長しないための対策
2.6 WAF によるウェブアプリケーションの保護
2.7 携帯ウェブ向けのサイトにおける注意点

前回は、フィッシング詐欺を助長しないための対策を学んだ。
今回は 「WAFによるウェブアプリケーションの保護」について。

1.WAF によるウェブアプリケーションの保護

WAFは、ウェブアプリケーションを含むウェブサイトと利用者の間で交わされるHTTP(HTTPS通信を含む)を検査し、攻撃等の不正な通信を自動的に遮断するソフトウェア、もしくはハードウェアです。

WAFは、Web Application Firewall の略。
Web Application Framework の略じゃないんだよ、昔のおれ。

主な効果は以下。
・脆弱性を悪用した攻撃からウェブアプリケーションを防御する
・脆弱性を悪用した攻撃を検出する
・複数のウェブアプリケーションへの攻撃をまとめて防御する

つまり、ファイアーウォールの中でも、特にウェブアプリケーションに特化したもののこと。
WAFは、ウェブアプリケーションのやり取りを把握・管理する。

さらに詳しい解説を IT用語辞典から引用。

WAFの特徴としては、従来のファイヤーウォールがネットワークレベルで管理していたことに対して、WAFはアプリケーションのレベルで管理を行う、といった点を挙げることができる。WAFでは、プログラムに渡される入力内容などを直接に検査することによって、不正と見なされたアクセス要求を遮断するという仕組みが採用されている。クライアントの操作するWebブラウザとWebサーバを仲介するかたちで存在し、ブラウザとの直接的なやり取りをWAFが受け持つ。そのことによって SQLインジェクションやクロスサイトスクリプティング、強制ブラウジングといった要求に対して、「攻撃」と見なして拒絶することができる。

ネットワークレベルでの管理とは、「何番の IPアドレスを遮断する」などである。
これは従来のファイヤーウォールの役割である。

対して、アプリケーションレベルでの管理とは、「プログラムに渡される入力内容を検査する」などである。
このWAFの役割により、SQLインジェクションやクロスサイトスクリプティングを防御できる。

そして調べてる最中に IPAが WAFについて解説している文書を発見した。
また読むものが増えた・・・

以下、使用状況・使用場面など。

WAF の使用が有効な状況 ~ウェブアプリケーションの改修が困難な状況~

開発が完了した後でウェブアプリケーションに脆 弱性が発見される場合もあります。その場合、早期に脆弱性を修正すべきですが、ウェブアプリケーショ ンの改修が困難な状況が考えられます。このような状況において、WAF は攻撃による影響を低減する対 策としてウェブアプリケーションを保護することができます。

脆弱性が見つかった場合、本来ならウェブアプリケーションを修正したらいいが、何らかの原因でできない場合に、使え。
・開発者にウェブアプリケーションの改修を依頼できない状況
・改修できないウェブアプリケーションに脆弱性が発見された状況

WAF におけるHTTP通信の検査

WAFは WAFを導入したウェブサイト運営者が設定する検出パターンに基づいて、ウェブサイトと利用者の間で交わされる HTTP通信内の HTTPリクエスト、HTTPレスポンスそれぞれの中身を機械的に検 査します。WAF は、検査の結果から HTTP通信がウェブサイト、利用者にとって「悪いもの」かどうかを判定します。検出パターンには、「ウェブアプリケーションの脆弱性を悪用する攻撃に含まれる可能性の高い文字列」や「ウェブアプリケーション仕様で定義されているパラメータの型、値」といったものを定義します。

WAFは主に HTTP通信を検査する。
ウェブサイトとクライアントの中間に置かれるから当たり前か。

WAFが「正常」と判断したらウェブサーバに通し、「異常」だと判断したら設定された処理(警告の表示など)を行なう。
正常・異常の判断は、検出パターンに「不正な文字列が含まれているか」などを、機械的に行なっている。

HTTP通信の検査における判定エラー

HTTP 通信の中身によっては、判定エラーが生じる場合があります。判定エラーには偽陽性・偽陰性 の2 種類があります。

機械的に行なっているから誤検出することもあるよ!って話。
誤判定には2種類ある。偽陽性と偽陰性だ!

偽陽性(フォールポジティブ)

正常アクセスを遮断してしまうこと。
「陽性、ポジティブ、正常」とプラス系の言葉ばかり出てくると覚えよう!

安易な(下手くそな)検出パターンを定義すると起こってしまう。
例えば、「<」を悪意のある文字と定義すると、悪意のない「<」も全て遮断されてしまう。

偽陰性(フォールネガティブ)

悪意のあるアクセスを通してしまうこと。
「陰性、ネガティブ、悪意(異常)」とマイナス系の言葉ばかり出てくると覚えよう!

偽陽性の生じる可能性を最小限にするため、検出パターンを最小限にすると起こってしまう。
つまり、何が不正な通信なのかわかってないとき。

WAFの導入検討における留意点

WAF を導入するに際して、偽陽性と偽陰性の判定が生じる可能性を低くするためには、まず、WAF が 検出パターンに合致するHTTP 通信を検出してもHTTP 通信を遮断しないように設定し、HTTP 通信を監 視するだけのテスト期間を設けます。

WAFを導入するなら、入念なテスト期間を設けて、フォールポジティブ・フォールネガティブを最小限に抑えるべく、テストしまくるべき。
ただ、外部の専門家に導入を依頼することも検討。

Web Application Firewall 読本 改訂第2版も読んでさらに理解を深めたい。

参考

安全なウェブサイトの作り方

5分で絶対に分かるフィッシング詐欺 - @IT

コメント

タイトルとURLをコピーしました