+− THE DAILY DIFFdev & AI news
SHIP IT

Një regex rrëzoi Cloudflare. 27 minuta.

2 korrik 2019, 13:42 UTC: një rregull i ri për Firewallin e Aplikacioneve Web të Cloudflare hyn në fuqi në mbi 180 qytete në rreth dy sekonda.

2 korrik 2019, 13:42 UTC: një rregull i ri për Firewallin e Aplikacioneve Web të Cloudflare hyn në fuqi në mbi 180 qytete në rreth dy sekonda. Është një rregull XSS në modalitetin simulues, kështu që nuk bllokon asgjë, por ende funksionon në çdo kërkesë, dhe përfundon me .*(?:.*=.*). PCRE kthehet pas, çdo bërthamë CPU që shërben HTTP arrin 100%, dhe çdo faqe e proxy-uar nga Cloudflare kthen 502 për 27 minuta; trafiku bie 82%. Çelësi i vrasjes ndodhet pas Cloudflare Access, i cili ndodhet pas Cloudflare. Postmortem, nga shkrimi i vetë Cloudflare: mbrojtja e CPU-së u hoq javë më parë në një refaktorizim që synonte të kursente CPU, procedura që lejonte çdo rregull të kapërcente fazën e vënies në punë, motori pa garanci kompleksiteti, 11 shkaqet dhe 7 rregullimet. Vendimi për rregullimin: SHIP IT.

Lexoni edicionin e shkruar (anglisht) ↗

Çfarë mbulon kjo video

  • 13:31–13:42 UTC: PR u bashkua, CI i gjelbër (pa test CPU), Quicksilver e shtyn rregullin në mbi 180 qytete; rregullat WAF kapërcejnë fazat QEN → DERR → Kanarie
  • 13:45–14:07: faqja e parë; CPU 100% në mbarë botën, trafiku −82%, 502s kudo; paneli i kontrollit të brendshëm është pas Cloudflare Access, i cili është i fikur; disa kredenciale kanë skaduar; një anashkalim i ushtruar rrallë
  • 14:07–14:09: ndërprerja globale e WAF; trafiku dhe CPU normal pas 27 minutash; 14:52 WAF kthehet minus rregullin
  • 2 korrik (15:50 UTC) dhe 12 korrik: Cloudflare boton shënimin e së njëjtës ditë dhe postmortemin e plotë; mbrojtja e CPU-së u ri-shtua, 3,868 rregulla u ri-lexuan, vënie në punë me faza, kalim në një motor regex me kohë lineare

Transkript i përkthyer

Përkthyer nga tregimi origjinal në anglisht. Audio dhe titrat e disponueshme kontrollohen nga YouTube.

0:00 Një shprehje e rregullt hyn në fuqi në çdo server të Cloudflare menjëherë, dhe për njëzet e shtatë minutat e ardhshme faqet pas saj janë një faqe 502, që, për një firewall, është cilësimi më i rreptë i mundshëm. 2 korrik 2019, 13:42 UTC. Cloudflare poston brenda dy orësh: jo një sulm, një vendosje e gabuar, trafiku ka rënë 82 për qind. Dhjetë ditë më vonë CTO John Graham-Cumming boton postmortemin e plotë, regex i përfshirë, dhe Hacker News i jep 698 pikë,

0:26 që për një ndërprerje është një ovacion i madh. Si ndodh, pse është e mundur, dhe kush merr fajin në të vërtetë. Ky është The Daily Diff, postmortem. 13:31. Një kërkesë tërheqjeje bashkohet: një rregull i ri firewall kundër shkrimit ndër-faqeve, në modalitetin simulues, kështu që nuk bllokon asgjë. 13:37, testet kalojnë; asnjë nuk mat CPU. 13:42, rregulli dërgohet në 180 qytete në dy sekonda, sepse rregullat WAF kapërcejnë fazat e qenit, derrit dhe kanaries që marrin versionet e tjera.

