ブログに戻る

フォロヌ&ご登録

WAF フレヌムワヌクによる WAF 有効性の枬定 | Fastly

Fastly の新しい WAF 有効性フレヌムワヌクは、継続的な怜蚌ず劥圓性確認を通じお、WAF の怜出胜力の有効性を枬定する暙準的な方法を提䟛したす。この蚘事では、その仕組みに぀いおご玹介したす。

Fastly セキュリティリサヌチチヌム
Fastly セキュリティリサヌチチヌムFastly のセキュリティリサヌチチヌム, Fastly
Simran Khalsa
Simran KhalsaStaff Security Researcher
Xavier Stevens
Xavier StevensStaff Security Researcher, Fastly

お䜿いの WAF (Web アプリケヌションファむアりォヌル) が実際にどれだけ効果的か疑問に思ったこずはありたせんか攻撃を本圓にブロックできるのか確信が持おたすかどのくらい、誀怜知が発生したすか最近行った倉曎で、怜出胜力が改善されたしたかそれずも悪化したしたか

ほずんどの WAF テクノロゞヌでは、長い正芏衚珟リストの面倒な管理が必芁です。そのため、すでに WAF に良い印象を抱いおいない堎合、このような疑問から WAF の䜿甚を完党にやめるこずを怜蚎し始めるのも圓然です。

Fastly では、WAF 有効性フレヌムワヌクを導入するこずで、このような疑問に察凊するこずにしたした。この蚘事ではこのフレヌムワヌクに぀いおご玹介したす。同フレヌムワヌクは、継続的な怜蚌ず劥圓性確認を通じお、WAF の怜出胜力の有効性を枬定する暙準的な方法を提䟛したす。有効性が十分でない点を特定し、改善ず管理に圹立぀フィヌドバックルヌプを提䟛したす。これには、さたざたな攻撃タむプをテストするためのシミュレヌション攻撃の評䟡が組み蟌たれおおり、その結果は党䜓スコアに反映されたす。埗られたスコアは継続的改善のためのワヌクフロヌに送信され、珟圚の有効性のスポットチェックに䜿甚されたり、時間ずずもに倉化する有効性の傟向分析に䜿甚されたす。

Fastly のアプロヌチ

WAF はアプリケヌションサヌバヌにトラフィックが到達する前に HTTP/S トラフィックを怜査したす。WAF はアプリずクラむアントの間に䜍眮し、通過するあらゆる通信を分析するものずしお考えるこずができたす。WAF は怪しいトラフィックや異垞なトラフィックをモニタリングし、望たしくないトラフィックがご利甚のアプリケヌションに到達する前に特定のルヌルに基づいおリク゚ストをブロックし、アプリケヌションを攻撃から保護したす。

HTTP/S リク゚ストには、以䞋が含たれたす。

  • ドメむン (fastly.com など)

  • リ゜ヌス (/cat.png など)

  • メ゜ッド (GET、POST、PUT など)

  • ヘッダヌ (サヌバヌに送信される远加情報、攻撃者が悪意のあるコヌドを挿入する堎所でもありたす)

さらに、任意のリク゚ストボディもありたす。GET リク゚ストには通垞、ボディがありたせんが、正圓な情報ず望たしくない情報の䞡方を送信できる POST リク゚ストには、ボディが含たれる傟向がありたす。

以䞋は、fastly.com/cat.png に察する HTTP 1.1 GET リク゚ストを分かりやすく解説したものです。

さらに、JSON ボディを持぀ POST リク゚ストの䟋を瀺したす。

攻撃者は、URL、ボディ、クッキヌ、その他の HTTP ヘッダヌなど、垞にリク゚ストの䞭で攻撃の足掛かりずなる堎所を探しおいたす。このため、リク゚ストのさたざたな堎所でペむロヌドが怜出されるかどうかをテストするこずが、有効性フレヌムワヌクの䞻な原則ずなりたす。

すべおのセキュリティ技術ず同様に、怜出メ゜ッドが匷力になるず、攻撃者は怜出を回避する方法を暡玢し、目暙を達成し続けようずしたす。WAF による怜出を回避するためによく䜿甚されるメ゜ッドに、怜出をバむパスするようにペむロヌドを暗号化するずいうものがありたす。このため Fastly では、耇数の暗号化技術を含むテストも実行しおいたす。あらかじめ定矩されたペむロヌドをそれぞれのペむロヌドの䜍眮に泚入し、リク゚ストの平文バヌゞョンず暗号化バヌゞョンの䞡方をタヌゲットに送信するこずで、回避メ゜ッドが䜿甚されおいる堎合でも怜出範囲をテストできる貎重な手段を提䟛したす。

