+− THE DAILY DIFFdev & AI news
SHIP IT

Satu bidang ekstra membuat 8,5 juta PC macet. 78 menit.

19 Juli 2024, 04:09 UTC: CrowdStrike mendorong Channel File 291 — pembaruan Konten Respons Cepat — ke setiap sensor Windows Falcon yang daring.

19 Juli 2024, 04:09 UTC: CrowdStrike mendorong Channel File 291 — pembaruan Konten Respons Cepat — ke setiap sensor Windows Falcon yang daring. Template yang disediakannya telah dideklarasikan dengan 21 bidang input pada bulan Februari; kode yang memasok input membangun sebuah larik berisi 20. Selama empat bulan tidak ada yang membaca bidang ke-21, karena setiap aturan membiarkannya sebagai wildcard. Pembaruan ini menempatkan pola nyata di sana. Content Validator di sisi cloud menghitung 21 sesuai deklarasi dan meloloskannya; Content Interpreter sensor, tanpa pemeriksaan batas, membaca slot ke-21 dalam mode kernel dan Windows mengalami page-faults: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Driver dimuat lebih awal saat boot dengan sengaja, membaca file yang sama, macet lagi — boot loop. Dikembalikan pada 05:27 UTC, 78 menit kemudian, tetapi 8,5 juta mesin (hitung Microsoft, di bawah 1% dari Windows) sudah memiliki file tersebut, dan perbaikannya adalah seorang manusia di setiap keyboard: Safe Mode, hapus C-00000291*.sys, kunci pemulihan BitLocker. Maskapai penerbangan, rumah sakit, bank, dan pusat 911 berhenti; Delta membatalkan sekitar 7.000 penerbangan dan mengklaim setidaknya $500 juta dari CrowdStrike dan Microsoft; Parametrix memperkirakan tagihan Fortune 500 mendekati $5,4 miliar. Postmortem dari Analisis Akar Masalah CrowdStrike sendiri, Tinjauan Awal Pasca Insiden, blog Microsoft, 8-K Delta, dan kesaksian DPR. Git blame: 65 CrowdStrike / 25 desain mode kernel / 10 hari Jumat. Putusan perbaikan: SHIP IT, tipis.

Baca edisi tertulis (Inggris) ↗

Isi video ini

  • 28 Feb – 24 Apr 2024: sensor 7.11 mengirimkan Tipe Template IPC (21 bidang dideklarasikan, 20 disediakan); uji beban lolos 5 Mar; empat instans berfungsi karena bidang ke-21 adalah wildcard
  • 19 Jul, 04:09 UTC: dua Instans Template baru; kesalahan logika Content Validator meloloskan yang bukan wildcard; pembacaan di luar batas dalam kernel; 05:27 UTC dikembalikan
  • 19–29 Jul: remediasi manual (Safe Mode, hapus file, kunci BitLocker); ~97% sensor kembali pada 24 Jul, ~99% pada 29 Jul
  • 25 Jul – 19 Agt: pemeriksaan batas runtime, validasi jumlah bidang saat kompilasi, pemeriksaan Validator, canary + cincin penyebaran, kontrol pelanggan atas Konten Respons Cepat, dua tinjauan independen; RCA penuh dengan crash dump pada 6 Agt

Transkrip terjemahan

Diterjemahkan dari narasi asli bahasa Inggris. Audio dan teks tersedia yang dikontrol oleh YouTube.

0:00 Satu pembaruan keamanan membawa dua puluh satu bidang ke dalam driver yang dibuat untuk dua puluh, dan delapan setengah juta mesin Windows mengalami layar biru sebelum sarapan. 19 Juli 2024, 04:09 UTC. CrowdStrike mendorong Channel File 291 ke setiap sensor Falcon. Tujuh puluh delapan menit kemudian mereka menariknya; saat itu maskapai penerbangan, rumah sakit dan bank menatap persegi biru yang sama. Post pertama CEO mengatakan bukan serangan siber, benar, dan bukan intinya. Bagaimana itu terjadi, mengapa itu mungkin, dan siapa yang disalahkan.

0:27 Ini The Daily Diff, postmortem. 28 Februari. Sensor 7.11 mengirimkan detektor baru untuk pipa bernama. Ini mendeklarasikan dua puluh satu bidang input; kode yang memberinya input membangun sebuah larik berisi dua puluh. Tidak ada yang memperhatikan: selama empat bulan setiap aturan membiarkan bidang ke-21 sebagai wildcard, dan tidak ada yang membaca wildcard. Uji beban lolos, empat aturan dikirim, semuanya baik-baik saja. 19 Juli, 04:09. Dua aturan baru; satu menempatkan pola nyata di bidang ke-21.

