Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Yuav luag 9 xyoo dhau los Cloudflare yog ib lub tuam txhab me me, thiab kuv tsis ua haujlwm rau nws, kuv tsuas yog tus neeg siv khoom xwb. Ib hlis tom qab tso tawm Cloudflare, Kuv tau txais kev ceeb toom tias kuv lub vev xaib jgc.orgDNS zoo li tsis ua haujlwm. Cloudflare tau hloov pauv rau Kev Cai Buffers, thiab muaj qhov tawg DNS.

Tam sim ntawd kuv tau sau ntawv mus rau Matthew Prince nrog lub npe "Kuv DNS nyob qhov twg?" thiab nws tau xa rov qab cov lus teb ntev tag nrho ntawm cov lus qhia (nyeem tag nrho cov ntawv xov xwm ntawm no), uas kuv teb tias:

Los ntawm: John Graham-Cumming
Hnub tim: Lub Kaum Hli 7, 2010, 9:14
Subject: Re: Kuv tus DNS nyob qhov twg?
Hu rau: Matthew Prince

Daim ntawv qhia txias, ua tsaug. Kuv yuav twv yuav raug hu yog tias muaj teeb meem. Tej zaum nws yuav tsim nyog sau ib tsab ntawv hais txog qhov no thaum koj tau sau tag nrho cov ntaub ntawv kev tshaj lij. Kuv xav tias tib neeg yuav txaus siab rau zaj dab neeg qhib thiab ncaj ncees. Tshwj xeeb tshaj yog tias koj muab cov duab kos rau nws los qhia tias kev khiav tsheb tau loj hlob li cas txij thaum pib.

Kuv muaj kev saib xyuas zoo ntawm kuv qhov chaw, thiab kuv tau txais SMS txog txhua qhov ua tsis tiav. Kev soj ntsuam qhia tau hais tias qhov tsis ua haujlwm tshwm sim thaum 13:03:07 txog 14:04:12. Kev ntsuam xyuas tau ua txhua tsib feeb.

Kuv paub tseeb tias koj yuav pom nws. Koj puas paub tseeb tias koj tsis xav tau koj tus kheej hauv Tebchaws Europe? πŸ™‚

Thiab nws teb tias:

Los ntawm: Matthew Prince
Hnub tim: Lub Kaum Hli 7, 2010, 9:57
Subject: Re: Kuv tus DNS nyob qhov twg?
Hu rau: John Graham-Cumming

Ua tsaug. Peb teb rau txhua tus uas sau. Kuv tab tom taug kev mus rau qhov chaw ua haujlwm tam sim no thiab peb yuav sau ib yam dab tsi ntawm blog lossis pin ib daim ntawv tshaj tawm ntawm peb cov ntawv xov xwm. Kuv pom zoo tag nrho, kev ncaj ncees yog txhua yam.

Tam sim no Cloudflare yog ib lub tuam txhab loj heev, kuv ua haujlwm rau nws, thiab tam sim no kuv yuav tsum tau sau ncaj qha txog peb qhov yuam kev, nws qhov tshwm sim thiab peb qhov kev ua.

Cov xwm txheej ntawm Lub Xya Hli 2

Thaum Lub Xya Hli 2nd peb tau tshaj tawm txoj cai tshiab hauv Cov Cai Tswjfwm rau WAFs vim li cas CPU cov peev txheej tau khiav tawm ntawm txhua tus processor core ua HTTP / HTTPS tsheb khiav ntawm Cloudflare network thoob ntiaj teb. Peb niaj hnub txhim kho cov cai tswj hwm rau WAFs hauv kev teb rau qhov tsis zoo thiab kev hem thawj tshiab. Nyob rau lub Tsib Hlis, piv txwv li, peb tau nrawm heev ntxiv txoj cailos tiv thaiv qhov tsis muaj zog loj hauv SharePoint. Tag nrho cov ntsiab lus ntawm peb WAF yog lub peev xwm los sai sai thiab thoob ntiaj teb xa cov cai.

Hmoov tsis zoo, qhov hloov tshiab kawg rau hnub Thursday muaj cov lus qhia tsis tu ncua uas tau siv ntau dhau HTTP / HTTPS CPU cov peev txheej ntawm kev rov qab. Peb lub luag haujlwm tseem ceeb, CDN, thiab WAF tau raug kev txom nyem los ntawm qhov tshwm sim. Daim duab qhia tau hais tias cov khoom siv ua haujlwm rau kev pabcuam HTTP / HTTPS tsheb mus txog yuav luag 100% ntawm cov servers hauv peb lub network.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019
Kev siv CPU ntawm ib qho chaw nyob thaum muaj xwm txheej