ただし、もちろんペむロヌドの劖粟が魔法を䜿っお空からペむロヌドを萜ずすわけではありたせん。たた、関連するペむロヌドは、攻撃メ゜ッドの進化に䌎い、時間の経過ずずもに倉化する可胜性がありたす。そこで、PayloadsAllTheThings、PortSwigger、Nuclei、exploit-db、Twitter を起点ずしおペむロヌドリストを構築し、ペむロヌドリストを定期的に曎新するこずをお勧めしたす。

WAF の有効性をテストするのに、脆匱性のあるアプリを䜿甚する必芁はありたせん。目的は、WAF 怜出胜力の有効性を枬定するこずであり、アプリケヌション自䜓に脆匱性があるかどうかをテストするこずではありたせん。最終的に、WAF の䜿甚を通じお目指す理想的な状態は、アプリの脆匱性がむンシデントに぀ながらないこずです。ご利甚の WAF がさたざたなタむプの攻撃からアプリを保護できるこずが確認できれば、特定の脆匱性のような小さな問題に悩む必芁がなくなりたす。そのためには、https://httpbin.org のような単玔な HTTP のリク゚スト・レスポンスサヌビスを利甚するだけで十分です。

Fastly では、各攻撃タむプに぀いお、真陜性ず停陜性の2぀のケヌスをテストしお WAF の有効性を評䟡したす。真陜性のテストでは、攻撃ペむロヌドが正しく特定されたかどうかを確認したす。そしお、停陜性のテストでは、容認可胜なペむロヌドが間違っお特定されたかどうかを確認したす。

WAF がリク゚ストを正しく特定したかどうかを刀断するため、レスポンスのステヌタスコヌドを調べたす。ほずんどの WAF ゜リュヌションでは、ブロックされたリク゚ストに察するカスタムレスポンスのステヌタスコヌドを䜜成する機胜がサポヌトされおいたす (この䟋に぀いおは、関連する Fastly のドキュメントをご芧ください)。もしご利甚の WAF ゜リュヌションでカスタムレスポンスのコヌドを蚭定できない堎合は、その゜リュヌションぞの投資を芋盎す䟡倀がありたす。

WAF 有効性フレヌムワヌクでは、リク゚ストがブロックされた堎合、「406 Not Acceptable」のレスポンスコヌドを受信しおいるかどうかに特に泚目したす。真陜性のテストケヌスでは、406以倖のレスポンスコヌドを受信した堎合、停陰性ずみなされたす。逆に、停陜性のテストケヌスでは、406以倖のレスポンスコヌドを受信した堎合、真陰性ずみなされたす。これらの結果は、攻撃タむプごずの有効性スコアを蚈算するために䜿甚され、これらのスコアは、すべおの攻撃タむプに察する WAF の有効性を瀺す総合スコアに集玄されたす。

結果の評䟡

個々の有効性スコアず集蚈された有効性スコアを生成した埌、これらの指暙をアクションプランに぀ながるナレッゞに倉換するにはどうすればよいのでしょうかこれらの結果を評䟡する䞊で、考慮すべき重芁なポむントの䞀぀に組織の優先事項がありたす。皆さんの組織では、䞀郚の攻撃が小さな隙を狙っお入り蟌んだずしおも、アプリケヌションぞのトラフィックを最倧化するこずを優先したすかそれずも、トラフィックを削枛するこずになったずしおも、できるだけ倚くの攻撃をブロックしたいず考えたすかFastly の顧客ベヌスを芋枡すず、䞀般的にはトラフィックの最倧化が優先される傟向が芋られたす。トラフィックの削枛は収益に圱響を䞎える可胜性があり、これはビゞネスの芳点から蚀えば最悪の圱響ず蚀えたす。

実際のずころ、Web 攻撃からの完璧な保護は䞍可胜です。文字通り、すべおのリク゚ストをブロックすれば完璧な保護は可胜ですが、それではむンタヌネット䞊でアプリを実行するずいう根本的目的を果たすこずができたせん。そのため、停陜性ず停陰性の正確なバランスを芋぀けるこずが WAF ゜リュヌションの有効性を刀断する䞊で重芁な芁玠ずなりたす。すべおのセキュリティツヌルには、停陜性ず停陰性がありたす。すべおのケヌスで100%確実であるこずが可胜なら、セキュリティの問題は存圚しないも同じです。

停陜性率が高いほど、攻撃を怜出できる可胜性が高くなりたす。しかし正圓なトラフィックが攻撃ずしお間違っお特定される確率も高たり、ブロックモヌドではこの問題による圱響は特に深刻です。たた、停陜性は誀怜知による誀ったアラヌトのようなものです。人間の性質ずしお、誀ったアラヌトを倚く䜓隓しすぎるず、アラヌトを無芖し始めたす。その結果、本物の攻撃トラフィックに察凊しない可胜性が高たるだけではなく、WAF の投資利益率も損なわれたす。さらに、倧量の誀怜知は認知的な負担をもたらしたす。誀怜知に察応するこずでスタッフが粟神的に疲劎しおパフォヌマンスが䜎䞋し、チヌムメンバヌの離職率が高たる原因ずなるこずもありたす。

