Cloudflare outage on December 5, 2025

2025/12/06 0:35

Cloudflare outage on December 5, 2025

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

## Summary

Cloudflare の 2025 年 12 月 5 日の障害は約 25 分間続きました。  
08:47 UTC にネットワークセグメントが故障を開始し、08:50 UTC に完全な影響に達し、09:12 UTC に問題が解決しました。  
全 HTTP トラフィックの約 28 %(古い FL1 プロキシと Managed Rulesets を使用している顧客)がエラーを経験しましたが、中国ネットワークトラフィックは影響を受けませんでした。

障害は、CVE‑2025‑55182(React Server Components の脆弱性)を修正するために意図された二つの急速なコード変更によって引き起こされました。  
まず、WAF バッファサイズが 128 KB から 1 MB に増加し、段階的に展開されました。  
次に、グローバル設定更新で内部 WAF テストツールが無効化され、FL1 のルールモジュールで Lua エラー(`attempt to index field 'execute' (a nil value)`)を引き起こし、HTTP 500 応答を生成しました。

このバグは何年も存在していましたが、「execute」ルールのキースイッチが execute フィールドが欠落した際に処理するコードを回避したために露呈しました。  
同様で大規模なインシデントが 2025 年 11 月 18 日にも発生しました。

Cloudflare はロールアウト手順の強化、バージョン管理制御の追加、ブレイクグラスアクセスの簡素化、およびフェイルオープンエラーハンドリングの実装に取り組んでいます。詳細なレジリエンシー計画は来週公開される予定であり、新しい緩和策が稼働するまでネットワーク変更は停止されたままです。

この出来事は、大規模 CDN 運用における厳格な変更管理の必要性を強調し、迅速展開保護策に関する業界全体での見直しを促す可能性があります。

本文

2025‑12‑05 – 5分読了

2025年12月5日08:47(UTC)に、Cloudflareのネットワーク内で大規模な障害が発生しました。本件は09:12に解決し、全サービスが完全復旧しました(総影響時間約25 分)。

被害を受けた顧客は、Cloudflare が提供する HTTP トラフィックの約28 %であり、個別の顧客が影響を受けるには複数要因が重なっていました。

今回の障害はサイバー攻撃や悪意ある活動によるものではありません。React Server Components で先週公開された業界全体の脆弱性に対処するため、ボディパースロジックを変更した際に発生しました。

システム停止は容認できません。11月18日の障害以降、再びインターネットを失望させてしまいました。来週には、このような事象が起きないよう取り組む内容を公開します。


何が起こったのか

以下のグラフは、障害発生期間中にネットワークから返された HTTP 500 エラー(下部赤線)と、影響を受けなかった全体トラフィック(上部緑線)の比較です。

Cloudflare の Web Application Firewall (WAF) は、HTTP リクエストボディをメモリにバッファリングし解析することで顧客を悪意あるペイロードから保護します。今日までの設定ではバッファサイズは 128 KB に固定されていました。

React を利用する顧客を CVE‑2025‑55182 の重大脆弱性から守るため、バッファサイズを 1 MB(Next.js アプリが許容するデフォルト上限)に増加させる変更を段階的展開し始めました。この最初の変更は、段階的デプロイメントシステムで適用されていました。

展開中、内部 WAF テストツールが拡張されたバッファサイズに対応していないことが判明しました。テストツールは当時必要なく顧客トラフィックには影響しなかったため、2 つ目の変更としてオフにしました。この変更はグローバル設定システムを介して数秒で全サーバーに伝播されました。

FL1 バージョンのプロキシでは、特定条件下で WAF テストツールを無効化するとエラー状態が発生し、ネットワークから 500 エラーが返されるようになりました。変更がネットワーク全体に反映された結果、FL1 プロキシのコード実行中にルールモジュールで次の Lua 異常が発生しました。

