CloudflareのWebアプリケーションファイアウォール(WAF)は、1日あたり570億を超えるサイバー脅威をブロックしています。これは、毎秒650,000件のHTTPリクエストをブロックしている計算です。このトラフィックをフィルタリングするオリジナルコードは、Cloudflareの現在のCTOによって書かれたもので、WAFは2020年 GartnerのWAFのためのマジッククアドラントの実行能力で最高スコアを獲得するなど、これまで多くの称賛をいただいています。
Cloudflareでは、コードが保持できなくなったり、パフォーマンスが十分でなくなったり、以前ほどスケーラブルでなくなった場合に、そのコードを置き換えることを重要視しており、Cloudflareスタックの重要な部分を定期的に書き直しています。これは、当社が大きく成長するにつれて、かつてのソリューションが機能しなくなるため、必要なことなのです。かなり長い期間、CloudflareではJohnが書いたLunaJITコードを Rustで書かれた新しいコードや改良したUIに書き換えるという作業を行ってきました。
この度、新しいCloudflare Webアプリケーションファイアウォールを発表できることとなりました。
本日から、Cloudflareで新しく作成されたアカウントの10%は、Proプランのゾーン以上を追加すると、新しいWAFにアクセスできるようになります。この割合は、4月中には新規アカウントの100%まで増加する予定です。その後、既存のお客様の移行作業を開始いたします。Enterpriseプランのお客様は、アカウントチームにご連絡いただければ早期移行が可能です。
変更される点
Webアプリケーションファイアウォール(WAF)は、Cloudflareプラットフォームのコアコンポーネントです。ポートフォリオで最も使用されることが多い製品の一つとして、WAFを大規模に実行することで、Cloudflareでは多くのフィードバックと経験を得ており、これらがこの大きなイテレーションにおける指針になりました。新しいWAFがもたらすもの:
ルールの閲覧と設定の向上 - 高度なフィルタリング、一括編集、ルールタグなど、強力なツールを失うことなく、ワンクリックで簡単にデプロイできます。WordPressのすべてのルールをオンにし、Cloudflareのマネージドルールをすべてログに設定したり、実行されていないルールを特定することが簡単にできるようになりました。
新しいマッチングエンジン - Rustで書かれており、 wirefilter構文(ファイアウォールルールで使われるのと同じ構文)をサポートします。このエンジンにより、より高速なマネージドルール展開が可能となり、さらに多くのトラフィックにWAFを展開して、次のレベルまで拡張できるようになります。さらに、パフォーマンスとセキュリティの向上も同時に実現します。
更新されたルールセット - 新しいWAFには、ルールステータスをアクションから分離してより優れた制御を提供する、更新されたルールセットが搭載されています。Cloudflare OWASPコアルールセットも、最新バージョンのOWASPコアルールセット (本稿執筆時点でv3.3) に基づいて改良されています。これにより、パラノイアレベルが追加され、現在利用可能なバージョンと比較して誤検知率が改善されています。
グローバル設定 - アカウント全体に同じ設定をデプロイします。ルールをルールセットとしてグループ化し、ネイティブのバージョン管理とロールバック機能を活用します。
上記のリストは、当社が楽しみにしていることのほんの一部分にすぎず、それぞれのポイントが記事一つ分に値するものですが、以下に注目点を挙げてみます。
ルールの閲覧と設定の向上
Cloudflare Specials1グループを含むCloudflareマネージドルールセットは、WAFの主要コンポーネントの1つです。これには、Cloudflareによって提供され、保持されている数百のルールが含まれます。デフォルト設定では、あらゆるWebアプリケーションに対して非常に優れたセキュリティベースラインを提供しながら、非常に低い誤検知率を達成することを目指しています。しかし、最高のセキュリティスタンスを得るには、できるだけ多くのルールを有効にする必要があります。つまり、基盤となるアプリケーションに基づいてルールセットの動作を深く掘り下げてカスタマイズすることも時に必要になります。
新しいWAFでは、デフォルト設定で、マネージドルールセットをワンクリックで有効にしたいと考えました。一方で、関心のある人に向けては、はるかに優れた設定エクスペリエンスを実現したいと考えました。
新しいWAF UI。Cloudflare のマネージドルールセットと Cloudflare OWASP ModSecurity コアルールセットをワンクリックでオンにします。
現在、Cloudflareマネージドルールセットを有効にするには、グローバルWAFスイッチを有効にし、目的のルールグループを設定する必要があります。WordPress、Joomla、PHP、および類似のシステムを含む10のルールグループは、オン/オフの切り替えで直接ページに表示されます。このUIでは、各ルールを個別にチェックしないでグループ内のルールを簡単にフィルタリングまたは構成することはできません。
現行の(古い)管理ルールセット WAF UI。グループをクリックすると、各グループのルールのリストを表示します。
UIはシンプルでしたが、一般的なタスクを瞬時に実行することはできませんでした。たとえば、_オフになっているすべてのルールを表示する、または、XSS攻撃を軽減するすべてのルールを表示する_などです。これからは、すべてのルールが1つの表に表示され、ルールのステータス、アクション、タグ別のフィルタリングはワンクリックするだけで実行できます。ルールタグはグループに取って代わり、ルールには1つ以上のタグがつくため、システムの柔軟性が格段に高まります。タグは次の目的で使用されます 。
ルールが特定のソフトウェアコンポーネントに適用可能であるかどうかを識別する
攻撃ベクトルを特定する (例:XSS, SQLi, RCE)
CVE 固有のルールを識別する
最後に、インラインの単一のルールコントロールに加えて、一括編集コントロールが可能になり、特定のユースケースに基づく設定変更が迅速に行えます。
新しいWAFルールセットブラウザ。一括オプション、タグ、フィルタリングコンポーネントを一つの場所に表示。
利用可能なルールの数が増えることが予想され、より多くのユーザーがカスタム構成を採用できるように、設定変更をデプロイする際の確認画面を追加しました。ここから、デフォルトからの変更を簡単に確認でき、必要に応じて元に戻すことができます。
ルールセット展開のレビュー画面。ここから、デフォルトからのカスタム設定のオーバーライドを確認できます。
新しいマッチングエンジン
マネージドルールセットの実行を担当する現行のCloudflare WAFは、LuaJITで書かれており、NGINX モジュールとして実装されています。ルール構文は、ModSecurityで実装された構文のスーパーセットにCloudflareの実装に固有の機能を追加したものに倣っています。
新しいエンジンに移行することで、次のことを実現したいと考えました。
Cloudflareで使用される他のテクノロジーとの一貫性がある、より安全で、良質、高性能な環境
高性能なフィルタリング機能とマッチング機能により、柔軟性の高い展開と例外処理をより簡単に行う
マネージドルールセットの基盤としてwirefilter構文を採用することにより、製品の機能セットを統合
最後の点は、Cloudflareにとってだけでなくユーザーにとっても特に重要なことでした。なぜなら、この構文はカスタムファイアウォールルールですでに使用されていて、同じ基盤となるRustライブラリを使用してフィルタリングを実行することもあるためです!
新しいエンジンはRustに実装されています。このブログでは、Cloudflareがどれだけこれを気に入っているか、何回もお伝えしてきました。また、この新しい実装では、安全性の向上だけでなく、速度も向上できるように尽力しているところです。この詳細については、今後のブログ記事で説明する予定です。
Cloudflareルールセットの更新
Cloudflare ルールセットが更新され、新しいWAFへと移行しました。特に、ルールセットはwirefilter構文を使用し、ルールステータスはルールアクションから分離されているため、両方を個別に設定できます。
Cloudflare OWASP コアルールセットもエンジンから独立してメジャーアップデートされます。現行のCloudflare WAFは、公式OWASP ModSecurity Core Rulesetの2.xバージョンを実装しています。新しいWAFでは、Cloudflare OWASPコアルールセットは、GitHubリポジトリから入手可能な最新の3.3バージョンが直接ベースになったものです。
新しいCloudflare OWASPコアルールセットは、追加されたエンジン機能とともに、既存のものにいくつかの改善を加えています。
誤検知の数を減らし、アプリケーション汎用ルールを強化
感度スコアをより詳細に制御し、各ルールがスコアにどれくらい貢献しているか、トリガーされたリクエストの合計スコアをわかりやすく表示
パラノイアレベルの追加 - 誤検知リスクに基づく含有/除外/ルールグループを容易に実現
アプリケーションに基づく適切なルールを使用した展開を可能にするルールタグ
Cloudflare OWASP コアルールセット
Cloudflare OWASP コアルールセット確認画面
OWASP ModSecurity コアルールセットの最新バージョンをCloudflare実装に変換する取り組みの一環として、チームはModSecurityからwirefilter構文コンバーターも構築しました。これにより、アップストリームが改善された直後にルールセットを簡単にデプロイや更新ができるようになり、お客様が常に最新バージョンにアクセスできるようになります。また、お客様がModsecurityベースのWAFからCloudflareへと簡単に移行できるように、将来的にはオープンソースでコンバーターをUIに公開する予定です。
グローバル設定
Cloudflareは当初からCloudflare WAFのゾーンベースモデルを運用しています。これは、少数のアプリケーション、またはゾーンごとに非常に多様なアプリケーションセットを保護するシンプルなユースケースに適しています。
複数のゾーンにまたがる、より複雑で統一されたデプロイメントは通常、APIやCloudflare Terraform Providerなどの自動化ツールを利用して実装されます。
新しいWAFでは、単一のアカウントを使って任意のトラフィックフィルターでルールセットの展開を行うことができます。例としては、
Cloudflareの管理ルールセットをすべてのゾーンにデプロイする
パスに /api/ * を含まないすべてのトラフィックに Cloudflare OWASP コアルールセットをデプロイする
自分が使っているIPから来るトラフィックに対して、自分のアカウント全体でマネージドルールセットを無効にする
これにより、数回のクリックでアカウント全体の強力なWAF設定が可能になります。
アカウントの任意のアプリケーションにデプロイする3つのルールセット。
これを実現するために、ルールセット(ルールのグループ)はファーストクラスのコンセプトになり、ネイティブのバージョンで、UIで直接ロールバック機能と差分機能の両方を使用できます。この機能は、今後数ヶ月以内に公開される予定です。
アカウントベースの構成については、最初に現在アカウントチームに連絡して、早期アクセスをお願いできるEnterpriseプランのお客様に限り、ご利用いただくことになります。カスタムファイアウォールルール自体は間もなく新しいエンジンに移行されるため、お客様は独自のカスタムファイアウォールルールセットを作成し、必要に応じて任意のトラフィックフィルタに展開できます。
新機能のための新しいプラットフォーム
WAFには見かけ以上にたくさんの機能がたくさんあり、チームはすでに新しいWAF上に構築された一連の追加機能の完成に向けて鋭意作業中です。これには、エンジン自体の改善や、分析や実用的なイベントの可視性の向上などが含まれます。エンジン全体は、Cloudflareのルールベースの多くの製品基盤になるように設計されており、最終的にCloudflareの構成全体を一連のルールとして表すことを目的としています。
完成までの間、皆様のご意見をお待ちしております。どこまで刷新することができるか楽しみにしたいと思います。
.......
1Cloudflare Specialsは、Cloudflareのセキュリティチームによって書かれたルールであり、Cloudflareプラットフォームの背後にある何百万ものWebアプリケーションの監視と保護に基づいて書かれています。