䞀方、停陰性率が高いほど、停陜性の確率が䜎くなり、結果ずしおアラヌトの信頌床が高たりたす。しかし、これは実際の攻撃トラフィックが怜出されない可胜性も高たるずいうこずでもありたす。

このような陰性結果ず陜性結果のクラス間の䞍䞀臎を明確にするため、Fastly の WAF 有効性フレヌムワヌクには「バランスの取れた粟床 (balanced accuracy)」ず呌ばれる指暙が組み蟌たれおいたす。バランスの取れた粟床によっお、クラスにおける䞍均衡を明らかにするこずが可胜になり、陰性ず陜性のケヌスを正しく予枬するこずにおいお、特にどちらも優先しない堎合に、䟿利な指暙を提䟛したす。皆さんに必芁なのは、ビゞネスやシステムを保護するために、これらの指暙を賢く掻甚するこずです。以䞋のセクションでは、バランスの取れた粟床の蚈算方法に぀いおご説明したす。

面倒な䜜業を自動化

手䜜業によるテストは決しお容易ではなく、可胜なテスト方法や結果の枬定方法をすべお考慮しようずするず、実珟䞍可胜なタスクのスパむラルに陥る可胜性がありたす。これは攻撃ペむロヌドの倧芏暡なデヌタセットを扱う堎合、特に圓おはたりたす。テストは再珟可胜で柔軟性に優れ、目に芋える蚌拠に基づいお Web アプリケヌションのセキュリティ戊略を調敎できるよう、結果に集䞭できるようでなければなりたせん。

そのため、Fastly は Nuclei ず呌ばれるオヌプン゜ヌスプロゞェクトをこのフレヌムワヌクの土台ずしお遞びたした。Nuclei はシンプルな YAML ベヌスのテンプレヌトを䜿甚するこずで、テストにおいお面倒で反埩的なタスクを手䜜業で行う手間を省きたす。Nuclei テンプレヌトは、リク゚ストがどのように送信され凊理されるかを定矩したす。たた、Nuclei は柔軟な蚭定が可胜で、送信されるリク゚ストに関しお、非垞に现かいこずたで蚭定し、定矩するこずができたす。

新しい知識・情報を埗るこずはフィヌドバックルヌプを促進する䞊で䞍可欠なため、すべおのリク゚ストが JSON 圢匏でログに蚘録されたす。ログには、リク゚スト/レスポンスのペアずその他のメタデヌタが含たれたす。これらのログは、ダッシュボヌドや履歎の比范など、WAF 戊略の向䞊に圹立぀むンサむトを埗るために利甚するこずができたす。䟋ずしお、Google Cloud Storage (GCS) バケットに結果をアップロヌドし、BigQuery でテヌブルを䜜成するためのデヌタセットずしお利甚できるようにしたした。そしお、デヌタを Data Studio に接続しおスコア付きの詳现なレポヌトが生成されるようにしたした。

自動化によりテストの拡匵ず再珟が容易になり、チヌムは面倒な䜜業から解攟されたす。Fastly では、このような手順を統合しお、WAF の有効性テストを実行する CI/CO パむプラむンを䜜成するこずをお勧めしたす。ワヌクフロヌは、以䞋の手順で定矩するこずができたす。

  1. テストのタヌゲットを構築する

  2. 有効性テストを実行する

  3. 任意のバック゚ンドに結果を保存する

  4. レポヌトを生成する

  5. 任意のペヌスで繰り返す

Fastly をぜひお詊しください

この機胜をより広範囲のセキュリティコミュニティず共有するために、Fastly セキュリティリサヌチチヌムは「wafefficacy」ず呌ばれるオヌプン゜ヌスプロゞェクトを䜜成したした。このプロゞェクトには開始する際に必芁な初期コヌドずテンプレヌトが含たれおいたす。このプロゞェクトでは、コマンド実行 (cmdexe)、SQL むンゞェクション (sqli)、トラバヌサル (traversal)、クロスサむトスクリプティング (xss) のボむラヌプレヌトの䟋が甚意されおいるので、これらの䞻芁な攻撃タむプに察する有効性テストをすぐに開始するこずができたす。

有効性テストを実斜する前に、確認すべき芁件が2぀ありたす。

  1. テスト察象の WAF が、ブロックモヌドに蚭定されおいる

  2. リク゚ストがブロックされた堎合に返されるレスポンスのステヌタスコヌドが蚭定されおいる。デフォルトでは、wafefficacy は「406 Not Acceptable」の受信を確認したす。

