Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Cha mhòr 9 bliadhna air ais b’ e companaidh beag bìodach a bh’ ann an Cloudflare, agus cha robh mi ag obair air a shon, cha robh annam ach neach-ceannach. Mìos às deidh Cloudflare a chuir air bhog, fhuair mi fios gun robh an làrach-lìn agam jgc.orgChan eil coltas gu bheil DNS ag obair. Tha Cloudflare air atharrachadh gu Buffers protocol, agus bha DNS briste.

Sgrìobh mi sa bhad gu Matthew Prince leis an tiotal “Càit a bheil an DNS agam?” agus chuir e air ais freagairt fhada làn mion-fhiosrachadh teicnigeach (leugh an litir gu lèir an seo), ris an do fhreagair mi :

Bho: Iain Greumach-Cumming
Ceann-latha: 7 Dàmhair, 2010, 9:14
Cuspair: Càit a bheil an draibhear airson DNS
Gu: Prionnsa Mata

Aithisg sgoinneil, tapadh leat. Canaidh mi gu cinnteach ma tha duilgheadasan ann. Is dòcha gum b’ fhiach post a sgrìobhadh mu dheidhinn seo aon uair ‘s gu bheil thu air am fiosrachadh teicnigeach gu lèir a chruinneachadh. Tha mi a’ smaoineachadh gun còrd sgeulachd fhosgailte is onarach ri daoine. Gu sònraichte ma cheanglas tu grafaichean ris gus sealltainn mar a tha trafaic air fàs bho chaidh a chuir air bhog.

Tha deagh sgrùdadh agam air an làrach agam, agus gheibh mi SMS mu gach fàilligeadh. Tha sgrùdadh a’ sealltainn gun do thachair an fàiligeadh bho 13:03:07 gu 14:04:12. Thèid deuchainnean a dhèanamh a h-uile còig mionaidean.

Tha mi cinnteach gum faigh thu a-mach e. A bheil thu cinnteach nach eil feum agad air an duine agad fhèin san Roinn Eòrpa? 🙂

Agus fhreagair esan:

Bho: Matthew Prince
Ceann-latha: 7 Dàmhair, 2010, 9:57
Cuspair: Càit a bheil an draibhear airson DNS
Gu: Iain Greumach-Cumming

Tapadh leat. Fhreagair sinn a h-uile duine a sgrìobh. Tha mi air mo shlighe dhan oifis a-nis agus sgrìobhaidh sinn rudeigin air a’ bhlog neo cuiridh sinn post oifigeil air a’ bhòrd-fiosrachaidh againn. Tha mi ag aontachadh gu tur, is e onair a h-uile dad.

A-nis tha Cloudflare na chompanaidh fìor mhòr, tha mi ag obair air a shon, agus a-nis feumaidh mi sgrìobhadh gu fosgailte mun mhearachd againn, na builean agus na gnìomhan againn.

Tachartasan 2 Iuchar

Air 2 Iuchar chuir sinn a-steach riaghailt ùr ann an Riaghailtean Stiùirichte airson WAFn air sgàth sin Bha goireasan CPU a’ ruith a-mach air a h-uile prìomh phròiseasar a’ giullachd trafaic HTTP/HTTPS air lìonra Cloudflare air feadh an t-saoghail. Tha sinn an-còmhnaidh ag adhartachadh riaghailtean stiùirichte airson WAFn mar fhreagairt air so-leòntachd agus bagairtean ùra. Anns a 'Chèitean, mar eisimpleir, rinn sinn cabhag cuir riaghailtgus dìon an aghaidh fìor chugallachd ann an SharePoint. Is e puing iomlan an WAF againn an comas riaghailtean a chuir an gnìomh gu sgiobalta agus air feadh na cruinne.

Gu mì-fhortanach, bha aithris cunbhalach ann an ùrachadh Diardaoin sa chaidh a bha a’ caitheamh cus ghoireasan CPU HTTP/HTTPS air cùl-taic. Dh’ fhuiling ar prìomh ghnìomhan neach-ionaid, CDN, agus WAF mar thoradh air an sin. Tha an graf a’ sealltainn gu bheil goireasan pròiseasar airson a bhith a’ frithealadh trafaic HTTP/HTTPS a’ ruighinn faisg air 100% air frithealaichean san lìonra againn.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019
Cleachdadh CPU aig aon àm an làthair aig tachartas

Mar thoradh air an sin, thàinig ar luchd-dèiligidh (agus luchd-dèiligidh ar luchd-dèiligidh) gu crìch le duilleag mearachd 502 air raointean Cloudflare. Chaidh mearachdan 502 a chruthachadh le frithealaichean lìn aghaidh Cloudflare aig an robh coraichean an-asgaidh fhathast ach nach robh comasach air conaltradh le pròiseasan a bha a’ làimhseachadh trafaic HTTP / HTTPS.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Tha fios againn dè an ìre de mhì-ghoireas a tha seo air adhbhrachadh don luchd-ceannach againn. Tha sinn air ar nàrachadh gu mòr. Agus chuir an fàilligeadh seo stad oirnn bho bhith a’ dèiligeadh gu h-èifeachdach ris an tachartas.

