+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

1ミリ秒のバグで英国の航空交通が6時間停止

9月8日火曜日の午前10時、NATSの国家空域システム(NAS)内で通常のスコークコード要求が、値の更新途中に優先度の高いメッセージによって中断された。

9月8日火曜日の午前10時、NATSの国家空域システム(NAS)内で通常のスコークコード要求が、値の更新途中に優先度の高いメッセージによって中断された。露出ウィンドウは約1ミリ秒。要求は誤ったまま再開され、フライトデータが破損し、午後7時30分までに2,000便以上の英国発着便が遅延、欠航、または目的地変更となった。

書面版を読む(英語) ↗

この動画の要点

  • 10:00: 1ミリ秒のウィンドウ内で中断された1つのリクエスト
  • タイムライン: 10:00 スコーク → 10:02 ブリップ → 12:45 出発停止 → 13:32 リンク喪失
  • 解決策: 全国のフライトデータを再起動
  • メカニズム: 書き込みの途中で一時停止
  • なぜ安全機能が空を停止させたのか

翻訳されたトランスクリプト

オリジナルの英語ナレーションから翻訳されています。利用可能なオーディオとキャプションはYouTubeによって管理されています。

10:00: 1ミリ秒のウィンドウ内で中断された1つのリクエスト

0:00 午前10時、英国のフライトデータシステム内で通常の要求が1つ まさに間違ったミリ秒で中断され、夕方までに2,000便以上が 遅延、欠航、または目的地変更となった。 これは、英国の航空交通管制サービスであるNatsによる予備報告からの情報だ。 攻撃の兆候はなく、誰も間違ったボタンを押していない。 単なるレガシーな欠陥と、非常に特定の1ミリ秒。 それがどのように起こり、なぜ1ミリ秒で十分だったのか、そして実際に誰が 責任を負うのか。これはThe Daily Diff、事後検証だ。

0:31 午前10時。誰かが手動でスコークコードを要求した。これはレーダーの点を

タイムライン: 10:00 スコーク → 10:02 ブリップ → 12:45 出発停止 → 13:32 リンク喪失

0:36 フライトプランに結びつける4桁の数字だ。 要求は有効であり、プランも有効だ。 午前10時2分。 ロンドン管制区域とコアシステムの間のリンクが切断され、 その後45秒で自動的に復旧した。 チケットには「復旧済み、安定、運用への影響なし」と記された。 午前12時32分。リンクが再び切断され始め、 毎回速くなり、管制官は一部の自動化機能を失った。

0:56 午前12時45分までに、英国発の便は停止された。 午後1時32分、リンクが切断され、そのままダウンした。 解決策は制御された再起動であり、それが高額な部分だった。

解決策: 全国のフライトデータを再起動

1:06 なぜなら、同じシステムが全国の管制センターや空港にデータを供給しているからだ。 バグはロンドンの空域に存在する。 しかし、制限は英国全体に及ぶ。 再起動は午後3時15分から4時10分まで行われ、 重複するフライトプランの整理には午後6時50分までかかった。 では、なぜ1ミリ秒で十分だったのか?

メカニズム: 書き込みの途中で一時停止

1:23 システムは優先度によってジョブを処理し、緊急のジョブのために小さなジョブを一時停止するのは 通常のことだ。しかし、このジョブは値の更新の途中にあった。 緊急メッセージはその1ミリ秒の間に届き、更新は途中で停止した。 再開されたとき、それは正しく再開されなかった。 その不良データは、その後のフライト更新の一部に漏洩した。

なぜ安全機能が空を停止させたのか

1:40 ロンドンはそれを読み込もうとするが、時間がかかりすぎてタイムアウトする。 タイムアウトは、両方のシステムを保護するために、設計通りにリンクを切断する。 安全機能は完璧に動作する。 それが問題なのだ。 報告書自身の言葉を借りれば。 もし緊急メッセージが1ミリ秒早く、あるいは遅く到着していたら、 更新は正常に完了していたはずだ。 Hacker Newsでは、あるプログラマーが1ミリ秒を「絶対的な永遠」と呼び、

2:02 「今週の火曜日には必ず起こる」とコメントした。 それは火曜日だった。

git blame — レガシーコード 50 · 再起動計画 30 · 10:02のアラーム 15 · 1 ms 5