[lua] Failed to run module rulesets callback late_routing: /usr/local/nginx-fl/lua/modules/init.lua:314: attempt to index field 'execute' (a nil value)

これにより HTTP 500 エラーが大量に返されました。変更適用直後に問題を特定し、09:12 にロールバックして全トラフィックが正常に復旧しました。

影響を受けたのは、古い FL1 プロキシで Cloudflare Managed Ruleset がデプロイされたウェブ資産です。この状態のサイトへのリクエストはすべて HTTP 500 エラーとなり、一部

/cdn-cgi/trace
のようなテストエンドポイントだけが例外でした。設定を適用していない顧客や、中国ネットワークから配信されたトラフィックには影響しませんでした。


実行時エラーの詳細

Cloudflare のルールセットシステムは、各リクエストごとに評価される一連のルールで構成されています。ルールは「フィルタ」(対象トラフィックを選択)と「アクション」(例:ブロック、ログ、スキップ)を持ちます。「execute」アクションは別のルールセットの評価を呼び出します。

内部ログシステムでは、この機能を利用して新規ルールを公開前に検証しています。トップレベルのルールセットがテストルールを含む別のルールセットを実行し、これらは今回無効化しようとしていたテストです。

「キルスイッチ」サブシステムは、異常なルールを迅速に無効化できます。グローバル設定システムから情報を受け取り、過去には SOP に沿って使用してきましたが、「execute」アクションのあるルールには決して適用したことがありませんでした。キルスイッチが作動すると、コードは実行アクションの評価を正しくスキップします。しかし、その後全体結果を処理する際に次のようなエラーが発生しました。

if rule_result.action == "execute" then
  rule_result.execute.results = ruleset_results[tonumber(rule_result.execute.results_index)]
end

action="execute"
の場合、
rule_result.execute
オブジェクトが存在することを想定しています。ルールがスキップされたためオブジェクトは作成されず、Lua は nil 参照でエラーになります。

これは長年検出されていなかった単純なコードミスです。新しい FL2 プロキシ(Rust 実装)ではこのエラーは発生しません。


11月18日以降に行った変更について

先週の11月18日の障害とは別に、同様に長時間にわたる可用性低下を引き起こす変更を実施しました。どちらの場合も、顧客へのセキュリティ対策を目的としたデプロイが全ネットワークへ拡散し、ほぼ全顧客でエラーが発生しました。

当該障害後、数百社の顧客に直接連絡し、単一更新が広範囲への影響を防ぐための変更計画を共有しました。今回の障害ではこれらの変更が有効だったはずですが、未だ完全には導入されていません。

組織全体で最優先事項です。以下に示すプロジェクトが、同様の変更による影響を抑制するための鍵となります。

  • 拡張されたロールアウトとバージョニング – ソフトウェアは厳格なヘルス検証付きでデプロイされます。脅威対応や一般設定に使用されるデータも同様の安全性(ヘルス検証、クイックロールバック等)を備えます。
  • ストリームライン化されたブレイク・グラス機能 – 追加の障害種別が発生しても重要操作が継続できるようにします。内部サービスと顧客が使用するすべての標準インターフェースに適用されます。
  • フェイルオープンエラーハンドリング – クリティカルデータプレーンコンポーネントで誤ったハードファイルロジックを置き換えます。設定ファイルが破損または範囲外の場合、ログに残し既知の良好状態へフォールバックするか、スコアリングせずトラフィックを通過させます。一部サービスでは特定シナリオでフェイルオープン/クローズを選択できるようになります。継続的なドリフト防止機能も含みます。

来週末までに、上記を含む全リジリエンスプロジェクトの詳細を公開予定です。その間はネットワーク変更をロックダウンし、対策とロールバック体制を整備します。

この種の連続した障害は私たちのネットワークとして許容できません。Cloudflare チーム一同、再び顧客やインターネット全体にご迷惑と痛みをお掛けしたことを深くお詫び申し上げます。


タイムライン

