yamory Blog

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

Web Application Firewall(Webアプリケーションファイアウォール / 以下WAF) とは、Webアプリケーションに対する攻撃を防ぐことに特化したシステムです。
ネットワーク上に設置する機器やクラウド型のサービスといった形式で提供されます。
近年は、クラウド型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日間の無料トライアルを開始