0:51 Validator cloud menghitung dua puluh satu sesuai deklarasi dan mengatakan baik-baik saja. Setiap host Windows daring mengunduhnya sekaligus, karena tidak ada cincin canary. Sensor membaca slot dua puluh satu, yang bukan memorinya, dan kernel melakukan apa yang dilakukan kernel. 05:27, dikembalikan. Terlambat untuk siapa pun yang melakukan reboot: driver dimuat lebih awal saat boot, membaca file yang sama, dan macet lagi. Boot loop. Mengapa ini mungkin? Aturan adalah konfigurasi yang didorong dari cloud, jadi bukan kode melewati pipeline

1:16 kode. Interpreter tidak memiliki pemeriksaan batas; ia mempercayai validator, dan validator mempercayai deklarasi. Dan semuanya berjalan dalam mode kernel, di mana penunjuk yang buruk bukanlah pengecualian tetapi page fault yang menurut Windows tidak dapat dilindungi oleh try-except. Patrick Wardle membacanya dari crash dump sore itu: indeks nol x empat belas, slot dua puluh satu. Perbaikannya manual. Safe Mode, hapus C-00000291, reboot. Dengan BitLocker, pertama ketik kunci pemulihan

1:43 empat puluh delapan digit yang ada di server yang juga biru. Git blame. CrowdStrike, enam puluh lima persen: RCA mencantumkan enam temuan, dan temuan enam adalah kalimat lengkap: Instans Template harus memiliki penyebaran bertahap. Desain mode kernel, dua puluh lima: CrowdStrike mengatakan Windows belum dapat menampung keamanan di luar kernel, Microsoft mengatakan bukan insiden Microsoft, dan page fault tidak peduli.

2:05 Hari Jumat, sepuluh. Pesan commit mengatakan bukan kode. Jari-jari ledakan: delapan setengah juta perangkat, di bawah satu persen dari Windows. Delta membatalkan tujuh ribu penerbangan dan menuntut lima ratus juta, termasuk Microsoft. Penanggung memperkirakan tagihan Fortune 500 mendekati lima miliar. Berita Hacker: empat ribu lima ratus poin. Ironinya: pembaruan yang dimaksudkan untuk mendeteksi teknik serangan baru justru menyediakannya. Putusan, postmortem: SHIP IT, tipis.

2:27 Pemeriksaan batas dalam enam hari, cincin bertahap, kontrol pelanggan atas pembaruan konten, dua tinjauan eksternal. Tipis, karena semua itu sudah menjadi praktik standar. Senin: apa pun yang ditarik agen Anda dari cloud mendapatkan cincin canary. Konfigurasi adalah kode saat sesuatu menguraikannya di mana ia tidak dapat membuang. Kirimkan saya insiden yang masih tidak diizinkan untuk Anda bicarakan, di komentar, atau di daily diff dot dev. Dan itulah perbedaannya untuk hari ini.

2:48 Saya Niko dari Axrisi. Gabungkan dengan bertanggung jawab.

Sumber

  1. CrowdStrike, Root Cause Analysis — Channel File 291 (Aug 6, 2024, 12 pp.)www.crowdstrike.com
  2. CrowdStrike, Executive Summary of the RCA (Aug 6, 2024)www.crowdstrike.com
  3. CrowdStrike, Preliminary Post Incident Review (Jul 24, 2024)www.crowdstrike.com
  4. CrowdStrike, Remediation and Guidance Hub — Channel File 291 (the workaround steps)www.crowdstrike.com
  5. CrowdStrike, tech alert of Jul 19, 2024 (archived: Safe Mode → delete C-00000291*.sys → BitLocker key)web.archive.org
  6. Microsoft, David Weston, "Helping our customers through the CrowdStrike outage" (Jul 20, 2024; the 8.5 million figure)blogs.microsoft.com
  7. Delta Air Lines, Form 8-K (Aug 8, 2024; ~7,000 cancellations, at least $500 million)www.sec.gov
  8. Adam Meyers (CrowdStrike SVP), written testimony, House Homeland Security Subcommittee (Sep 24, 2024)homeland.house.gov
  9. George Kurtz on X, Jul 19, 2024, 09:45 UTCx.com
  10. Patrick Wardle on X, Jul 19, 2024 (the crash-dump index 0x14)x.com
  11. Hacker News, Jul 19, 2024 — "CrowdStrike Update: Windows Bluescreen and Boot Loops" (4,489 points)news.ycombinator.com
  12. The Guardian, Jul 24, 2024 — "CrowdStrike global outage to cost US Fortune 500 companies $5.4bn" (Parametrix estimate)www.theguardian.com
  13. Hacker News, Jul 21, 2024 — "Initial details about why CrowdStrike's CSAgent.sys crashed" (519 points)news.ycombinator.com
  14. Wikipedia — 2024 CrowdStrike-related IT outagesen.wikipedia.org

Video terkait