時刻(UTC)状態内容
08:47障害開始設定変更がデプロイされネットワークへ拡散
08:48完全影響変更が完全に伝播
08:50障害宣言自動アラート発火
09:11変更ロールバック設定変更を戻し、再度拡散開始
09:12障害終了ロールバックが完全に伝播、全トラフィック復旧

関連投稿

  • 2025年11月18日 – Cloudflare の障害(Bot Management 機能ファイル生成ロジックのバグ)
  • 2025年10月28日 – Q3 2025 インターネット中断概要
  • 2025年9月30日 – アフガニスタン全国インターネット停止が局所的影響を拡大

同じ日のほかのニュース

一覧に戻る →

2025/11/30 18:11

Self-hosting my photos with Immich

## Japanese Translation: 記事では、著者が低電力Ryzen 7ミニPC(ASRock DeskMini X600)に64 GB RAM、1 TBディスクを搭載し、アイドル時の消費電力が10 W未満である環境にImmichをセットアップした手順を説明しています。Proxmox上に「photos」という名前のVMを作成し、500 GBのストレージ、4つのCPUコア、4 GB RAMを割り当てました。NixOS設定ファイルで `services.immich.enable = true` を有効化してImmichサービスを起動します。このサービスは `tailscale serve --bg http://localhost:2283` コマンドと MagicDNS/TLS によりTailscale経由で公開され、`https://photos.example.ts.net` からアクセス可能です。 公式の `immich‑cli` を使用した初期写真インポートでは、バックグラウンドジョブがタイムアウトし、Google Takeout のJSONメタデータが無視されるという問題が発生しました。第三者ツール **immich-go** が両方の問題を解決します。`immich-go upload from-google-photos …` を実行することでバックグラウンドタスクを一時停止し、Google Takeout アーカイブを正しく処理できます。その後、iPhoneアプリはTailscale URL経由でログインし、自動アップロードが有効化され、通知は無効にしてアップロードアラートを防止します。 バックアップについては、著者はsystemdタイマーを使用して `/var/lib/immich`(UPLOAD_LOCATION)ディレクトリ全体を rsync で3‑2‑1戦略で同期する予定です。これはImmichの公式ドキュメントに従った方法です。記事では、Immichには組み込みの写真編集機能がないため、ユーザーはGIMPなど外部ツールを使用しなければならず、共有もまだGoogle Photos経由で行われると指摘しています。Enteと比較して、著者は既存のTailscale VPNとLUKSディスク暗号化が十分なセキュリティを提供するため、エンドツーエンド暗号化を必要としないImmichを好んでいます。 総じて、このセットアップは小型かつ省電力マシン上で高速で信頼性の高いセルフホスト写真保存ソリューションを実現しており、外部編集ワークフローを受け入れられる趣味家や小規模ビジネスに適しています。

2025/12/06 12:32

Nook Browser

## Japanese Translation: > **概要:** > 製品「Browse」はプライバシーを最優先としたオープンソースのウェブブラウザで、ユーザーのデータが販売または追跡されることは決してないと約束しています。WebKit エンジンをベースに構築されており、高速なパフォーマンスと最小限のシステムオーバーヘッドを実現しながら、インターフェイスはクリーンで侵入的なポップアップがありません。チャット支援や要約、最新のウェブ情報などの AI 機能は、ユーザーが明示的に選択した場合のみ利用可能です。コードベース全体が公開されており、パーミッシブ ライセンスでリリースされています。また、コミュニティ主導のロードマップに従い、新しいツールを追加する前に安定性を優先しています。設定はユーザーが理解しやすく、逆行可能(戻せる)ように設計されています。FAQ セクションでは、これらのポイント以外に独自の情報は提供されていません。 このバージョンは主要なポイントをすべて保持し、業界への影響についての推測を削除し、設定の逆行性と FAQ の内容に関する欠落した詳細を追加しています。

2025/12/06 12:17

PalmOS on FisherPrice Pixter Toy