Yog li ntawd, peb cov neeg siv khoom (thiab peb cov neeg siv khoom 'cov neeg siv khoom) tau xaus nrog nplooj ntawv yuam kev 502 hauv Cloudflare domains. 502 yuam kev tau tsim los ntawm Cloudflare pem hauv ntej-kawg web servers uas tseem muaj cov cores dawb tab sis tsis tuaj yeem sib txuas lus nrog cov txheej txheem tuav HTTP / HTTPS tsheb.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Peb paub ntau npaum li cas inconvenience no tau ua rau peb cov neeg muas zaub. Peb txaj muag kawg. Thiab qhov kev ua tsis tiav no tiv thaiv peb los ntawm kev ua haujlwm zoo nrog qhov xwm txheej.

Yog tias koj yog ib tus ntawm cov neeg siv khoom no, tej zaum koj yuav ntshai, npau taws thiab chim siab. Ntxiv mus, peb tsis tau muaj ib tug kev cuam tshuam thoob ntiaj teb. Kev siv CPU siab yog vim ib txoj cai WAF nrog cov lus tsis zoo uas tsis tu ncua uas ua rau muaj kev rov qab ntau dhau. Nov yog qhov qhia ua txhaum: (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

Thaum qhov no yog qhov nthuav hauv nws tus kheej txoj cai (thiab kuv mam li tham txog nws hauv cov ntsiab lus hauv qab no), Cloudflare qhov kev pabcuam tau poob rau 27 feeb tsis yog vim hais tias tsis zoo ib yam. Nws siv sijhawm peb los piav qhia txog cov xwm txheej uas ua rau tsis ua haujlwm, yog li peb tau teb qeeb. Thaum kawg ntawm kev tshaj tawm, kuv yuav piav qhia txog kev rov qab mus rau hauv cov lus qhia tsis tu ncua thiab qhia koj tias yuav ua li cas nrog nws.

Muaj dab tsi tshwm sim

Cia peb pib nyob rau hauv kev txiav txim. Txhua lub sijhawm no nyob hauv UTC.

Thaum 13:42 teev tsaus ntuj, tus kws tshaj lij ntawm pab pawg firewall tau hloov pauv me me rau cov cai tshawb pom XSS siv cov txheej txheem tsis siv neeg. Yog li, daim pib thov hloov pauv tau tsim. Peb tswj cov pib zoo li no los ntawm Jira (screenshot hauv qab).

Tom qab 3 feeb, thawj nplooj ntawv ntawm PagerDuty tshwm sim, qhia txog teeb meem nrog WAF. Qhov no yog ib qho kev sim hluavtaws uas ntsuas kev ua haujlwm ntawm WAFs (peb muaj ntau pua ntawm lawv) sab nraum Cloudflare los saib xyuas kev ua haujlwm ib txwm muaj. Qhov no tau ua raws tam sim ntawd los ntawm nplooj ntawv ceeb toom txog lwm qhov kev xeem Cloudflare kawg-rau-kawg tsis ua haujlwm, teeb meem kev tsheb khiav thoob ntiaj teb, nthuav dav 502 qhov yuam kev, thiab ib tuj ntawm cov lus ceeb toom los ntawm peb Cov Ntsiab Lus Ntawm Kev Nyob (PoP) hauv cov nroog thoob ntiaj teb uas qhia tias tsis muaj ntawm CPU cov peev txheej.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Kuv tau txais ob peb qhov kev ceeb toom no, tawm tsam tawm ntawm lub rooj sib tham, thiab tau nyob ntawm kuv txoj kev mus rau lub rooj thaum tus thawj coj ntawm peb lub tuam txhab kev daws teeb meem tau hais tias peb tau poob 80% ntawm peb cov tsheb. Kuv tau khiav mus rau peb cov kws ua haujlwm SRE, uas twb tau ua haujlwm ntawm qhov teeb meem. Thaum xub thawj peb xav tias nws yog qee yam kev tawm tsam tsis paub.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Cloudflare SRE engineers tau tawg thoob plaws ntiaj teb thiab saib xyuas qhov xwm txheej ib puag ncig. Feem ntau, cov lus ceeb toom no ceeb toom rau koj txog cov teeb meem hauv cheeb tsam tshwj xeeb ntawm kev txwv, raug taug qab ntawm cov dashboards sab hauv, thiab raug daws ntau zaus hauv ib hnub. Tab sis cov nplooj ntawv no thiab cov ntawv ceeb toom qhia qee yam tseem ceeb, thiab SRE engineers tam sim ntawd tshaj tawm qhov hnyav theem P0 thiab hu rau kev tswj hwm thiab cov kws ua haujlwm hauv lub cev.

Peb cov engineers London tau mloog cov lus qhuab qhia hauv lub tsev loj thaum lub sijhawm ntawd. Cov lus qhuab qhia yuav tsum raug cuam tshuam, txhua tus tau sib sau ua ke hauv chav sib tham loj, thiab ntau tus kws tshaj lij raug hu. Qhov no tsis yog ib qho teeb meem uas SREs tuaj yeem daws nrog lawv tus kheej. Nws yog qhov ceev kom koom nrog cov kws tshaj lij txoj cai.

Thaum 14:00 peb txiav txim siab tias qhov teeb meem yog nrog WAF thiab tsis muaj kev tawm tsam. Pab pawg ua haujlwm tau rub cov ntaub ntawv CPU thiab nws tau pom tseeb tias WAF yuav tsum liam. Lwm tus neeg ua haujlwm tau lees paub qhov kev xav no siv txoj hlua. Lwm tus pom hauv cov cav uas muaj teeb meem nrog WAF. Thaum 14:02 teev tsaus ntuj, tag nrho pab neeg tuaj rau kuv thaum nws tau thov kom siv kev tua neeg thoob ntiaj teb, lub tshuab tsim rau hauv Cloudflare uas kaw ib feem thoob ntiaj teb.

Yuav ua li cas peb tau tua thoob ntiaj teb rau WAF yog ib zaj dab neeg sib txawv. Nws tsis yog qhov yooj yim. Peb siv peb tus kheej cov khoom, thiab txij li peb cov kev pabcuam Access tsis ua haujlwm, peb tsis tuaj yeem lees paub thiab nkag mus rau hauv pawg tswj hwm sab hauv (thaum txhua yam raug kho, peb tau kawm tias qee tus tswvcuab hauv pawg tau poob kev nkag mus vim muaj kev ruaj ntseg uas cuam tshuam cov ntaub ntawv pov thawj yog tias tsis muaj kev tswj hwm sab hauv. ntev).

Thiab peb tsis tuaj yeem nkag mus rau peb cov kev pabcuam sab hauv, xws li Jira lossis lub kaw lus tsim. Peb xav tau ib lub tshuab ua haujlwm, uas peb siv tsis tu ncua (qhov no kuj yuav tsum tau ua haujlwm tawm). Thaum kawg, ib tus kws tshaj lij tau tswj kom tsis txhob cuam tshuam WAF thaum 14:07, thiab thaum 14:09, kev khiav tsheb thiab CPU qib tau rov qab mus rau txhua qhov chaw. Tus so ntawm Cloudflare cov txheej txheem tiv thaiv ua haujlwm zoo li qub.

Tom qab ntawd peb tau teeb tsa txog kev rov kho WAF. Qhov xwm txheej tsis zoo li qub, yog li peb tau khiav qhov kev ntsuam xyuas tsis zoo (nug peb tus kheej yog tias qhov kev hloov pauv yog qhov teeb meem tiag tiag) thiab kev ntsuam xyuas zoo (kom paub tseeb tias qhov rov qab ua haujlwm) hauv ib lub nroog siv cov tsheb sib cais, hloov cov neeg siv khoom them nyiaj los ntawm qhov ntawd.

Thaum 14:52 peb tau ntseeg tias peb nkag siab qhov laj thawj thiab kho, thiab qhib WAF dua.

Yuav ua li cas Cloudflare ua haujlwm

Cloudflare muaj ib pab neeg ua haujlwm rau kev tswj xyuas cov cai rau WAFs. Lawv siv zog los txhim kho qhov kev kuaj pom, txo qhov tsis zoo, thiab teb sai sai rau cov kev hem thawj tshiab thaum lawv tshwm sim. Hauv 60 hnub dhau los, muaj 476 qhov kev thov hloov pauv tau ua tiav cov cai tswj hwm rau WAF (qhov nruab nrab ntawm ib qho txhua 3 teev).

Qhov kev hloov pauv tshwj xeeb no yuav tsum tau muab tso rau hauv hom simulation, qhov twg cov neeg siv khoom tiag tiag hla dhau txoj cai, tab sis tsis muaj dab tsi thaiv. Peb siv hom no los ntsuam xyuas cov kev ua tau zoo ntawm cov cai thiab ntsuas qhov tsis zoo thiab qhov tsis zoo tsis raug. Tab sis txawm nyob rau hauv simulation hom, cov kev cai yuav tsum tau ua tiag tiag, thiab nyob rau hauv cov ntaub ntawv no txoj cai muaj ib tug tsis tu ncua qhia uas yog siv ntau heev processor.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Raws li koj tuaj yeem pom los ntawm qhov kev thov hloov pauv saum toj no, peb muaj cov phiaj xwm xa tawm, kev npaj rov qab, thiab txuas mus rau tus txheej txheem kev ua haujlwm sab hauv (SOP) rau hom kev xa tawm no. SOP hloov txoj cai tso cai rau nws tshaj tawm thoob ntiaj teb. Qhov tseeb, ntawm Cloudflare, txhua yam ua tiav txawv kiag li, thiab SOP hais tias peb thawj zaug xa cov software rau kev sim thiab siv sab hauv mus rau qhov chaw sab hauv (PoP) (uas peb cov neeg ua haujlwm siv), tom qab ntawd rau qee tus neeg siv khoom hauv ib qho chaw cais, tom qab ntawd mus rau ntau tus neeg siv khoom, thiab tsuas yog tom qab ntawd mus rau tag nrho lub ntiaj teb.

Qhov no yog qhov nws zoo li. Peb siv git sab hauv ntawm BitBucket. Cov kws ua haujlwm ua haujlwm ntawm kev hloov pauv xa cov lej, uas yog tsim rau TeamCity, thiab thaum tsim dhau, cov neeg tshuaj xyuas raug xaiv. Thaum qhov kev thov rub tau pom zoo, cov cai tau sib sau ua ke thiab cov kev sim ua haujlwm tau ua tiav (dua).

Yog tias kev tsim thiab kev sim ua tiav tiav, qhov kev thov hloov pauv tau tsim hauv Jira thiab tus thawj coj tsim nyog lossis tus thawj coj yuav tsum pom zoo qhov kev hloov pauv. Tom qab kev pom zoo, kev xa tawm tshwm sim rau hauv qhov hu ua "PoP menagerie": DOG, PIG thiab Canary (dog, npua thiab canary).

DOG PoP yog Cloudflare PoP (zoo li txhua lwm yam ntawm peb lub nroog) uas tsuas yog siv los ntawm Cloudflare cov neeg ua haujlwm. PoP rau kev siv sab hauv tso cai rau koj ntes cov teeb meem ua ntej cov neeg siv khoom lag luam pib ntws mus rau hauv kev daws teeb meem. Muaj txiaj ntsig.

Yog tias qhov kev xeem DOG ua tiav, cov cai txav mus rau PIG (guinea npua) theem. Qhov no yog Cloudflare PoP, qhov twg me me ntawm cov neeg siv khoom dawb khiav los ntawm cov cai tshiab.
Yog tias txhua yam zoo, cov cai nkag mus rau hauv Canary. Peb muaj peb Canary PoPs nyob rau hauv ntau qhov chaw ntawm lub ntiaj teb no. Nyob rau hauv lawv, kev khiav tsheb ntawm cov neeg them nyiaj thiab cov neeg siv dawb hla dhau los ntawm cov cai tshiab, thiab qhov no yog qhov kev kuaj zaum kawg rau qhov yuam kev.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019
Software tso tawm txheej txheem ntawm Cloudflare

Yog hais tias tus lej yog ok hauv Canary, peb tso nws. Mus dhau txhua theem - DOG, PIG, Canary, tag nrho lub ntiaj teb - yuav siv sij hawm ob peb teev los yog hnub, nyob ntawm seb tus lej hloov. Vim muaj ntau haiv neeg ntawm Cloudflare lub network thiab cov neeg siv khoom, peb ua tib zoo sim cov cai ua ntej tso tawm thoob ntiaj teb rau txhua tus neeg siv khoom. Tab sis WAF tsis tshwj xeeb ua raws li cov txheej txheem no vim tias kev hem thawj yuav tsum tau teb sai sai.

WAF kev hem
Ob peb xyoos dhau los, tau muaj qhov nce ntxiv hauv kev hem thawj hauv kev siv ntau yam. Qhov no yog vim muaj ntau dua ntawm cov cuab yeej kuaj software. Piv txwv li, peb tsis ntev los no tau sau txog fuzzing).

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019
Tau qhov twg los: https://cvedetails.com/

Feem ntau, cov ntaub ntawv pov thawj ntawm lub tswv yim yog tsim thiab luam tawm tam sim ntawd ntawm Github kom cov pab pawg tswj hwm daim ntawv thov tuaj yeem sim nws sai thiab xyuas kom meej tias nws muaj kev nyab xeeb txaus. Yog li ntawd, Cloudflare xav tau lub peev xwm los teb cov kev tawm tsam tshiab kom sai li sai tau kom cov neeg siv khoom muaj lub sijhawm los kho lawv cov software.

Ib qho piv txwv zoo ntawm Cloudflare cov lus teb ceev yog kev xa tawm ntawm SharePoint kev tiv thaiv qhov tsis zoo nyob rau lub Tsib Hlis (nyeem ntawm no). Yuav luag tam sim ntawd tom qab kev tshaj tawm, peb pom muaj ntau qhov kev sim siv qhov tsis zoo hauv peb cov neeg siv khoom SharePoint kev teeb tsa. Peb cov txiv neej niaj hnub saib xyuas kev hem thawj tshiab thiab sau cov cai los tiv thaiv peb cov neeg siv khoom.

Txoj cai uas ua rau muaj teeb meem rau hnub Thursday yuav tsum tiv thaiv kev sau ntawv hla chaw (XSS). Cov kev tawm tsam zoo li no tau dhau los ua ntau zaus hauv xyoo tas los no.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019
Tau qhov twg los: https://cvedetails.com/

Cov txheej txheem txheej txheem rau kev hloov txoj cai tswj hwm rau WAF yog ua kom muaj kev sib koom ua ke txuas ntxiv (CI) kev sim ua ntej kev xa tawm thoob ntiaj teb. Hnub Thursday kawg peb tau ua qhov no thiab nthuav tawm cov cai. Thaum 13:31 teev tsaus ntuj, tus kws tshaj lij tau xa daim ntawv thov rub tawm nrog kev hloov pauv.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Thaum 13:37 TeamCity tau sau cov cai, khiav kev sim thiab muab qhov ua ntej. WAF test suite kuaj cov haujlwm tseem ceeb ntawm WAF thiab muaj ntau qhov kev sim ntsuas rau ib tus neeg ua haujlwm. Tom qab chav ntsuas ntsuas, peb tau sim cov cai rau WAF siv ntau qhov kev thov HTTP. HTTP thov xyuas seb qhov kev thov twg yuav tsum raug thaiv los ntawm WAF (kom cuam tshuam qhov kev tawm tsam) thiab qhov twg tuaj yeem tso cai los ntawm (kom tsis txhob thaiv txhua yam thiab zam qhov tsis zoo). Tab sis peb tsis tau sim rau kev siv CPU ntau dhau, thiab kev tshuaj xyuas cov cav ntawm WAF yav dhau los tsim qhia tau hais tias lub sijhawm ntsuas kev ua tiav tsis tau nce ntxiv, thiab nws nyuaj rau xav tias yuav tsis muaj peev txheej txaus.

Cov kev xeem dhau los thiab TeamCity tau pib xa cov kev hloov pauv thaum 13:42 teev tsaus ntuj.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Quicksilver

WAF cov cai tsom mus rau kev daws teeb meem tam sim ntawd, yog li peb xa lawv siv Quicksilver lub khw muag khoom tseem ceeb, uas nthuav tawm kev hloov pauv thoob ntiaj teb hauv vib nas this. Tag nrho peb cov neeg siv khoom siv cov thev naus laus zis no thaum lawv hloov cov teeb tsa hauv dashboard lossis ntawm API, thiab nws ua tsaug rau nws uas peb teb rau cov kev hloov pauv nrog xob laim ceev.

Peb tsis tau tham ntau txog Quicksilver. Yav dhau los peb siv Kyoto Tycoon Raws li lub khw muag khoom thoob ntiaj teb faib cov khub tseem ceeb, tab sis muaj teeb meem kev ua haujlwm nrog nws, thiab peb tau sau peb lub khw, rov ua dua hauv ntau dua 180 lub nroog. Tam sim no peb siv Quicksilver los thawb kev hloov pauv rau cov neeg siv khoom, hloov kho WAF cov cai, thiab faib JavaScript code sau los ntawm cov neeg siv khoom rau Cloudflare Workers.

Nws tsuas yog siv ob peb vib nas this los ntawm nias lub pob ntawm lub dashboard lossis hu rau API los ua qhov kev hloov pauv thoob ntiaj teb. Cov neeg siv khoom nyiam qhov kev teeb tsa ceev no. Thiab Cov Neeg Ua Haujlwm muab lawv yuav luag tam sim ntawd thoob ntiaj teb software xa tawm. Qhov nruab nrab, Quicksilver propagates txog 350 hloov ib ob.

Thiab Quicksilver yog ceev heev. Qhov nruab nrab, peb ua tiav 99 feem pua ​​​​ntawm 2,29 vib nas this los tshaj tawm cov kev hloov pauv rau txhua lub khoos phis tawj thoob ntiaj teb. Kev nrawm feem ntau yog qhov zoo. Tom qab tag nrho, thaum koj ua kom muaj nuj nqi lossis tshem tawm cov cache, nws yuav luag tam sim ntawd thiab txhua qhov chaw. Xa cov lej los ntawm Cloudflare Cov Neeg Ua Haujlwm tshwm sim ntawm tib qhov ceev. Cloudflare cog lus rau nws cov neeg siv khoom hloov kho sai thaum lub sijhawm.

Tab sis nyob rau hauv cov ntaub ntawv no, ceev ua ib tug siab phem tso dag rau peb, thiab cov kev cai hloov txhua qhov chaw nyob rau hauv ib lub vib nas this. Tej zaum koj yuav tau pom tias WAF code siv Lua. Cloudflare siv Lua ntau hauv kev tsim khoom thiab cov ntsiab lus Lua in WAF Kuv twb tham lawm. Lua WAF siv COJ sab hauv thiab siv backtracking rau kev sib piv. Nws tsis muaj cov txheej txheem los tiv thaiv cov kab lus uas tawm ntawm kev tswj hwm. Hauv qab no kuv yuav tham ntxiv txog qhov no thiab peb tab tom ua dab tsi txog nws.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Ua ntej cov kev cai raug xa mus, txhua yam ua tau zoo: qhov kev thov rub tau tsim thiab pom zoo, CI / CD pipeline tau sau thiab kuaj cov cai, qhov kev thov hloov pauv tau xa mus raws li SOP uas tswj kev xa tawm thiab rov qab, thiab kev xa tawm tiav.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019
Cloudflare WAF Deployment Process

Ib yam dab tsi mus tsis ncaj ncees lawm
Raws li kuv tau hais, peb siv ntau ntau txoj cai WAF tshiab txhua lub lim tiam, thiab peb muaj ntau lub hauv paus los tiv thaiv qhov tshwm sim tsis zoo ntawm kev xa tawm. Thiab thaum ib yam dab tsi mus tsis ncaj ncees lawm, nws feem ntau yog ua ke ntawm ob peb qhov xwm txheej ib zaug. Yog tias koj pom ib qho laj thawj, qhov no, ntawm chav kawm, yog qhov tseeb, tab sis nws tsis yog ib txwm muaj tseeb. Cov no yog cov laj thawj uas ua ke ua rau tsis ua haujlwm ntawm peb qhov kev pabcuam HTTP / HTTPS.

  1. Ib tug engineer sau ib qho kev qhia tsis tu ncua uas tuaj yeem ua rau ntau dhau rov qab.
  2. Ib qho tshwj xeeb uas tuaj yeem tiv thaiv cov lus qhia tsis tu ncua los ntawm nkim CPU ntau dhau lawm raug tshem tawm yuam kev hauv kev rov ua haujlwm ntawm WAF ob peb lub lis piam ua ntej - qhov kev hloov pauv yuav tsum tau ua kom WAF haus cov peev txheej tsawg.
  3. Lub cav qhia tsis tu ncua tsis muaj kev lav phib xaub.
  4. Chav ntsuas ntsuas tsis tuaj yeem kuaj xyuas CPU ntau dhau.
  5. SOP tso cai rau cov kev hloov pauv tsis ceev yuav tsum tau dov tawm thoob ntiaj teb yam tsis muaj txheej txheem ntau kauj ruam.
  6. Txoj kev npaj rov qab yuav tsum tau ua kom tiav WAF tsim ob zaug, uas siv sijhawm ntev.
  7. Thawj qhov kev ceeb toom txog teeb meem kev tsheb khiav thoob ntiaj teb tau ua rau lig dhau lawm.
  8. Peb siv sijhawm ib pliag los hloov kho nplooj ntawv xwm txheej.
  9. Peb muaj teeb meem nkag mus rau cov tshuab vim muaj qhov tsis sib xws, thiab cov txheej txheem bypass tsis tau tsim zoo.
  10. SRE engineers poob nkag mus rau qee lub tshuab vim tias lawv cov ntawv pov thawj tau tas sij hawm vim muaj kev ruaj ntseg.
  11. Peb cov neeg siv khoom tsis tuaj yeem nkag mus rau Cloudflare dashboard lossis API vim lawv mus dhau thaj tsam Cloudflare.

Dab tsi tau hloov txij li hnub Thursday dhau los

Ua ntej, peb tau tso tseg tag nrho cov haujlwm ntawm kev tshaj tawm rau WAF thiab tab tom ua cov hauv qab no:

  1. Peb tab tom rov nthuav qhia CPU dhau kev tiv thaiv uas peb tshem tawm. (Npaj)
  2. Kev txheeb xyuas tag nrho 3868 cov cai hauv cov cai tswj hwm rau WAF txhawm rau nrhiav thiab kho lwm qhov xwm txheej ntawm kev rov qab ntau dhau. (Daim ntawv pov thawj tiav)
  3. Peb suav nrog kev ua tau zoo profile rau txhua txoj cai hauv cov txheej txheem xeem. (Tshaj Tawm: Lub Xya Hli 19)
  4. Hloov mus rau lub cav tsis tu ncua Re2 los yog xeb - ob leeg muab runtime guarantees. (Tshaj Tawm: Lub Xya Hli 31)
  5. Peb tab tom rov sau dua SOP kom xa cov cai hauv theem, zoo li lwm yam software hauv Cloudflare, tab sis tib lub sijhawm muaj peev xwm ua kom muaj xwm txheej ceev thoob ntiaj teb yog tias muaj kev tawm tsam tau pib.
  6. Peb tab tom txhim kho lub peev xwm sai sai tshem tawm Cloudflare dashboard thiab API los ntawm Cloudflare cheeb tsam.
  7. Automating nplooj ntawv hloov tshiab Cloudflare xwm txheej.

Lub sij hawm ntev peb tsiv tawm ntawm Lua WAF kuv tau sau ob peb xyoos dhau los. Hloov WAF rau tshiab firewall system. Txoj kev no WAF yuav nrawm dua thiab tau txais kev tiv thaiv ntxiv.

xaus

Qhov kev ua tsis tiav no ua rau muaj teeb meem rau peb thiab peb cov neeg siv khoom. Peb tau ua sai sai los kho qhov xwm txheej thiab tam sim no tab tom ua haujlwm ntawm qhov tsis zoo hauv cov txheej txheem uas ua rau muaj kev sib tsoo, nrog rau kev khawb txawm tias tob dua los tiv thaiv cov teeb meem uas muaj feem cuam tshuam nrog cov lus qhia tsis tu ncua yav tom ntej thaum tsiv mus rau cov cuab yeej tshiab.

Peb txaj muag heev txog qhov kev tawm tsam no thiab thov txim rau peb cov neeg siv khoom. Peb vam tias cov kev hloov pauv no yuav ua kom muaj qee yam zoo li no tsis tshwm sim dua.

Daim ntawv thov. Backtracking cov lus qhia tsis tu ncua

Yuav kom nkag siab li cas cov lus qhia:

(?:(?:"|'|]|}||d
(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-
|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

noj tag nrho cov peev txheej CPU, koj yuav tsum paub me ntsis txog yuav ua li cas tus qauv qhia lub cav ua haujlwm. Qhov teeb meem ntawm no yog tus qauv .*(?:.*=.*). (?: thiab sib raug ) yog ib pab neeg tsis ntes (uas yog, cov lus qhia nyob rau hauv kab lus yog pab pawg raws li ib qho kev qhia).

Hauv cov ntsiab lus ntawm kev siv CPU ntau dhau, tus qauv no tuaj yeem piav qhia raws li .*.*=.*. Hauv daim ntawv no, tus qauv zoo li tsis tsim nyog. Tab sis qhov tseem ceeb tshaj, nyob rau hauv lub ntiaj teb tiag tiag, cov lus qhia (xws li cov lus qhia nyuaj hauv WAF cov cai) uas nug lub cav kom phim ib feem ua raws li lwm qhov tawg tuaj yeem ua rau muaj kev puas tsuaj loj. Thiab yog vim li cas.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Nyob rau hauv kev qhia tsis tu ncua . txhais tau tias koj yuav tsum phim ib tus cwj pwm, .* - phim xoom lossis ntau tus cim "greedily", uas yog, ntes ntau tus cim, yog li ntawd .*.*=.* txhais tau tias phim xoom lossis ntau tus cim, ces phim xoom lossis ntau tus cim, nrhiav cov ntawv = cim, phim xoom lossis ntau tus cim.

Wb coj txoj kab xeem x=x. Nws sib raug rau qhov kev qhia .*.*=.*. .*.* ua ntej lub cim sib npaug sib npaug rau thawj x (ib pawg .* соотвСтствуСт x, thiab qhov thib ob - xoom cim). .* tom qab = matches kawg x.

Qhov kev sib piv no yuav tsum muaj 23 kauj ruam. Thawj pab pawg .* Π² .*.*=.* ua greedily thiab phim tag nrho cov hlua x=x. Lub cav txav mus rau pawg tom ntej .*. Peb tsis muaj cov cim ntxiv kom phim, yog li pab pawg thib ob .* phim xoom cim (qhov no tso cai). Ces lub cav txav mus rau qhov kos npe =. Tsis muaj cov cim ntxiv (thawj pab pawg .* siv tag nrho cov lus qhia x=x), tsis muaj kev sib piv.

Thiab tom qab ntawd cov lus qhia tsis tu ncua rov qab mus rau qhov pib. Nws txav mus rau thawj pab pawg .* thiab muab piv rau nws с x= (hloov x=x), thiab tom qab ntawd coj mus rau pawg thib ob .*. Pab pawg thib ob .* yog piv nrog tus thib ob x, thiab peb dua tsis muaj cov cim tseg. Thiab thaum lub cav nce mus txog dua = в .*.*=.*, tsis muaj dab tsi ua haujlwm. Thiab nws backtracks dua.

Lub sijhawm no pab pawg .* tseem sib phim x=, tab sis pawg thib ob .* tsis muaj ntxiv lawm x, thiab xoom cim. Lub cav yog sim nrhiav ib tug literal cim = hauv tus qauv .*.*=.*, tab sis tsis tawm (tom qab tag nrho, thawj pab pawg twb tau nyob nws .*). Thiab nws backtracks dua.

Lub sijhawm no thawj pab pawg .* siv xwb thawj x. Tab sis pawg thib ob .* "greedily" captures =x. Koj puas tau twv seb yuav tshwm sim li cas? Lub cav sim kom phim cov lus =, ua tsis tiav thiab ua rau lwm qhov rov qab.

Thawj pab pawg .* tseem phim thawj tus x. Thib ob .* siv xwb =. Ntawm chav kawm, lub cav tsis tuaj yeem phim cov lus =, vim pawg thib ob twb ua li no lawm .*. Thiab dua backtracking. Thiab peb tab tom sim kom phim ib txoj hlua ntawm peb lub cim!

Yog li ntawd, thawj pab pawg .* match tsuas yog thawj tus x, thib ob .* - nrog xoom cim, thiab lub cav thaum kawg sib tw cov lus = hauv kev qhia с = hauv kab. Tom ntej no yog pab pawg kawg .* yog piv nrog tus kawg x.

23 kauj ruam tsuas yog rau x=x. Saib cov yeeb yaj kiab luv luv txog kev siv Perl Regexp::Debugger, uas qhia tau hais tias cov kauj ruam thiab backtracking tshwm sim li cas.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Qhov no twb ua haujlwm ntau heev, tab sis yuav ua li cas yog tias hloov x=x peb yuav muaj x=xx? Qhov ntawd yog 33 kauj ruam. Thiab yog tias x=xxx? 45. Txoj kev sib raug zoo tsis yog linear. Daim duab qhia kev sib piv los ntawm x=x rau x=xxxxxxxxxxxxxxxxxxxx (20 x tom qab =). Yog tias peb muaj 20 x tom qab =, lub cav ua tiav qhov sib txuam hauv 555 kauj ruam! (Tsis tas li ntawd, yog tias peb poob lawm x= thiab txoj hlua tsuas yog muaj 20 x, lub cav yuav ua 4067 kauj ruam kom nkag siab tias tsis muaj qhov sib tw).

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Daim vis dis aus no qhia tag nrho cov backtracking rau kev sib piv x=xxxxxxxxxxxxxxxxxxxx:

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Qhov teeb meem yog tias raws li txoj hlua loj nce, lub sij hawm sib txuam loj hlob super-linearly. Tab sis tej yam tuaj yeem ua rau mob hnyav dua yog tias cov lus qhia tsis tu ncua tau hloov kho me ntsis. Wb hais tias peb muaj .*.*=.*; (uas yog, muaj ib tug literal semicolon ntawm qhov kawg ntawm tus qauv). Piv txwv li, kom phim ib qho kev qhia zoo li foo=bar;.

Thiab ntawm no backtracking yuav muaj kev puas tsuaj tiag tiag. Rau kev sib piv x=x nws yuav ua 90 kauj ruam, tsis yog 23. Thiab tus lej ntawd tau loj hlob sai. Sib piv x= thiab 20 x, 5353 cov kauj ruam yog xav tau. Nov yog daim duab. Saib cov axis qhov tseem ceeb Y piv rau daim duab dhau los.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Yog tias koj txaus siab, tshawb xyuas tag nrho 5353 cov kauj ruam ua tsis tiav x=xxxxxxxxxxxxxxxxxxxx ΠΈ .*.*=.*;

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Los ntawm kev siv tub nkeeg es tsis yog kev sib tw greedy, qhov twg ntawm kev rov qab tuaj yeem tswj tau. Yog peb hloov cov lus qub rau .*?.*?=.*?, rau kev sib piv x=x nws yuav siv 11 kauj ruam (tsis yog 23). Raws li rau x=xxxxxxxxxxxxxxxxxxxx. Txhua yam vim ? tom qab .* qhia lub cav kom phim tus lej tsawg kawg ntawm cov cim ua ntej txav mus.

Tab sis tub nkeeg mappings tsis tag daws cov teeb meem backtracking. Yog tias peb hloov qhov piv txwv kev puas tsuaj .*.*=.*; rau .*?.*?=.*?;, lub sijhawm ua haujlwm yuav nyob li qub. x=x tseem xav tau 555 kauj ruam, thiab x= thiab 20 x - 5353.

Qhov tsuas yog qhov uas tuaj yeem ua tau (tshwj tsis yog tag nrho rov sau cov qauv rau qhov tshwj xeeb dua) yog tso tseg lub cav tsis tu ncua nrog nws cov txheej txheem rov qab. Nov yog qhov peb yuav ua nyob rau ob peb lub lis piam tom ntej no.

Txoj kev daws teeb meem no tau paub txij li xyoo 1968, thaum Kent Thompson tau sau ib tsab xov xwm Programming Techniques: Tsis tu ncua qhia kev tshawb nrhiav algorithm ("Txoj Kev Ua Haujlwm: Kev Tshawb Fawb Txog Kev Tshawb Fawb"). Kab lus piav qhia txog lub tshuab uas tso cai rau koj los hloov cov lus qhia tsis tu ncua rau hauv cov tshuab tsis txiav txim siab lub xeev, thiab tom qab lub xeev hloov pauv hauv cov tshuab tsis txiav txim siab lub xeev, siv cov algorithm uas nws lub sijhawm ua tiav yog nyob ntawm txoj hlua sib tw.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Txoj kev Programming
Kev Qhia Txog Kev Tshawb Nrhiav Algorithm
Ken Thompson

Bell Telephone Laboratories, Inc., Murray Hill, New Jersey

Nws piav qhia txog ib txoj hauv kev tshawb nrhiav ib txoj hlua tshwj xeeb ntawm cov cim hauv cov ntawv nyeem thiab sib tham txog kev siv cov qauv no hauv daim ntawv compiler. Lub compiler siv cov lus qhia tsis tu ncua raws li qhov chaws thiab tsim IBM 7094 qhov kev pab cuam raws li cov khoom code. Qhov kev pab cuam kwv yees siv cov tswv yim nyob rau hauv daim ntawv ntawm kev tshawb nrhiav cov ntawv nyeem thiab emits ib lub teeb liab txhua lub sij hawm ib txoj hlua ntawm cov ntawv yog matched tawm tsam ib txwm qhia. Kab lus muab piv txwv, teeb meem thiab kev daws teeb meem.

Algorithm
Cov kev tshawb nrhiav yav dhau los ua rau muaj kev rov qab yog tias qhov kev tshawb nrhiav ua tiav ib nrab ua tsis tau tiav.

Hauv kev sib sau ua ke, algorithm tsis ua haujlwm nrog cov cim. Nws hla cov lus qhia kom muab tso ua ke code. Kev ua tiav sai heev - tom qab dhau cov ntaub ntawv mus rau sab saum toj ntawm daim ntawv teev npe tam sim no, nws cia li tshawb nrhiav txhua qhov ua tau sib law liag hauv cov lus qhia tsis tu ncua.
Kev muab tso ua ke thiab kev tshawb nrhiav algorithm suav nrog hauv lub sijhawm sib qhia cov ntawv nyeem raws li kev tshawb nrhiav cov ntsiab lus. Tau kawg, qhov no yog deb ntawm tsuas yog daim ntawv thov ntawm cov txheej txheem tshawb nrhiav. Piv txwv li, ib qho txawv ntawm qhov algorithm no yog siv los ua ib qho kev tshawb nrhiav hauv lub rooj hauv assembler.
Nws tau xav tias tus nyeem ntawv tau paub txog cov lus hais tsis tu ncua thiab IBM 7094 computer programming lus.

Compiler
Lub compiler muaj peb theem uas khiav nyob rau hauv parallel. Thawj theem yog syntax filtering, uas tso cai rau syntactically kho cov kab lus kom dhau mus. Cov kauj ruam no tseem tso tus neeg teb xov tooj "Β·" kom phim cov kab lus tsis tu ncua. Hauv kauj ruam thib ob, cov lus qhia tsis tu ncua yog hloov mus rau daim ntawv postfix. Nyob rau theem peb, cov khoom code yog tsim. Thawj 2 theem yog pom tseeb, thiab peb yuav tsis nyob ntawm lawv.

Thompson tsab xov xwm tsis tham txog nondeterministic finite state machines, tab sis nws piav qhia lub sij hawm linear algorithm zoo thiab nthuav qhia ALGOL-60 qhov kev pab cuam uas tsim cov lus sib dhos rau IBM 7094. Qhov kev siv yog tsis yooj yim, tab sis lub tswv yim yog yooj yim heev.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

txoj kev tshawb nrhiav tam sim no. Nws yog sawv cev los ntawm βŠ• icon nrog ib qho kev tawm tswv yim thiab ob qhov kev tso tawm.
Daim duab 1 qhia txog kev ua haujlwm ntawm qib peb muab tso ua ke thaum hloov pauv qhov piv txwv tsis tu ncua. Thawj peb lub cim hauv qhov piv txwv yog a, b, c, thiab txhua tus tsim ib pawg nkag S[i] thiab NNODE teb.

NNODE rau cov cai uas twb muaj lawm los tsim cov lus qhia tsis tu ncua hauv ib pawg nkag (saib daim duab 5)

Qhov no yog qhov kev qhia tsis tu ncua yuav zoo li .*.*=.*, yog tias koj xav txog nws zoo li hauv cov duab los ntawm Thompson tsab xov xwm.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Hauv daim duab. 0 muaj tsib lub xeev pib ntawm 0, thiab 3 lub voj voog uas pib los ntawm xeev 1, 2 thiab 3. Peb lub voj voog no sib raug rau peb. .* nyob rau hauv ib qho kev qhia tsis tu ncua. 3 ovals nrog dots sib haum rau ib lub cim. Oval nrog ib lub cim = matches ib tug literal cim =. Xeev 4 yog qhov kawg. Yog tias peb ncav cuag nws, ces qhov kev qhia tsis tu ncua yog sib npaug.

Txhawm rau saib seb lub xeev daim duab no siv tau li cas rau kev qhia sib txuam .*.*=.*, peb mam li saib txoj hlua txuam x=x. Qhov kev zov me nyuam pib los ntawm lub xeev 0, raws li qhia hauv daim duab. 1.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Rau qhov algorithm no ua haujlwm, lub xeev tshuab yuav tsum nyob hauv ntau lub xeev ib txhij. Lub tshuab tsis txiav txim siab txiav txim siab yuav ua rau txhua qhov kev hloov pauv tau ib txhij.

Ua ntej nws muaj sij hawm los nyeem cov ntaub ntawv tawm tswv yim, nws mus rau hauv ob lub xeev thawj (1 thiab 2), raws li qhia hauv daim duab. 2.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Hauv daim duab. 2 qhia tias yuav ua li cas thaum nws saib thawj zaug x Π² x=x. x tuaj yeem ua daim ntawv qhia rau saum toj kawg nkaus, mus ntawm xeev 1 thiab rov qab mus rau lub xeev 1. Los yog x tuaj yeem ua daim ntawv qhia rau lub ntsiab lus hauv qab no, mus los ntawm lub xeev 2 thiab rov qab mus rau lub xeev 2.

Tom qab txuam thawj x Π² x=x peb tseem nyob xeev 1 thiab 2. Peb mus tsis tau lub xeev 3 los yog 4 vim peb xav tau tus cwj pwm =.

Lub algorithm ces xav txog = Π² x=x. Zoo li x ua ntej nws, nws tuaj yeem sib phim rau ob lub voj voog saum toj kawg nkaus ntawm lub xeev 1 mus rau lub xeev 1 lossis los ntawm lub xeev 2 mus rau lub xeev 2, tab sis cov algorithm tuaj yeem phim cov lus. = thiab txav los ntawm xeev 2 mus rau lub xeev 3 (thiab tam sim ntawd 4). Qhov no yog qhia nyob rau hauv daim duab. 3.

Cov ntsiab lus ntawm Cloudflare outage thaum Lub Xya Hli 2, 2019

Lub algorithm ces txav mus rau qhov kawg x Π² x=x. Los ntawm lub xeev 1 thiab 2 tib qhov kev hloov pauv tuaj yeem rov qab mus rau lub xeev 1 thiab 2. Los ntawm lub xeev 3 x tuaj yeem phim lub ntsiab lus ntawm sab xis thiab rov qab mus rau lub xeev 3.

Nyob rau theem no, txhua tus cwj pwm x=x txiav txim siab, thiab txij li thaum peb tau mus txog lub xeev 4, cov lus qhia tsis tu ncua sib phim txoj hlua. Txhua tus cim tau ua tiav ib zaug, yog li no algorithm yog linear hauv qhov ntev ntawm txoj hlua nkag. Thiab tsis muaj backtracking.

Obviously, tom qab mus txog lub xeev 4 (thaum lub algorithm tau matched x=) tag nrho cov lus qhia tsis tu ncua yog sib npaug, thiab cov algorithm tuaj yeem txiav tawm yam tsis xav txog nws x.

Qhov algorithm no nyob ntawm linearly ntawm qhov loj ntawm cov hlua input.

Tau qhov twg los: www.hab.com

Ntxiv ib saib