Nam b’ e aon de na teachdaichean sin a bh’ annad, is dòcha gu robh thu fo eagal, feargach agus troimh-chèile. A bharrachd air an sin, chan eil sinn air a brisidhean cruinne. Bha an caitheamh àrd CPU mar thoradh air aon riaghailt WAF le abairt cunbhalach le droch bhriathrachas a lean gu cus cùl-taic. Seo an abairt ciontach: (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

Ged a tha seo inntinneach leis fhèin (agus bruidhnidh mi mu dheidhinn nas mionaidiche gu h-ìosal), bha seirbheis Cloudflare sìos airson 27 mionaidean chan ann a-mhàin air sgàth droch abairt àbhaisteach. Thug e greis dhuinn cunntas a thoirt air an t-sreath de thachartasan a lean gu fàilligeadh, agus mar sin bha sinn slaodach airson freagairt. Aig deireadh na dreuchd, bheir mi cunntas air cùl-taic ann an abairt àbhaisteach agus innsidh mi dhut dè a nì thu leis.

Dè thachair

Feuch an tòisich sinn ann an òrdugh. Tha amannan an seo ann an UTC.

Aig 13:42f, rinn innleadair air sgioba nam ballachan-teine ​​​​atharrachadh beag air na riaghailtean lorgaidh XSS cleachdadh pròiseas fèin-ghluasadach. Mar sin, chaidh tiogaid iarrtas atharrachaidh a chruthachadh. Bidh sinn a’ riaghladh thiogaidean mar sin tro Jira (dealbh-sgrìn gu h-ìosal).

Às deidh 3 mionaidean, nochd a’ chiad duilleag de PagerDuty, ag aithris duilgheadas le WAF. B’ e deuchainn synthetigeach a bha seo a bhios a’ dèanamh deuchainn air comasachd WAFn (tha ceudan dhiubh againn) taobh a-muigh Cloudflare gus sùil a chumail air gnìomhachd àbhaisteach. Chaidh seo a leantainn sa bhad le duilleagan de rabhaidhean mu dheidhinn deuchainnean seirbheis deireadh-gu-deireadh Cloudflare eile a’ fàiligeadh, cùisean trafaic cruinne, mearachdan farsaing 502, agus tunna de aithisgean bho ar Puingean Presence (PoP) ann am bailtean-mòra air feadh an t-saoghail a chomharraich dìth de ghoireasan CPU.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Fhuair mi grunn de na rabhaidhean sin, chaidh mi a-mach à coinneamh, agus bha mi air mo shlighe chun bhòrd nuair a thuirt ceannard ar roinn leasachaidh fuasglaidhean gun robh sinn air 80% den trafaic againn a chall. Ruith mi chun na h-innleadairean SRE againn, a bha ag obair air an duilgheadas mu thràth. An toiseach bha sinn den bheachd gur e seòrsa de ionnsaigh neo-aithnichte a bh’ ann.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Tha innleadairean Cloudflare SRE sgapte air feadh an t-saoghail agus a ’cumail sùil air an t-suidheachadh timcheall a’ ghleoc. Mar as trice, bidh na rabhaidhean sin a’ toirt fios dhut mu chùisean ionadail sònraichte le farsaingeachd cuibhrichte, air an leantainn air clàran-dannsa a-staigh, agus air am fuasgladh iomadh uair san latha. Ach chomharraich na duilleagan agus na fiosan sin rudeigin fìor dhona, agus dh’ ainmich innleadairean SRE sa bhad an ìre de dhuilgheadas P0 agus chuir iad fios gu innleadairean riaghlaidh agus siostam.

Bha na h-innleadairean againn à Lunnainn ag èisteachd ri òraid anns a’ phrìomh thalla aig an àm sin. Dh'fheumadh stad a chur air an òraid, chruinnich a h-uile duine ann an seòmar co-labhairt mòr, agus chaidh barrachd eòlaichean a ghairm. Cha b' e duilgheadas àbhaisteach a bha seo a b' urrainn do SREn dèiligeadh riutha fhèin. Bha e èiginneach na h-eòlaichean ceart a thoirt a-steach.

Aig 14:00 dhearbh sinn gur ann leis an WAF a bha an duilgheadas agus nach robh ionnsaigh sam bith ann. Tharraing an sgioba coileanaidh dàta an CPU agus dh'fhàs e soilleir gur e an WAF a bu choireach. Dhaingnich neach-obrach eile an teòiridh seo a’ cleachdadh strace. Chunnaic cuideigin eile anns na logaichean gun robh duilgheadas ann le WAF. Aig 14: 02f, thàinig an sgioba gu lèir thugam nuair a chaidh a mholadh marbhadh cruinne a chleachdadh, inneal a chaidh a thogail a-steach do Cloudflare a bhios a ’dùnadh sìos aon phàirt air feadh an t-saoghail.

Tha mar a rinn sinn marbhadh cruinneil airson WAF na sgeulachd eadar-dhealaichte. Chan eil e cho sìmplidh sin. Bidh sinn a 'cleachdadh ar bathar fhèin, agus bhon t-seirbheis againn cothrom nach do dh’ obraich, cha b’ urrainn dhuinn dearbhadh agus logadh a-steach don phannal smachd air an taobh a-staigh (nuair a chaidh a h-uile càil a chàradh, dh’ ionnsaich sinn gun robh cuid de bhuill na sgioba air ruigsinneachd a chall air sgàth feart tèarainteachd a chuireas à comas teisteanasan mura tèid am pannal smachd a-staigh a chleachdadh airson a Ùine mhòr).

Agus cha b’ urrainn dhuinn faighinn gu na seirbheisean a-staigh againn, leithid Jira no an siostam togail. Bha feum againn air inneal làimhseachaidh, nach robh sinn a’ cleachdadh gu tric (feumar seo obrachadh a-mach cuideachd). Mu dheireadh, chaidh aig aon innleadair air an WAF a chuir dheth aig 14:07, agus aig 14:09, bha ìrean trafaic agus CPU air ais gu àbhaisteach anns a h-uile àite. Bha an còrr de dhòighean dìon Cloudflare ag obair mar as àbhaist.

An uairsin thòisich sinn ag ath-nuadhachadh an WAF. Bha an suidheachadh a-mach às an àbhaist, agus mar sin ruith sinn deuchainnean àicheil (a’ faighneachd dhuinn fhìn an e an t-atharrachadh an duilgheadas dha-rìribh) agus deuchainnean adhartach (a’ dèanamh cinnteach gun obraich an ro-aithris) ann an aon bhaile a’ cleachdadh trafaic air leth, a’ gluasad luchd-ceannach pàighidh às an sin.

Aig 14:52 bha sinn cinnteach gun do thuig sinn an t-adhbhar agus rinn sinn ceartachadh, agus leig sinn le WAF a-rithist.

Mar a tha Cloudflare ag obair

Tha sgioba innleadairean aig Cloudflare a tha gu sònraichte airson riaghladh riaghailtean airson WAFn. Bidh iad a’ strì ri ìrean lorgaidh a leasachadh, nithean ceàrr a lughdachadh, agus dèiligeadh gu sgiobalta ri bagairtean ùra mar a thig iad am bàrr. Anns na 60 latha a dh’ fhalbh, chaidh 476 iarrtas atharrachaidh a phròiseasadh airson riaghailtean stiùirichte airson WAF (cuibheasach aon gach 3 uairean).

Dh'fheumadh an t-atharrachadh sònraichte seo a bhith air a chleachdadh ann am modh atharrais, far a bheil fìor thrafaig luchd-cleachdaidh a 'dol tron ​​​​riaghailt, ach chan eil dad air a bhacadh. Bidh sinn a’ cleachdadh a’ mhodh seo gus èifeachdas nan riaghailtean a dhearbhadh agus na h-ìrean àicheil meallta agus meallta a thomhas. Ach eadhon ann am modh atharrais, feumar na riaghailtean a chuir an gnìomh, agus anns a ’chùis seo bha abairt cunbhalach anns an riaghailt a bha a’ caitheamh cus ghoireasan pròiseasar.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Mar a chì thu bhon iarrtas atharrachaidh gu h-àrd, tha plana cleachdaidh againn, plana ath-thilleadh, agus ceangal ri modh obrachaidh àbhaisteach a-staigh (SOP) airson an seòrsa cleachdadh seo. Tha an SOP airson riaghailt atharrachadh a’ leigeil leis a bhith air fhoillseachadh air feadh na cruinne. Gu fìrinneach, aig Cloudflare, tha cùisean air an dèanamh gu tur eadar-dhealaichte, agus tha an SOP ag òrdachadh gun cuir sinn am bathar-bog airson deuchainn agus cleachdadh a-staigh gu puing làthaireachd a-staigh (PoP) (a bhios ar luchd-obrach a’ cleachdadh), an uairsin gu àireamh bheag de luchd-dèiligidh ann an àite iomallach, an uairsin gu àireamh mhòr de luchd-dèiligidh, agus dìreach an uairsin chun t-saoghal air fad.

Seo mar a tha e coltach. Bidh sinn a’ cleachdadh git air an taobh a-staigh tro BitBucket. Bidh innleadairean a tha ag obair air atharrachaidhean a’ cur a-steach còd, a thèid a thogail gu TeamCity, agus nuair a thèid an togail seachad, thèid ath-sgrùdairean a shònrachadh. Aon uair ‘s gu bheil iarrtas tarraing air aontachadh, tha an còd air a chruinneachadh agus thèid sreath de dheuchainnean a ruith (a-rithist).

Ma thèid an togail agus na deuchainnean a chrìochnachadh gu soirbheachail, thèid iarrtas atharrachaidh a chruthachadh ann an Jira agus feumaidh am manaidsear no an stiùiriche iomchaidh aontachadh ris an atharrachadh. Às deidh aonta, thèid cleachdadh a-steach don “PoP menagerie” ris an canar: DOG, PIG agus Canary (cù, muc agus canary).

Tha DOG PoP na Cloudflare PoP (mar a h-uile baile-mòr eile) a tha air a chleachdadh le luchd-obrach Cloudflare a-mhàin. Leigidh PoP airson cleachdadh a-staigh dhut duilgheadasan a ghlacadh mus tòisich trafaic teachdaiche a’ sruthadh a-steach don fhuasgladh. Rud feumail.

Ma shoirbhicheas leis an deuchainn DOG, gluaisidh an còd gu ìre PIG (muc ghuine). Is e seo Cloudflare PoP, far a bheil beagan trafaic teachdaiche an-asgaidh a’ sruthadh tro chòd ùr.
Ma tha a h-uile càil gu math, thèid an còd a-steach gu Canary. Tha trì PoP Canary againn ann an diofar phàirtean den t-saoghal. Annta, bidh trafaic luchd-dèiligidh pàighte agus an-asgaidh a ’dol tron ​​​​chòd ùr, agus is e seo an sgrùdadh mu dheireadh airson mearachdan.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019
Pròiseas fuasglaidh bathar-bog aig Cloudflare

Ma tha an còd ceart gu leòr ann an Canary, bidh sinn ga leigeil ma sgaoil. A 'dol tro na h-ìrean gu lèir - DOG, PIG, Canary, an saoghal gu lèir - a' toirt grunn uairean a thìde no làithean, a rèir an atharrachaidh còd. Air sgàth iomadachd lìonra agus teachdaichean Cloudflare, bidh sinn a’ dèanamh deuchainn mionaideach air còd mus cuir sinn a-mach e air feadh na cruinne don h-uile neach-dèiligidh. Ach chan eil WAF gu sònraichte a’ leantainn a’ phròiseis seo leis gu feumar dèiligeadh gu sgiobalta ri bagairtean.

Bagairtean WAF
Thairis air na beagan bhliadhnaichean a dh’ fhalbh, tha àrdachadh mòr air a thighinn air bagairtean ann an tagraidhean cumanta. Tha seo air sgàth gu bheil barrachd cothrom air innealan deuchainn bathar-bog. Mar eisimpleir, o chionn ghoirid sgrìobh sinn mu dheidhinn fuadan).

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019
Source: https://cvedetails.com/