2:05 git blame。レガシーコードが50%を占める。途中で一時停止されても 誤って再開される更新のためだ。 再起動計画が30%。ロンドンで1つの不良レコードが発生すると、 全国のフライトデータを再起動する必要があるからだ。 10時2分のアラームが15%。自己回復して「影響なし」として処理されたためだ。 そして、そのタイミングのために1ミリ秒に5%。 影響範囲。Natsはその日、約8,000便を計画し、約6,000便を処理した。

影響範囲: 計画8,000便、処理6,094便、3年間で3回目の障害

2:27 約6,000便を処理した。 英国発の便は約4時間半停止し、 未処理の件数は解消までに2日以上かかった。 これは英国で3年間で3回目の航空交通障害であり、 最高経営責任者(CEO)はこのバグを「非常に、非常に不明瞭」と呼んでいる。

評決 + 月曜日の提言: アトミックな書き込み、大きなアラーム

2:41 評決、事後検証: NEEDS REVIEW。 報告書は迅速かつ具体的で、修正案は作成されテスト中だ。 しかし、計画はより迅速な再起動であり、より小規模なものではない。 月曜日の提言: ジョブを一時停止できる場合、その書き込みをアトミックにし、 自己回復するアラームもアラームとして扱うこと。 まだ話せない事件を、コメントまたはthedailydiff.devまで送ってくれ。 コメントまたはthedailydiff.devまで送ってくれ。 今日の差分は以上だ。

3:02 AxrisiのNikoでした。 責任を持ってマージしてください。

情報源

  1. NATS, Major Incident Preliminary Investigation Report, NAS incident 08 September 2026 (report date Sep 16)www.nats.aero
  2. NATS press release, "NATS publishes preliminary report on technical incident of 8 September" (Sep 18, 2026)www.nats.aero
  3. NATS on X, 8 Sepx.com
  4. BBC, "Flight chaos caused by 'millisecond' software defect, report says"www.bbc.co.uk
  5. The Guardian (Sep 18, 2026)www.theguardian.com
  6. Hacker News thread on the reportnews.ycombinator.com

関連動画

postmortem · ja · 2026/09/22

再起動でテルストラは2006年に逆戻り。900万台の電話が影響。

メルボルンのエンジニアが午前2時50分にタイミングシャーシの電源を入れ直したところ、朝食の時間までにはオーストラリア最大のモバイルネットワークが「今は2006年11月である」と認識する事態に。2026年7月8日、テルストラのNTPシャーシ内のGPSカードが電源修理中に再起動し、ファームウェアにはGPS週数ロールオーバーのアップデートが一度も適用されていなかったため、古いエポックを選択し、1,024

3:15 ↗
postmortem · ja · 2026/09/19

Google Cloudが空白フィールドでクラッシュ。3時間。

空白のフィールドを含むポリシ行がヌルポインタにヒットし、Google Cloudはすべてのリージョンで一度にクラッシュしました。その後、Cloudflareもダウンしました。2025年6月12日、17:49 UTC: すべてのGoogle Cloud APIリクエストを承認するバイナリであるService Controlが、「意図しない空白フィールド」を含むクォータポリシの変更を読み込み、2週間前

2:57 ↗
postmortem · ja · 2026/09/16

Facebookがインターネットから消滅。6時間。

Facebookはインターネットから自社のアドレスを削除し、エンジニアがそれを元に戻しに到着しても、バッジリーダーもダウンしていました。なぜなら、それらはFacebook上で動作していたからです。2021年10月4日、15:40 UTC:日常的なバックボーンメンテナンスコマンドが、Facebookのデータセンター間のすべてのリンクをダウンさせました。それをブロックするために構築された監査ツールには

3:01 ↗
postmortem · ja · 2026/09/12

正規表現がCloudflareをダウンさせた。27分間。

2019年7月2日13時42分(UTC):CloudflareのWebアプリケーションファイアウォール(WAF)に新しいルールが180以上の都市で約2秒で適用されました。これはシミュレートモードのXSSルールであり、何もブロックしませんが、すべてのリクエストで実行され、末尾は.*(?:.*=.*)となっています。PCREはバックトラックし、HTTPを処理するすべてのCPUコアが100%に達し、Cl

3:00 ↗