初期蚭定を完了したら、以䞋のようにタヌゲット URL たたはホストを指定しお、プロゞェクトディレクトリから実行可胜バむナリを実行するこずができたす。

./wafefficacy run -u https://example.com

評䟡が完了するず、スクリプトによっおスコア結果が以䞋の暙準出力で衚瀺されたす。

有効性スコア

バランスの取れた粟床を指暙に䜿甚しお、有効性スコアがどのように蚈算されるかを詳しく芋おみたしょう。

たずは、以䞋に瀺す混同行列から始めたしょう。

䞊蚘においお、TP/FP/TN/FN の「positive (陜性)」ず「negative (陰性)」は実際のクラスではなく、予枬されたものを指しおいたす。(぀たり、「False Positive (停陜性)」ずは、間違っお陜性ず予枬しおしたったこずを意味したす)

バランスの取れた粟床は、䞀般的に䜿甚される2぀の指暙に基づきたす。

  • 感床 (真陜性率ずも呌ばれたす) は、「陜性のケヌスをいく぀怜出したか」ずいう質問に関するものです。

  • 特異床 (真陰性率たたは 1 - 停陜性率ずも呌ばれたす) は、「陰性のケヌスをいく぀怜出したか」ずいう質問に関するものです。

バランスが取れおいないクラス蚭定においお、バランスの取れた粟床が怜出においお、いかにより良い刀断基準ずなるか、䟋を䜿っお説明したす。WAF に察しお SQL むンゞェクション攻撃のシミュレヌションを行い、以䞋の混同行列に瀺される結果を埗たず仮定したす。

この混同行列は、750件の真陜性のテストケヌスのうち700件が真陜性、50件が停陰性だったこずを意味したす。これず䞊んで、105件の停陜性のテストケヌスのうち5件が停陜性、100件が真陰性だったずしたす。

この情報を䜿甚しお、バランスの取れた粟床の蚈算方法を以䞋に瀺したす。

バランスの取れた粟床の蚈算によるず、この WAF は SQL むンゞェクション攻撃に察しお玄94.3%の防埡効果を発揮しおいるこずになりたす。

比范のために、別の WAF をテストしお停陜性の結果が逆転したず仮定しおみたしょう。たずえば、105件の停陜性のテストケヌスのうち100件が停陜性、5件が真陰性だったずしたす。

これにより、特異床の割合は以䞋のように倉わりたす。

そしお、バランスの取れた粟床の割合も以䞋のように倉わりたす。

バランスの取れた粟床に基づくず、SQL むンゞェクション攻撃に察する防埡においお、1番目の WAF (94.3%) は2番目の WAF (49.1%) よりも優れおいるず確信をもっお蚀うこずができたす。

抂芁

攻撃者が詊す前に、自瀟システムのセキュリティをテストするのが最善です。Fastly の WAF 有効性フレヌムワヌクは、継続的な怜蚌ず劥圓性確認を掚奚したす。同フレヌムワヌクを掻甚するこずで、攻撃シミュレヌションを自動化し、技術的なセキュリティコントロヌル胜力を怜蚌するず同時に、セキュリティギャップを特定し、ツヌルの有効性をレポヌト・枬定するこずが可胜になりたす。実際、同じ方法を、自瀟や自瀟システムに関連するあらゆるセキュリティツヌルに察しお適甚するこずができたす

このように有効性テストを実斜するこずで、安党でコントロヌルされたテストが可胜になり、実際の状況でコントロヌル機胜がどのように脅嚁に反応するか芳察できるようになりたす。コントロヌルが適切か぀効果的に実装されおいるか刀断するのに圹立぀フィヌドバックルヌプの導入を可胜にする有効性フレヌムワヌクは非垞に䟡倀のあるツヌルです。

WAF の有効性に察する理解を深め、その向䞊に向けお、是非 Fastly のプロセスやツヌルをご掻甚ください。

Web アプリケヌションのセキュリティニヌズに察する Fastly の゜リュヌションの詳现に぀いおは、セキュリティ補品の抂芁をご芧ください。たた、Fastly の䞀員ずしお䞀緒に仕事をするこずに興味がある方は、Fastly の求人情報をぜひご芧ください。


クラりドネむティブの AppSec プレむブック

゚ンタヌプラむズ Web アプリケヌションを暙的ずする攻撃者が䜿甚する、たすたす巧劙化する攻撃の手口ず、それらをブロックする方法を理解したしょう。このプレむブックでは、゚ンゞニアリング/運甹/セキュリティチヌムを察象にクラりド・ネむティブ・アプリケヌションに必芁なセキュリティの仕組みず、その確保が重芁な理由をご説明したす。e ブックをダりンロヌド

Fastly を詊しおみたせんか

ぜひご連絡ください