Glè thric, thèid dearbhadh bun-bheachd a chruthachadh agus fhoillseachadh sa bhad air Github gus an urrainn dha na sgiobaidhean a tha a’ cumail suas an tagradh deuchainn a dhèanamh gu sgiobalta agus dèanamh cinnteach gu bheil e tèarainte gu leòr. Mar sin, feumaidh Cloudflare an comas dèiligeadh ri ionnsaighean ùra cho luath ‘s a ghabhas gus am bi cothrom aig luchd-ceannach am bathar-bog aca a chàradh.

Is e deagh eisimpleir de fhreagairt sgiobalta Cloudflare cleachdadh dìonan so-leòntachd SharePoint sa Chèitean (Leugh an seo). Cha mhòr sa bhad às deidh na chaidh ainmeachadh, mhothaich sinn grunn oidhirpean gus brath a ghabhail air so-leòntachd ann an ionadan SharePoint ar teachdaichean. Tha na balaich againn an-còmhnaidh a’ cumail sùil air bagairtean ùra agus a’ sgrìobhadh riaghailtean gus ar teachdaichean a dhìon.

Bha còir aig an riaghailt a dh’ adhbhraich an duilgheadas Diardaoin dìon an aghaidh sgrìobhadh thar-làraich (XSS). Tha ionnsaighean mar seo cuideachd air fàs mòran nas trice anns na bliadhnachan mu dheireadh.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019
Source: https://cvedetails.com/

