Cloudflare、ファイアウォールに追加した「正規表現のミス」が全面的なCDNダウンの原因と報告。「キルスイッチ」で解除
日本時間で昨夜11時50分頃から約30分のあいだ、CloudflareのCDNが全面的にダウンし、同社のサービスを利用していたWebサイトなどが影響を受けた問題について、同社はブログを更新。
今回のCDNがダウンした原因は、ファイアウォールに追加した新ルールの中に正規表現のミスが含まれていたためであることを明らかにしました。
参考:CloudflareのCDNが全面的に約30分ダウンし、世界中のWebサイトが影響を受ける。原因はソフトウェアの動作不良。ロールバックで対応
ファイアウォールに新ルールを追加したことが引き金に
同社のCDNにはWebアプリケーションファイアウォールの機能があり、新たにこのファイアウォールに追加したルールの中に間違いが含まれていたことがCPU使用率のスパイクを引き起こし、CDNダウンにつながったと説明されています。以下、ブログより引用します。
The cause of this outage was deployment of a single misconfigured rule within the Cloudflare Web Application Firewall (WAF) during a routine deployment of new Cloudflare WAF Managed rules.
この障害の原因は、Cloudflare Web Application Firewall (WAF)への定期的な新管理ルールの追加の際に、1つの間違ったルールをデプロイしてしまったためです。
この新ルールは、攻撃に使われる可能性のあるインラインJavaScriptのブロックを改善する意図で作られたもの。まずは実際にブロックすることなくシミュレーションモードで実行することにより、新ルールの誤検出率や効果などをログによって測定する予定だったとのことです。
しかしここに間違いが含まれていました。
Unfortunately, one of these rules contained a regular expression that caused CPU to spike to 100% on our machines worldwide. This 100% CPU spike caused the 502 errors that our customers saw.
遺憾ながら、正規表現を含むルールの1つが世界中のわれわれのマシンのCPUの利用率を100%にまでスパイクさせてしまった。この100%のスパイクが、お客様が見た502エラーの原因であった。
同社は同社のネットワーク全体にソフトウェアをデプロイする際に大きな障害にならないよう、テストした上で順次デプロイしていく仕組みを持っていましたが、今回のファイアウォールのルールは一度にグローバルに展開されてしまったと。
障害発生から約10分後、原因がファイアウォールのルールにあることに気づいた同社は、ファイアウォールの管理ルール群に対して「グローバルキル」スイッチを発効。これによりCPUのスパイクは解消され、さらに7分後にはトラフィックも正常に戻りました。
その後、問題のルールをロールバックし、変更後のルールをテスト。問題ないことを確認した後にファイアウォールのルール群を再有効化したとのことです。
Our testing processes were insufficient in this case and we are reviewing and making changes to our testing and deployment process to avoid incidents like this in the future.
今回のケースにおいてわれわれのテストプロセスは不十分であった。テストとデプロイのプロセスを見直し、変更することで、このような障害が今後起こらないようにしていく。
あわせて読みたい
Google Cloud、複数のファイバケーブルで物理的な損傷によるネットワーク障害。米東1リージョンで
≪前の記事
CloudflareのCDNが全面的に約30分ダウンし、世界中のWebサイトが影響を受ける。原因はソフトウェアの動作不良。ロールバックで対応