Regulaaravaldis viis Cloudflare'i rivist välja. 27 minutiks.
2.
2. juuli 2019, 13:42 UTC: üks uus reegel Cloudflare'i veebirakenduse tulemüüri jaoks läheb reaalajas tööle enam kui 180 linnas umbes kahe sekundiga. See on XSS-reegel simulatsioonirežiimis, nii et see ei blokeeri midagi, kuid see töötab ikkagi iga päringu puhul ja lõpeb .*(?:.*=.*). PCRE tagastab, iga HTTP-päringuid teenindav CPU-tuum saavutab 100% ja iga Cloudflare'i vahendusel töötav sait tagastab 502 vea 27 minutiks; liiklus langeb 82%. Päästiklüliti asub Cloudflare Accessi taga, mis omakorda asub Cloudflare'i taga. Järelevalvearuannest, Cloudflare'i enda kirjutisest: CPU-kaitse eemaldati nädalaid varem ümberkujundamise käigus, mis pidi säästma CPU-d, protseduur, mis lubas igal reeglil vahepealseid etappe vahele jätta, mootor, millel puudus keerukusgarantii, 11 põhjust ja 7 parandust. Paranduse otsus: SHIP IT.
Loe kirjalikku väljaannet (inglise keeles) ↗
Mida see video hõlmab
- 13:31–13:42 UTC: PR ühendatud, CI roheline (CPU testi ei ole), Quicksilver lükkab reegli enam kui 180 linna; WAF-reeglid jätavad DOG → PIG → Canary etapid vahele
- 13:45–14:07: esimene leht; CPU 100% üle maailma, liiklus –82%, kõikjal 502-d; sisemine juhtpaneel on Cloudflare Accessi taga, mis on maas; mõned mandaadid on aegunud; harva harjutatud möödaviik
- 14:07–14:09: globaalne WAF-i katkestus; liiklus ja CPU normaalsed pärast 27 minutit; 14:52 WAF tagasi miinus reegel
- 2. juuli (15:50 UTC) ja 12. juuli: Cloudflare avaldab samapäevase märkuse ja täieliku järelevalvearuande; CPU-kaitse uuesti lisatud, 3868 reeglit uuesti läbi loetud, etapiviisilised juurutamised, üleminek lineaaraja regulaaravaldise mootorile
Tõlgitud transkriptsioon
Tõlgitud ingliskeelsest originaaljutustusest. Saadaolevat heli ja subtiitreid kontrollib YouTube.
0:00 Üks regulaaravaldis läheb kohe tööle igas Cloudflare'i serveris, ja järgmised kakskümmend seitse minutit on selle taga olevad saidid 502 leht, mis tulemüüri jaoks on kõige rangem võimalik seade. 2. juuli 2019, 13:42 UTC. Cloudflare postitab kahe tunni jooksul: mitte rünnak, vaid halb juurutamine, liiklus langes 82 protsenti. Kümme päeva hiljem avaldab tehniline juht John Graham-Cumming täieliku järelevalvearuande, regulaaravaldis kaasa arvatud, ja Hacker News annab sellele 698 punkti,
0:26 mis katkestuse puhul on püsti seisev aplaus. Kuidas see juhtub, miks see on võimalik ja keda tegelikult süüdistatakse. See on The Daily Diff, järelevalvearuanne. 13:31. Ühendatakse tõmbepäring: üks uus tulemüüri reegel saidiüleste skriptide vastu, simulatsioonirežiimis, nii et see ei blokeeri midagi. 13:37, testid läbivad; ükski ei mõõda CPU-d. 13:42, reegel saadetakse 180 linna kahe sekundiga, sest WAF-reeglid jätavad koera, sea ja kanaari etapid vahele, mida teised väljalasked saavad.
0:54 13:45, esimene leht. 13:49, Hacker Newsil on teema olekulehel, mis ikka ütleb, et kõik süsteemid töötavad. Reegel lõpeb punkt-tärn, punkt-tärn, võrdub, punkt-tärn: mis iganes, siis mis iganes, siis võrdusmärk. PCRE arvab ahnelt, ebaõnnestub ja tagastab iga teise jaotuse kaudu. x võrdub x võtab 23 sammu. Kakskümmend x-i pärast võrdusmärki: 555.
1:15 Kakskümmend x-i, võrdusmärki ei ole: 4067 sammu, et mitte midagi leida. Käivita see iga päringu puhul ja iga tuum on sajaprotsendiliselt, tehes põhjalikult mitte midagi. Kaks valvurit oleksid pidanud selle kinni püüdma. Reeglite CPU-piirang eemaldati ekslikult nädalaid varem, ümberkujundamise käigus, mille eesmärk oli panna WAF vähem CPU-d kasutama. Ja protseduur laseb igal reeglil vahepealsed etapid vahele jätta, sest reeglid on olemas reaalajas rünnakute peatamiseks; see ei olnud hädaolukord ja see läks ikkagi globaalseks.
1:37 14:00, WAF on tuvastatud; rünnakut ei ole. 14:02, keegi pakub välja globaalse katkestamise: üks komponent, väljas, üle maailma. Lüliti on Cloudflare Accessi taga. Cloudflare Access on Cloudflare'i taga. Mõned mandaadid on mittetarvitamise tõttu aegunud, nii et kiireim võrk interneti veedab viis minutit möödaviigul, mida keegi ei harjutanud. 14:07, tapmine. 14:09, liiklus normaalne. git blame: juurutamine ühe kiirusega, globaalne; CPU-kaitse eemaldati ümberkujundamisega
2:04 kogemata; regulaaravaldise mootor ilma ülemise piirita. Mitte insener, kes reegli kirjutas: järelevalvearuanne loetleb üksteist põhjust ja nimetab mitte kedagi. Plahvatusraadius: 27 minutit, 82 protsenti liiklusest, 100 protsenti CPU igas tuumas, igas linnas. Armatuurlaud ja API asuvad sama serva taga, nii et kliendid ei saa isegi seda välja lülitada. Hacker News, järelevalvearuande all: neil oli üks probleem, kasutasid regulaaravaldist, nüüd on neil kaks. Vana nali. Ikka kompileerub.
2:28 Otsus, järelevalvearuanne: SHIP IT. CPU-kaitse on tagasi, kõik 3868 reeglit loetakse käsitsi läbi, reeglid läbivad etapid ja mootor liigub sellisele, millel on lineaaraja garantiid, avaldatud Ken Thompsoni poolt 1968. aastal. Esmaspäev: mitte punkt-tärn punkt-tärn midagi, mis töötab päringu kohta, ja hoia päästiklüliti sellest eemal, mida see tapab. Saada mulle intsident, millest sul ikka veel rääkida ei lubata, kommentaarides või daily diff dot dev lehel.
2:53 Ja see on tänane erinevus. Mina olen Niko Axrisist. Ühenda vastutustundlikult.
Allikad
- 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