Is e an dòigh àbhaisteach airson riaghailt stiùirichte atharrachadh airson WAF a bhith a’ dèanamh deuchainn aonachaidh leantainneach (CI) mus tèid a chleachdadh air feadh na cruinne. Diardaoin sa chaidh rinn sinn seo agus sgaoil sinn na riaghailtean. Aig 13:31f, chuir innleadair a-steach iarrtas tarraing aontaichte le atharrachadh.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Aig 13:37 chruinnich TeamCity na riaghailtean, ruith deuchainnean agus thug iad cead seachad. Bidh an t-sreath deuchainn WAF a’ dèanamh deuchainn air prìomh ghnìomhachd an WAF agus tha e a’ toirt a-steach àireamh mhòr de dheuchainnean aonad airson gnìomhan fa-leth. Às deidh deuchainnean aonad, rinn sinn deuchainn air na riaghailtean airson an WAF a ’cleachdadh àireamh mhòr de dh’ iarrtasan HTTP. Bidh iarrtasan HTTP a’ dèanamh cinnteach dè na h-iarrtasan a bu chòir a bhith air am bacadh leis an WAF (gus stad a chur air an ionnsaigh) agus dè as urrainnear a cheadachadh (gus nach cuir iad bacadh air a h-uile càil agus gun seachain iad rudan ceàrr). Ach cha do rinn sinn deuchainn airson cus cleachdadh CPU, agus tha sgrùdadh air logaichean togail WAF roimhe a ’sealltainn nach do mheudaich an ùine cur an gnìomh deuchainn riaghailt, agus bha e duilich a bhith fo amharas nach biodh goireasan gu leòr ann.

Chaidh na deuchainnean seachad agus thòisich TeamCity a’ cleachdadh an atharrachaidh gu fèin-ghluasadach aig 13:42f.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

quicksilver

Bidh riaghailtean WAF a’ cuimseachadh air leigheas bagairtean sa bhad, agus mar sin bidh sinn gan cleachdadh a’ cleachdadh stòr prìomh luach sgaoilte Quicksilver, a bhios a’ sgaoileadh atharrachaidhean air feadh na cruinne ann an diogan. Bidh ar luchd-dèiligidh uile a’ cleachdadh an teicneòlais seo nuair a dh’ atharraicheas iad an rèiteachadh anns an deas-bhòrd no tron ​​​​API, agus is ann air sgàth sin a bhios sinn a’ freagairt atharrachaidhean le astar dealanach.

Chan eil sinn air mòran a bhruidhinn mu dheidhinn Quicksilver. Roimhe sin chleachd sinn Tycoon Kyoto mar phrìomh bhùth air a sgaoileadh air feadh na cruinne, ach bha duilgheadasan obrachaidh ann, agus sgrìobh sinn ar stòr fhèin, air ath-aithris ann am barrachd air 180 baile-mòr. Bidh sinn a-nis a’ cleachdadh Quicksilver gus atharrachaidhean rèiteachaidh a phutadh gu teachdaichean, ùrachadh riaghailtean WAF, agus còd JavaScript sgrìobhte le teachdaichean a sgaoileadh gu Cloudflare Workers.

Cha toir e ach beagan dhiog bho bhith a’ briogadh air putan air deas-bhòrd no a’ gairm API gu bhith a’ dèanamh atharrachadh rèiteachaidh air feadh an t-saoghail. Bha meas aig luchd-ceannach air an astar rèiteachaidh seo. Agus bidh Luchd-obrach a’ toirt dhaibh cleachdadh bathar-bog cruinne cha mhòr sa bhad. Gu cuibheasach, bidh Quicksilver a ’sgaoileadh timcheall air 350 atharrachadh gach diog.

Agus tha Quicksilver gu math luath. Gu cuibheasach, choilean sinn an 99mh sa cheud de 2,29 diogan gus atharrachaidhean a sgaoileadh gu gach coimpiutair air feadh an t-saoghail. Mar as trice is e rud math a th’ ann an astar. Às deidh na h-uile, nuair a chuireas tu comas air gnìomh no nuair a ghlanas tu an tasgadan, bidh e a ’tachairt cha mhòr sa bhad agus anns a h-uile àite. Bidh còd cur tro Cloudflare Workers a’ tachairt aig an aon astar. Tha Cloudflare a’ gealltainn ùrachaidhean luath don luchd-ceannach aca aig an àm cheart.

