Reguliarioji išraiška sustabdė Cloudflare. 27 minutėms.
2019 m.
2019 m. liepos 2 d., 13:42 UTC: viena nauja „Cloudflare“ žiniatinklio programų užkardos taisyklė įjungiama daugiau nei 180 miestų maždaug per dvi sekundes. Tai yra XSS taisyklė simuliavimo režimu, todėl ji nieko neblokuoja, tačiau ji vis tiek veikia su kiekviena užklausa ir baigiasi .*(?:.*=.*). PCRE atlieka atgalinį sekimą, kiekvienas procesoriaus branduolys, aptarnaujantis HTTP, pasiekia 100 %, o kiekviena „Cloudflare“ tarpinio serverio svetainė grąžina 502 klaidą 27 minutes; srautas sumažėja 82 %. Avarinis jungiklis yra už „Cloudflare Access“, kuris yra už „Cloudflare“. Pomirtinė analizė, iš „Cloudflare“ aprašymo: procesoriaus apsauga, pašalinta prieš kelias savaites pertvarkant siekiant taupyti procesorių, procedūra, leidusi bet kuriai taisyklei praleisti etapą, variklis be sudėtingumo garantijos, 11 priežasčių ir 7 pataisymai. Sprendimas dėl pataisymo: SHIP IT.
Skaityti rašytinę versiją (anglų k.) ↗
Kas aptariama šiame vaizdo įraše
- 13:31–13:42 UTC: PR sujungtas, CI žalia (be CPU testo), Quicksilver išsiunčia taisyklę į daugiau nei 180 miestų; WAF taisyklės praleidžia DOG → PIG → Canary etapus
- 13:45–14:07: pirmas puslapis; CPU 100 % visame pasaulyje, srautas −82 %, 502 visur; vidinis valdymo pultas yra už Cloudflare Access, kuris neveikia; kai kurie kredencialai pasibaigę; retai išbandytas apėjimas
- 14:07–14:09: visuotinis WAF išjungimas; srautas ir CPU normalūs po 27 minučių; 14:52 WAF grįžta be taisyklės
- Liepos 2 d. (15:50 UTC) ir liepos 12 d.: Cloudflare paskelbia tą pačią dieną pranešimą ir visą pomirtinę analizę; CPU apsauga vėl įjungta, 3 868 taisyklės peržiūrėtos, laipsniški diegimai, perėjimas prie tiesinio laiko reguliariosios išraiškos variklio
Išverstas transkriptas
Išversta iš originalo anglų kalbos. Galimas garso ir subtitrų valdymas per YouTube.
0:00 Viena reguliarioji išraiška vienu metu įjungiama kiekviename Cloudflare serveryje, ir per ateinančias dvidešimt septynias minutes svetainės už jos rodo 502 klaidą, kas, ugniasienei, yra griežčiausias įmanomas nustatymas. 2019 m. liepos 2 d., 13:42 UTC. Cloudflare paskelbia per dvi valandas: tai ne ataka, o blogas diegimas, srautas sumažėjo 82 procentais. Po dešimties dienų CTO John Graham-Cumming paskelbia visą pomirtinę analizę, įskaitant reguliariąją išraišką, ir Hacker News jai skiria 698 taškus,
0:26 kas už gedimą yra ovacijos stovint. Kaip tai atsitinka, kodėl tai įmanoma ir kas iš tikrųjų kaltas. Tai yra The Daily Diff, pomirtinė analizė. 13:31. Sugeneruotas užklausos prašymas: viena nauja ugniasienės taisyklė prieš kryžminį svetainių skriptavimą, simuliacijos režimu, todėl ji nieko neblokuoja. 13:37, testai praeina; nė vienas nematuoja CPU. 13:42, taisyklė pristatoma į 180 miestų per dvi sekundes, nes WAF taisyklės praleidžia šunų, kiaulių ir kanarėlių etapus, kuriuos gauna kiti leidimai.
0:54 13:45, pirmasis puslapis. 13:49, Hacker News turi temą apie būsenos puslapį, kuriame vis dar rašoma, kad visos sistemos veikia. Taisyklė baigiasi tašku-žvaigždute, tašku-žvaigždute, lygybės ženklu, tašku-žvaigždute: bet kas, tada bet kas, tada lygybės ženklas. PCRE godžiai spėlioja, nepavyksta ir atlieka atgalinį sekimą per visus kitus padalijimus. x lygu x trunka 23 žingsnius. Dvidešimt x po lygybės ženklo: 555.
1:15 Dvidešimt x, be lygybės ženklo: 4 067 žingsniai, kad nieko nerastų. Paleiskite tai kiekvienai užklausai ir kiekvienas branduolys veikia šimtu procentų, nieko nedarydamas, kruopščiai. Du sargybiniai turėjo tai pastebėti. CPU limitas taisyklėms buvo klaidingai pašalintas prieš kelias savaites, pertvarkant, kad WAF naudotų mažiau CPU. Ir procedūra leidžia bet kuriai taisyklei praleisti etapą, nes taisyklės egzistuoja tam, kad sustabdytų gyvas atakas; ši nebuvo avarinė, ir ji vis tiek išplito visame pasaulyje.
1:37 14:00, WAF identifikuojamas; jokios atakos. 14:02, kažkas siūlo visuotinį išjungimą: vienas komponentas, išjungtas, visame pasaulyje. Jungiklis yra už Cloudflare Access. Cloudflare Access yra už Cloudflare. Kai kurie kredencialai pasibaigė nuo nenaudojimo, todėl greičiausias tinklas internete praleidžia penkias minutes apėjimo metu, kurio niekas nebuvo išbandęs. 14:07, išjungti. 14:09, srautas normalus. git blame: diegimas vienu greičiu, pasaulinis; CPU apsauga netyčia pašalinta pertvarkant;
2:04 reguliariosios išraiškos variklis be viršutinės ribos. Ne inžinierius, kuris parašė taisyklę: pomirtinė analizė išvardija vienuolika priežasčių ir nieko neįvardija. Poveikio spindulys: 27 minutės, 82 procentai srauto, 100 procentų CPU kiekviename branduolyje, kiekviename mieste. Prietaisų skydelis ir API yra už to paties krašto, todėl klientai negali net išjungti jo. Hacker News, po pomirtinės analizės: jie turėjo vieną problemą, naudojo reguliariąją išraišką, dabar turi dvi. Senas pokštas. Vis dar kompiliuojasi.
2:28 Verdiktas, pomirtinė analizė: SHIP IT. CPU apsauga sugrįžo, visos 3 868 taisyklės skaitomos rankiniu būdu, taisyklės pereina etapus, o variklis pereina prie to, kuris turi tiesinio laiko garantijas, paskelbtas Ken Thompsono 1968 m. Pirmadienis: jokių taškų-žvaigždučių-taškų-žvaigždučių niekame, kas veikia pagal užklausą, ir laikyti avarinį jungiklį atskirai nuo to, ką jis išjungia. Atsiųskite man incidentą, apie kurį vis dar neleidžiama kalbėti, komentaruose arba daily diff dot dev.
2:53 Ir tai yra šiandienos skirtumas. Aš esu Niko iš Axrisi. Sujunkite atsakingai.
Šaltiniai
- John Graham-Cumming, "Details of the Cloudflare outage on July 2, 2019" (Jul 12, 2019)blog.cloudflare.com
- Matthew Prince, "Cloudflare outage caused by bad software deploy (updated)" (Jul 2, 2019)blog.cloudflare.com
- Matthew Prince on X, Jul 2, 2019, 14:22 UTCx.com
- Matthew Prince on X, Jul 2, 2019, 14:36 UTC ("No evidence yet attack related")x.com
- Hacker News, Jul 2, 2019, 13:49 UTC — "Cloudflare Network Performance Issues" (631 points)news.ycombinator.com
- Hacker News, Jul 2, 2019 — "Cloudflare outage caused by bad software deploy" (348 points)news.ycombinator.com
- Hacker News, Jul 12, 2019 — "Details of the Cloudflare outage on July 2, 2019" (698 points)news.ycombinator.com
- TechCrunch, Jul 2, 2019techcrunch.com



