yamory Blog

パワフルな攻撃防御システム WAF とは?

Web Application Firewall(Web アプリケーションファイアウォール / 以下 WAF ) とは、Web アプリケーションに対する攻撃を防ぐことに特化したシステムです。

ネットワーク上に設置する機器やクラウド型のサービスといった形式で提供され、近年ではクラウド型 WAF の登場でより導入負荷が低くなったため、導入サイト数が伸びている傾向にあります。

本記事では、WAF の機能・仕組みから活用シーンまでを解説します。

WAF の機能・仕組み

WAF には一言に “ Web アプリケーションに対する攻撃を防ぐだけ ” とは言えないほど、パワフルで多様な機能を持ちます。

ここでは、WAF がどのようにして不正な通信を検査・検知するのか、大まかな検査方法について解説した上で、どのようなタイプの攻撃を防御できるのかを解説します。

WAF は主に HTTP 通信を見て検査・防御します。TCP / UDP レイヤーについてはIPS / IDS で、IP / Port レイヤーについては FW(ファイヤーウォール)で通信を検査・防御できます。
WAFの機能・仕組み

WAF の検査方法

WAF の検査方法を大まかに分類すると、ブラックリスト方式、ホワイトリスト方式に分けることができます。

ブラックリスト方式

ブラックリスト方式は、SQL インジェクションなど攻撃の手法ごとに特徴となるパターンをリストとして定義し、リクエストを検査する方式です。
WAF の最もベーシックな機能だと言えます。

このほか、攻撃活動が観測されている送信元 IP アドレスの一覧を利用し、リクエスト元の IP アドレスに対する検査を実施する機能が備わっている場合があります。

ホワイトリスト方式

ホワイトリスト方式は、パラメータのサイズや許可するコンテンツタイプ、拒否するメタ文字と言った、Web アプリケーションで想定しているリクエストをルールとして検査する方式です。

このほか、クレジットカード番号など機微な情報がレスポンスに含まれていないことを検査することができる場合もあります。

この方式は導入負荷がとても高いですが、よりセキュアな環境を築くことができると言えるでしょう。

WAF が防げる攻撃

上記の検査方法を使用し、WAF がどのようなタイプの攻撃を緩和・防御できるのか一例を紹介します。

一般的な攻撃手法

WAF のブラックリストには、XXESQL インジェクション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 割を占めると言われているオープンソースソフトウェアの脆弱性とその脆弱性に関連する攻撃情報をモニタリングし、アプリケーションのセキュア化を支援いたします。
ぜひ一度お試しいただければ幸いです。

オープンソース脆弱性管理ツール yamory

  • 利用中のOSSを抽出し
    脆弱性を自動スキャン
  • 脆弱性への対応優先度を自動で分類
  • 組織規模に合わせたプランを選択可能

フリー

¥0

個人向け

1チームまでの開発チーム作成

yamory を使いはじめる

プロ

有料料金はお問い合わせください

中〜大規模組織向け

無制限の開発チーム作成

開発チームを俯瞰できるセキュリティチーム機能

危険な脆弱性の Slack 連携通知機能

Jira Cloud と連携

シングル・サインオン(SSO)連携*

* SSO 連携は無料トライアルではご利用できません。プロプラン契約後からご利用できます。

30日間の無料トライアルを開始