Ach anns a’ chùis seo, chluich astar fealla-dhà cruaidh oirnn, agus dh’ atharraich na riaghailtean anns a h-uile àite ann an diogan. Is dòcha gu bheil thu air mothachadh gu bheil còd WAF a’ cleachdadh Lua. Bidh Cloudflare a’ cleachdadh Lua gu farsaing ann an cinneasachadh agus mion-fhiosrachadh Lua ann an WAF tha sinn air a dheasbad mu thràth. Bidh Lua WAF a’ cleachdadh PCRE air an taobh a-staigh agus a’ cleachdadh cùl-taic airson maidseadh. Chan eil uidheamachd ann airson dìon an aghaidh abairtean a tha a’ dol a-mach à smachd. Gu h-ìosal bruidhnidh mi barrachd mu dheidhinn seo agus na tha sinn a’ dèanamh mu dheidhinn.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Mus deach na riaghailtean a chuir an sàs, chaidh a h-uile càil gu rèidh: chaidh an t-iarrtas tarraing a chruthachadh agus aontachadh, chruinnich loidhne-phìoban CI / CD agus rinn iad deuchainn air a ’chòd, chaidh an t-iarrtas atharrachaidh a chuir a-steach a rèir an SOP a tha a’ riaghladh cleachdadh agus roiligeadh air ais, agus chaidh an cleachdadh a chrìochnachadh.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019
Pròiseas cleachdadh Cloudflare WAF

Chaidh rudeigin ceàrr
Mar a thuirt mi, bidh sinn a’ cleachdadh dhusanan de riaghailtean ùra WAF gach seachdain, agus tha mòran shiostaman againn nan àite gus dìon an aghaidh droch bhuaidhean cleachdadh mar sin. Agus nuair a thèid rudeigin ceàrr, mar as trice bidh e na mheasgachadh de ghrunn shuidheachaidhean aig an aon àm. Ma lorgas tu dìreach aon adhbhar, tha seo, gu dearbh, misneachail, ach chan eil e an-còmhnaidh fìor. Is iad sin na h-adhbharan a dh’ adhbhraich fàilligeadh na seirbheis HTTP/HTTPS againn.

  1. Sgrìobh einnseanair abairt àbhaisteach a dh’ fhaodadh cus cus adhbhrachadh cùl-taic.
  2. Chaidh feart a dh ’fhaodadh a bhith air casg a chuir air an abairt àbhaisteach bho bhith a’ caitheamh cus CPU a thoirt air falbh le mearachd ann an ath-shuidheachadh an WAF grunn sheachdainean roimhe sin - bha feum air an ath-leasachadh gus toirt air an WAF nas lugha de ghoireasan ithe.
  3. Cha robh gealltanasan iom-fhillteachd sam bith aig an einnsean abairt àbhaisteach.
  4. Cha b’ urrainn don t-sreath deuchainn cus caitheamh CPU a lorg.
  5. Tha an SOP a’ ceadachadh atharrachaidhean riaghailt neo-èiginneach a bhith air an sgaoileadh air feadh na cruinne gun phròiseas ioma-cheum.
  6. Dh'fheumadh am plana ath-thilleadh togail WAF làn a ruith dà uair, rud a thug ùine mhòr.
  7. Chaidh a’ chiad rabhadh mu dhuilgheadasan trafaic cruinne a bhrosnachadh ro fhadalach.
  8. Thug sinn beagan ùine gus an duilleag inbhe ùrachadh.
  9. Bha duilgheadas againn faighinn gu siostaman air sgàth glitch, agus cha robh modh seach-rathad stèidhichte gu math.
  10. Chaill innleadairean SRE cothrom air cuid de shiostaman leis gun tàinig na teisteanasan aca gu crìch air sgàth adhbharan tèarainteachd.
  11. Cha robh cothrom aig ar luchd-ceannach air deas-bhòrd Cloudflare no API leis gu bheil iad a’ dol tro sgìre Cloudflare.

Na tha air atharrachadh bhon Diardaoin seo chaidh

An toiseach, chuir sinn stad gu tur air a h-uile obair air fiosan airson WAF agus tha sinn a’ dèanamh na leanas:

  1. Tha sinn a’ toirt a-steach a-rithist an dìon cus-chleachdadh CPU a thug sinn air falbh. (Deiseil)
  2. A’ sgrùdadh le làimh na 3868 riaghailtean uile anns na riaghailtean stiùirichte airson an WAF gus cùisean eile a dh’ fhaodadh a bhith ann de dh ’iomadh cùl-taic a lorg agus a cheartachadh. (Dearbhadh crìochnaichte)
  3. Bidh sinn a’ toirt a-steach cunntas coileanaidh airson a h-uile riaghailt san t-seata deuchainn. (An dùil: 19 Iuchar)
  4. Ag atharrachadh gu einnsean abairt àbhaisteach re2 no meirgeadh - bidh an dithis a’ toirt seachad gealltanasan runtime. (An dùil: 31 Iuchar)
  5. Tha sinn ag ath-sgrìobhadh an SOP gus riaghailtean a chuir an sàs ann an ìrean, mar bathar-bog eile ann an Cloudflare, ach aig an aon àm tha comas againn cleachdadh cruinneil èiginneach ma tha ionnsaighean air tòiseachadh mar-thà.
  6. Tha sinn a’ leasachadh comas air deas-bhòrd Cloudflare agus API a thoirt air falbh bho roinn Cloudflare.
  7. Luchdaich a-nuas an duilleag fèin-obrachail Inbhe Cloudflare.

San fhad-ùine tha sinn a’ gluasad air falbh bhon Lua WAF a sgrìobh mi o chionn beagan bhliadhnaichean. A’ gluasad WAF gu siostam balla-teine ​​​​ùr. San dòigh seo bidh an WAF nas luaithe agus gheibh e ìre dìon a bharrachd.

