パワフルな攻撃防御システムWAFとは?
Web Application Firewall(Web アプリケーションファイアウォール / 以下 WAF ) とは、Web アプリケーションに対する攻撃を防ぐことに特化したシステムです。
ネットワーク上に設置する機器やクラウド型のサービスといった形式で提供され、近年ではクラウド型 WAF の登場でより導入負荷が低くなったため、導入サイト数が伸びている傾向にあります。
本記事では、WAF の機能・仕組みから活用シーンまでを解説します。
WAF の機能・仕組み
WAF には一言に “ Web アプリケーションに対する攻撃を防ぐだけ ” とは言えないほど、パワフルで多様な機能を持ちます。
ここでは、WAF がどのようにして不正な通信を検査・検知するのか、大まかな検査方法について解説した上で、どのようなタイプの攻撃を防御できるのかを解説します。
WAFの機能・仕組み
WAF の検査方法
WAF の検査方法を大まかに分類すると、ブラックリスト方式、ホワイトリスト方式に分けることができます。
ブラックリスト方式
ブラックリスト方式は、SQL インジェクションなど攻撃の手法ごとに特徴となるパターンをリストとして定義し、リクエストを検査する方式です。
WAF の最もベーシックな機能だと言えます。
このほか、攻撃活動が観測されている送信元 IP アドレスの一覧を利用し、リクエスト元の IP アドレスに対する検査を実施する機能が備わっている場合があります。
ホワイトリスト方式
ホワイトリスト方式は、パラメータのサイズや許可するコンテンツタイプ、拒否するメタ文字と言った、Web アプリケーションで想定しているリクエストをルールとして検査する方式です。
このほか、クレジットカード番号など機微な情報がレスポンスに含まれていないことを検査することができる場合もあります。
この方式は導入負荷がとても高いですが、よりセキュアな環境を築くことができると言えるでしょう。
WAF が防げる攻撃
上記の検査方法を使用し、WAF がどのようなタイプの攻撃を緩和・防御できるのか一例を紹介します。
一般的な攻撃手法
WAF のブラックリストには、XXE や SQL インジェクション、SSRF、クロスサイトスクリプティング、パストラバーサルなどに対応する検査パターンが登録されており、Web アプリケーションにとって一般的に脅威となる攻撃を防御・緩和することができます。
特定の脆弱性に対する攻撃
Spring Boot などフレームワークやライブラリに含まれる脆弱性の中には、上記の一般的な攻撃手法に対する検査パターンでは守ることができない場合があります。
WAF はそのような脆弱性に対応するルールを随時ブラックリストに追加しており、悪用する攻撃の防御・緩和を行うことができます。
ボットネットからのアクセス
多くの WAF では、上述した攻撃活動を行なっているIPアドレスのデータを取り入れることができます。
この機能を使用して、脆弱な Web アプリケーションを探索することを目的としたボットネットからのアクセスを防ぐことができます。
また、国内からのアクセスのみを想定しているようなサービスの場合、IP アドレスに紐づく国情報などから、サービスを提供していない国に対するアクセス制限を行い、攻撃を受ける可能性を減らすことができます。
情報流出
レスポンスを検査する機能を使用し、クレジットカード番号など特定のパターンを持つ機密情報が含まれているレスポンスを遮断・マスキングするなどし、不正操作などに起因する情報流出を防ぐことができます。
WAF と IPS の違い
ネットワークを通過するトラフィックを監視して不正な通信を防止できる「IPS」がありますが、IPS では Web アプリケーションの脆弱性を悪用する攻撃については十分に検出・防御することはできないため、WAF を活用することとなります。
WAF の活用シーン
WAF が Web アプリケーションのセキュリティを高めるために有用であることは上記の解説を通じて感じていただけたかと思います。
次に WAF を実際に使うにあたり、どのように活用していけば良いのか、活用シーン軸に解説します。
セキュリティのベースラインとして
Web アプリケーション全体で統一したセキュリティ機能を設けることは、規模が大きくなるにつれて難しくなります。
セキュリティ観点でのテストやレビューが完全に行われ、セキュアなアプリケーションであることが保証されている状態が望ましいですが、その実現は容易ではありません。
そのような状況下において、WAF は Web アプリケーション全体の最低限のセキュリティベースラインを保証してくれます。
仮想パッチとして
近年の Web アプリケーションにおいては、構成要素の大部分を占めるようになった OSS ですが、OSS は文字通りソースコードが公開されていることから、脆弱性が発見された場合の攻撃が始まるまでの時間が短い傾向にあります。
そのため、使用している OSS に脆弱性が見つかった場合、すぐにアップデートにより修正することが理想的です。
しかしながら、アップデートに伴いテストを実施したり、デグレが起きないこと保証しなければならなかったりするなど、どうしてもリリースまでに時間が掛かってしまうケースが多いと思います。
そのような問題に対して、WAF の特定脆弱性に対するルールを使用することで、仮想パッチとして機能し、修正するまでの時間に存在する攻撃リスクを緩和することができます。
開発の補助ツールとして
アプリケーションで全てのセキュリティを考慮した制御を組み込むことは、開発コストの観点から困難な場合が多いと思います。
そのような場合において、WAF のホワイトリスト方式を活用し、未実装な制御を WAF にて代替することで、アプリケーションの開発コストを過度に上げずに全体としてセキュリティを高めることができます。
WAF を効果的に活用するためのポイント
yamory が考える WAF を効果的に活用するためのポイントを紹介します。
運用時の取り組み
WAF の導入時には、チューニングが行われて Web アプリケーションに最適な設定が行われているかと思います。
しかしながら、機能追加や考慮していないケースの存在などにより、正常なリクエストを攻撃として認識する場合もあります。
そのため、定期的に遮断件数の推移、遮断理由などを確認することをお勧めします。
いきなり遮断件数が伸びている場合などは、そのタイミングで機能追加や変更を行なっていないか確認するようにすると、サービスへの影響を低くすることができます。
開発者と連携する
導入におけるチューニングや運用中におけるログの定期確認において、検知ないしは遮断した通信が明らかな攻撃の場合もありますが、アプリケーションの仕様上発生しうる通信か断定できない場合もあります。
そのため、導入や運用においては、開発者の協力を得て進めることをお勧めします。
アプリケーション自体のセキュリティも高める
WAF で全ての攻撃を防ぐことはできません。
また WAF だけでセキュリティを高めようとした場合、WAF 自体が単一障害点となり、それ自体がリスクとなります。
そのため、WAF はアプリケーションのセキュリティを補助するものという認識のもと、定期的なアップデートやアプリケーションのセキュア化を並行して行なっていくことを強くお勧めします。
詳細については「Web アプリケーションのセキュリティとは」で解説させていただきます。
さいごに
今回は WAF についてご紹介しました。
WAF はとてもパワフルなシステムであり、Web アプリケーションに関しては一元的にセキュリティを高めることができます。
しかしながら、単一障害点を作らないためにも、本質的にはアプリケーションのセキュア化を行なっていくことが欠かせません。
yamory では、Web アプリケーションの約 9 割を占めると言われているオープンソースソフトウェアの脆弱性とその脆弱性に関連する攻撃情報をモニタリングし、アプリケーションのセキュア化を支援いたします。
ぜひ一度お試しいただければ幸いです。