0:54 13:45, faqja e parë. 13:49, Hacker News ka një temë në faqen e statusit, e cila ende thotë se të gjitha sistemet janë operative. Rregulli përfundon me pikë-yll, pikë-yll, baraz, pikë-yll: çdo gjë, pastaj çdo gjë, pastaj një shenjë barazimi. PCRE hamendëson me pangopësi, dështon, dhe kthehet pas në çdo ndarje tjetër. x baraz me x merr 23 hapa. Njëzet x-a pas shenjës baraz: 555.

1:15 Njëzet x-a, pa shenjë barazimi: 4,067 hapa për të mos gjetur asgjë. Kryeni këtë në çdo kërkesë dhe çdo bërthamë është në njëqind për qind, duke bërë asgjë, thellësisht. Dy mbrojtës duhet ta kishin kapur. Limiti i CPU-së në rregullat u hoq gabimisht javë më parë, në një refaktorizim që synonte të bënte WAF-in të përdorte më pak CPU. Dhe procedura lejon çdo rregull të kapërcejë fazën e vënies në punë, sepse rregullat ekzistojnë për të ndaluar sulmet live; ky nuk ishte një emergjencë, dhe shkoi global gjithsesi.

1:37 14:00, WAF-i identifikohet; asnjë sulm. 14:02, dikush propozon ndërprerjen globale: një komponent, fikur, në mbarë botën. Çelësi është pas Cloudflare Access. Cloudflare Access është pas Cloudflare. Disa kredenciale kanë skaduar nga mos përdorimi, kështu që rrjeti më i shpejtë në internet kalon pesë minuta në një anashkalim që askush nuk e ushtroi. 14:07, vrasje. 14:09, trafiku normal. git blame: një lëshim me një shpejtësi, global; një mbrojtje CPU e refaktuar aksidentalisht

2:04 aksidentalisht; një motor regex pa kufi të sipërm. Jo inxhinieri që shkroi rregullin: postmortemi liston njëmbëdhjetë shkaqe dhe nuk emëron askënd. Rreze shpërthimi: 27 minuta, 82 për qind e trafikut, 100 për qind CPU në çdo bërthamë, në çdo qytet. Paneli i kontrollit dhe API-ja ndodhen pas të njëjtës periferi, kështu që klientët nuk mund as ta fikin atë. Hacker News, nën postmortem: ata kishin një problem, përdorën një shprehje të rregullt, tani kanë dy. Shaka e vjetër. Akoma kompilohet.

2:28 Vendimi, postmortem: SHIP IT. Mbrojtja e CPU-së është rikthyer, të gjitha 3,868 rregullat lexohen me dorë, rregullat kalojnë nëpër fazën e vënies në punë, dhe motori kalon në një me garanci kohe lineare, botuar nga Ken Thompson në 1968. E hënë: asnjë pikë-yll pikë-yll në asgjë që ekzekutohet për kërkesë, dhe mbajeni çelësin e vrasjes larg gjërat që vret. Më dërgoni incidentin për të cilin ende nuk ju lejohet të flisni, në komente, ose te the daily diff dot dev.

2:53 Dhe ky është ndryshimi për sot. Unë jam Niko nga Axrisi. Bashkoni me përgjegjësi.

Burimet

  1. John Graham-Cumming, "Details of the Cloudflare outage on July 2, 2019" (Jul 12, 2019)blog.cloudflare.com
  2. Matthew Prince, "Cloudflare outage caused by bad software deploy (updated)" (Jul 2, 2019)blog.cloudflare.com
  3. Matthew Prince on X, Jul 2, 2019, 14:22 UTCx.com
  4. Matthew Prince on X, Jul 2, 2019, 14:36 UTC ("No evidence yet attack related")x.com
  5. Hacker News, Jul 2, 2019, 13:49 UTC — "Cloudflare Network Performance Issues" (631 points)news.ycombinator.com
  6. Hacker News, Jul 2, 2019 — "Cloudflare outage caused by bad software deploy" (348 points)news.ycombinator.com
  7. Hacker News, Jul 12, 2019 — "Details of the Cloudflare outage on July 2, 2019" (698 points)news.ycombinator.com
  8. TechCrunch, Jul 2, 2019techcrunch.com

Video të ngjashme