co-dhùnadh

Dh'adhbhraich an teip seo trioblaid dhuinne agus don luchd-ceannach againn. Rinn sinn gnìomh gu sgiobalta gus an suidheachadh a cheartachadh agus tha sinn a-nis ag obair air na lochdan anns na pròiseasan a dh’ adhbhraich an tubaist, a bharrachd air a bhith a ’cladhach eadhon nas doimhne gus dìon an aghaidh duilgheadasan a dh’ fhaodadh a bhith ann le abairtean cunbhalach san àm ri teachd nuair a bhios sinn a ’dèanamh imrich gu teicneòlas ùr.

Tha sinn gu math tàmailteach mun bhriseadh seo agus tha sinn duilich don luchd-ceannach againn. Tha sinn an dòchas gun dèan na h-atharrachaidhean sin cinnteach nach tachair rudeigin mar seo a-rithist.

Iarrtas. A’ cumail sùil air abairtean cunbhalach

Gus tuigsinn mar a tha an abairt:

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

ith suas na goireasan CPU gu lèir, feumaidh fios a bhith agad beagan mu mar a tha an einnsean abairt àbhaisteach àbhaisteach ag obair. Is e an duilgheadas an seo am pàtran .*(?:.*=.*). (?: agus co-fhreagarrach ) na bhuidheann nach eil a’ glacadh (is e sin, tha an abairt ann am bragan air a chruinneachadh mar aon abairt).

Ann an co-theacsa cus caitheamh CPU, faodar am pàtran seo a mhìneachadh mar .*.*=.*. Anns an fhoirm seo, tha am pàtran a 'coimhead neo-riatanach iom-fhillte. Ach nas cudromaiche, anns an fhìor shaoghal, faodaidh abairtean (mar abairtean iom-fhillte ann an riaghailtean WAF) a bhios ag iarraidh air an einnsean a bhith a’ maidseadh criomag agus criomag eile às deidh sin leantainn gu cùl-taic tubaisteach. Agus air an adhbhar sin.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Ann an abairt àbhaisteach . a’ ciallachadh gum feum thu aon charactar a mhaidseadh, .* - maids neoni no barrachd charactaran “gu sanntach”, is e sin, a’ glacadh suas ri caractaran as àirde, gus am bi .*.*=.* a’ ciallachadh maids neoni no barrachd charactaran, an uairsin maids neoni no barrachd charactaran, lorg an litir = caractar, maids neoni no barrachd charactaran.

Gabhamaid an loidhne deuchainn x=x. Tha e a 'freagairt ris an abairt .*.*=.*. .*.* mus bi an soidhne co-ionann ris a’ chiad fhear x (aon de na buidhnean .* соответствует x, agus an dàrna - neoni caractaran). .* às dèidh = matches last x.

Feumaidh an coimeas seo 23 ceumannan. A’ chiad bhuidheann .* в .*.*=.* ag obair gu sanntach agus a’ freagairt ris an t-sreath gu lèir x=x. Bidh an t-einnsean a 'gluasad chun an ath bhuidheann .*. Chan eil barrachd charactaran againn ri maidseadh, mar sin an dàrna buidheann .* a’ maidseadh caractaran neoni (tha seo ceadaichte). An uairsin gluaisidh an t-einnsean chun an t-soidhne =. Chan eil barrachd shamhlaidhean ann (a’ chiad bhuidheann .* chleachd e an abairt gu lèir x=x), chan eil coimeas ann.

Agus an uairsin bidh an einnsean abairt àbhaisteach a ’tilleadh chun toiseach. Bidh e a’ gluasad air adhart chun chiad bhuidheann .* agus ga choimeas с x= (an àite x=x), agus an uairsin a’ gabhail an dàrna buidheann .*. An dàrna buidheann .* air a choimeas ris an dara fear x, agus a-rithist chan eil caractaran air fhàgail againn. Agus nuair a ruigeas an t-einnsean a-rithist = в .*.*=.*, chan eil dad ag obair. Agus tha e air ais a-rithist.

An turas seo a 'bhuidheann .* fhathast a’ maidseadh x=, ach an dara buidheann .* Gun an còrr x, agus caractaran neoni. Tha an einnsean a’ feuchainn ri caractar litireil a lorg = anns a' phàtran .*.*=.*, ach chan eil e a’ tighinn a-mach (às deidh a h-uile càil, tha a’ chiad bhuidheann air a bhith ann mu thràth .*). Agus tha e air ais a-rithist.

An turas seo a 'chiad bhuidheann .* a’ gabhail ach a’ chiad x. Ach an dàrna buidheann .* "gu sanntach" a' glacadh =x. An do smaoinich thu mu thràth dè thachras? Bidh an t-einnsean a’ feuchainn ris an litireil a mhaidseadh =, a 'fàilligeadh agus a' dèanamh cùl-taic eile.

A 'chiad bhuidheann .* fhathast a 'freagairt ris a' chiad fhear x... An dàrna fear .* a-mhàin a' gabhail =. Gu dearbh, chan urrainn don einnsean a bhith co-ionnan ris an litireil =, oir tha an dàrna buidheann air seo a dhèanamh mu thràth .*. Agus a-rithist cùl-taic. Agus tha sinn a’ feuchainn ri sreath de thrì caractaran a mhaidseadh!

Mar thoradh air, a 'chiad bhuidheann .* a 'freagairt a-mhàin ris a' chiad fhear x, an dàrna .* - le caractaran neoni, agus tha an einnsean mu dheireadh a’ maidseadh an litireil = ann an abairt с = ann an loidhne. An ath rud tha am buidheann mu dheireadh .* air a choimeas ris an fhear mu dheireadh x.

23 ceumannan a-mhàin airson x=x. Coimhead air bhidio ghoirid mu bhith a’ cleachdadh Perl Regexp::Debugger, a sheallas mar a tha ceumannan agus cùl-taic a’ tachairt.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Is e tòrr obrach a tha seo mu thràth, ach dè ma tha x=x bidh againn x=xx? Sin 33 ceumannan. Agus ma tha x=xxx? 45. Chan eil an dàimh sreathach. Tha an graf a’ sealltainn coimeas bho x=x gu x=xxxxxxxxxxxxxxxxxxxx (20 x после =). Ma tha 20 x againn às deidh sin =, bidh an einnsean a’ crìochnachadh a’ mhaidseadh ann an 555 ceum! (A bharrachd air an sin, ma tha sinn air chall x= agus tha an sreang dìreach air a dhèanamh suas de 20 x, gabhaidh an einnsean 4067 ceumannan gus tuigsinn nach eil maidsean ann).

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Tha am bhidio seo a’ sealltainn a h-uile cùl-taic airson coimeas x=xxxxxxxxxxxxxxxxxxxx:

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Is e an duilgheadas a th’ ann, mar a bhios meud an t-sreang a’ dol am meud, gu bheil an ùine maidsidh a’ fàs gu math sreathach. Ach faodaidh cùisean fàs nas miosa ma thèid an abairt àbhaisteach atharrachadh beagan. Canaidh sinn gun robh .*.*=.*; (is e sin, bha leth-dhuilleag litireil aig deireadh a' phàtrain). Mar eisimpleir, gus a bhith co-ionnan ri abairt mar foo=bar;.

Agus an seo bhiodh cùl-taic na fhìor thubaist. Airson coimeas x=x bheir e 90 ceum, chan e 23. Agus tha an àireamh sin a 'fàs gu luath. Airson coimeas a dhèanamh x= agus 20 x, tha feum air 5353 ceum. Seo an clàr. Thoir sùil air luachan an axis Y an coimeas ris a’ chairt roimhe.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Ma tha ùidh agad, thoir sùil air na 5353 ceuman maidsidh air fàiligeadh x=xxxxxxxxxxxxxxxxxxxx и .*.*=.*;

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Le bhith a’ cleachdadh maids leisg seach sanntach, faodar smachd a chumail air an ìre de chùl-taic. Ma dh’atharraicheas sinn an abairt thùsail gu .*?.*?=.*?, airson coimeas x=x bheir e 11 ceum (chan e 23). A thaobh x=xxxxxxxxxxxxxxxxxxxx. A h-uile sgàth ? после .* ag innse don einnsean an àireamh as lugha de charactaran a mhaidseadh mus gluais thu air adhart.

Ach chan eil mapaichean leisg a’ fuasgladh gu tur air an duilgheadas cùl-taic. Ma chuireas sinn an eisimpleir tubaisteach an àite .*.*=.*; air .*?.*?=.*?;, bidh an ùine cur gu bàs mar a tha e. x=x fhathast feumach air 555 ceum, agus x= agus 20 x - 5353.

Is e an aon rud a ghabhas dèanamh (a bharrachd air a bhith ag ath-sgrìobhadh a’ phàtrain gu tur airson barrachd sònraichte) an einnsean abairt àbhaisteach a thrèigsinn leis an inneal cùl-taic aige. Seo na bhios sinn a’ dèanamh anns na beagan sheachdainean a tha romhainn.

Tha fios air fuasgladh na duilgheadas seo bho 1968, nuair a sgrìobh Kent Thompson artaigil Teicneòlasan Prògramadh: Algorithm sgrùdaidh faireachdainn cunbhalach (“Dòighean Prògramadh: Algorithm Rannsachadh Aithris Cunbhalach”). Tha an artaigil a’ toirt cunntas air uidheamachd a leigeas leat abairt àbhaisteach a thionndadh gu innealan stàite crìochnaichte neo-chinnteach, agus às deidh atharrachaidhean stàite ann an innealan stàite crìochnaichte neo-chinnteach, cleachd algairim aig a bheil an ùine cur gu bàs an urra gu sreathach ris an t-sreang fhreagarrach.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Dòighean Prògramadh
Algorithm Rannsachadh Aithris Cunbhalach
Coinneach MacThòmais

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

Tha e ag innse mar a thathar a' lorg sreath shònraichte de charactaran ann an teacsa agus a' beachdachadh air cur an gnìomh a' mhodh seo ann an cruth compiler. Bidh an compiler a’ gabhail an abairt àbhaisteach mar chòd stòr agus a’ toirt a-mach prògram IBM 7094 mar chòd nì. Bidh am prògram nì a’ toirt a-steach ann an cruth teacsa sgrùdaidh agus a’ sgaoileadh comharra a h-uile uair a thèid sreang teacsa a mhaidseadh ri abairt àbhaisteach sònraichte. Tha an artaigil a’ toirt seachad eisimpleirean, duilgheadasan agus fuasglaidhean.

Algorithm
Mar thoradh air algorithms rannsachaidh roimhe chaidh cùl-taic a dhèanamh ma dh’ fhàillig rannsachadh a bha gu ìre shoirbheachail toradh.

Ann am modh cruinneachaidh, chan eil an algairim ag obair le samhlaidhean. Bidh e a’ dol seachad air stiùireadh gu còd cruinnichte. Tha coileanadh gu math luath - às deidh dha dàta a chuir gu mullach na liosta gnàthach, bidh e gu fèin-ghluasadach a’ lorg a h-uile caractar leantainneach a dh’ fhaodadh a bhith san abairt àbhaisteach.
Tha an algairim cruinneachaidh is sgrùdaidh air a ghabhail a-steach don deasaiche teacsa roinneadh ùine mar sgrùdadh co-theacsail. Gu dearbh, tha seo fada bhon aon chleachdadh a leithid de mhodh sgrùdaidh. Mar eisimpleir, tha caochladair den algairim seo air a chleachdadh mar sgrùdadh samhla ann an clàr ann an assembler.
Thathas a’ gabhail ris gu bheil an leughadair eòlach air abairtean cunbhalach agus cànan prògramadh coimpiutair IBM 7094.

Compiler
Tha an compiler air a dhèanamh suas de thrì ìrean a’ ruith aig an aon àm. Is e a’ chiad ìre sìoladh co-chòrdadh, a leigeas le dìreach abairtean cunbhalach a tha ceart gu co-theacs a dhol troimhe. Bidh an ceum seo cuideachd a’ cuir a-steach an gnìomhaiche “·” gus a bhith co-ionnan ri abairtean àbhaisteach. Anns an dàrna ceum, tha an abairt àbhaisteach air a thionndadh gu foirm postfix. Aig an treas ìre, thèid còd nì a chruthachadh. Tha a’ chiad 2 ìre follaiseach, agus cha bhith sinn a’ fuireach orra.

Chan eil artaigil Thompson a’ bruidhinn air innealan stàite crìochnachaidh neo-chinnteach, ach tha e a’ mìneachadh an algairim ùine sreathach gu math agus a’ taisbeanadh prògram ALGOL-60 a ghineas còd cànain cruinneachaidh airson an IBM 7094. Tha am buileachadh duilich, ach tha am beachd gu math sìmplidh.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

slighe lorg làithreach. Tha e air a riochdachadh le ìomhaigh ⊕ le aon chur-a-steach agus dà thoradh.
Tha Figear 1 a’ sealltainn gnìomhan an treas ceum cruinneachaidh nuair a dh’atharraicheas sinn eisimpleir abairt àbhaisteach. Is e a’ chiad trì caractaran san eisimpleir a, b, c, agus bidh gach fear a’ cruthachadh inntrigeadh stac S[i] agus raon NNODE.

NNODE ris a’ chòd a th’ ann mu thràth gus an abairt cunbhalach a ghineadh ann an aon inntrigeadh stac (faic Figear 5)

Seo cò ris a bhiodh abairt àbhaisteach coltach .*.*=.*, ma smaoinicheas tu air mar anns na dealbhan bho artaigil Thompson.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Ann am Fig. 0 tha còig stàitean a’ tòiseachadh bho 0, agus 3 cuairtean a’ tòiseachadh bho stàitean 1, 2 agus 3. Tha na trì cuairtean sin a’ freagairt ri trì .* ann an abairt àbhaisteach. Tha 3 ubhal le dotagan a’ freagairt ri aon samhla. Oval le soidhne = co-ionann ri caractar litireil =. Tha State 4 mu dheireadh. Ma ruigeas sinn e, tha an abairt àbhaisteach air a mhaidseadh.

Gus faicinn mar as urrainnear a leithid de dhiagram stàite a chleachdadh airson maidseadh abairtean cunbhalach .*.*=.*, bheir sinn sùil air maidseadh sreang x=x. Bidh am prògram a’ tòiseachadh bho staid 0, mar a chithear ann am Fig. 1.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Airson an algairim seo a bhith ag obair, feumaidh an inneal stàite a bhith ann an grunn stàitean aig an aon àm. Nì inneal crìochnachaidh neo-chinnteach a h-uile gluasad comasach aig an aon àm.

Mus bi ùine aige an dàta cuir a-steach a leughadh, thèid e a-steach don dà chiad stàite (1 agus 2), mar a chithear ann am Fig. 2.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Ann am Fig. Tha 2 a’ sealltainn dè thachras nuair a choimheadas e air a’ chiad fhear x в x=x. x 's urrainn dhaibh mapadh chun a' phuing as àirde, a' dol bho staid 1 agus air ais gu stàite 1. No x Faodaidh tu mapa chun a’ phuing gu h-ìosal, a’ dol bho staid 2 agus air ais gu stàite 2.

Às deidh a bhith a 'maidseadh a' chiad fhear x в x=x tha sinn fhathast ann an stàitean 1 agus 2. Chan urrainn dhuinn staid 3 no 4 a ruighinn oir tha feum againn air caractar litireil =.

Bidh an algorithm an uairsin a’ beachdachadh = в x=x. Coltach ri x roimhe, faodar a mhaidseadh ri aon de na dà lùban as àirde bho stàite 1 gu stàite 1 no bho stàite 2 gu stàite 2, ach faodaidh an algairim a bhith co-ionnan ris an litireil. = agus gluais bho stàit 2 gu stàite 3 (agus sa bhad 4). Tha seo ri fhaicinn ann am Fig. 3.

Mion-fhiosrachadh mu bhriseadh Cloudflare air 2 Iuchar, 2019

Bidh an algairim an uairsin a’ gluasad air adhart chun fhear mu dheireadh x в x=x. Bho stàitean 1 agus 2 tha na h-aon ghluasadan comasach air ais gu stàitean 1 agus 2. Bho stàit 3 x is urrainn dhaibh a’ phuing air an taobh cheart a mhaidseadh agus a dhol air ais gu stàite 3.

Aig an ìre seo, gach caractar x=x beachdachadh, agus bhon a tha sinn air staid 4 a ruighinn, tha an abairt àbhaisteach a’ freagairt ris an t-sreang sin. Tha gach caractar air a phròiseasadh aon uair, agus mar sin tha an algairim seo sreathach ann am fad an t-sreang cuir a-steach. Agus chan eil cùl-taic ann.

Gu follaiseach, às deidh dha staid 4 a ruighinn (nuair a tha an algairim air a mhaidseadh x=) tha an abairt cunbhalach gu lèir air a mhaidseadh, agus faodaidh an algairim crìochnachadh gun a bhith a’ beachdachadh air idir x.

Tha an algairim seo an urra gu sreathach air meud an t-sreang cuir a-steach.

Source: www.habr.com

Cuir beachd ann