Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Efa ho 9 taona lasa izay Cloudflare dia orinasa kely, ary tsy niasa tamin'izany aho, mpanjifa fotsiny aho. Iray volana taorian'ny nanombohako Cloudflare dia nahazo fampandrenesana aho fa ny tranokalako jgc.orgToa tsy mandeha ny DNS. Nanao fanovana ny Cloudflare Protocol Buffers, ary nisy DNS tapaka.

Nanoratra avy hatrany tamin'i Matthew Prince aho tamin'ny lohateny hoe "Aiza ny DNS-ko?" ary nandefa valiny lava feno antsipiriany ara-teknika izy (vakio eto ny taratasy rehetra), izay novaliako hoe:

Avy amin'i: John Graham-Cumming
Daty: 7 Oktobra 2010, 9:14
Lohahevitra: Re: Aiza ny DNS-ko?
Ho an'i: Matthew Prince

Tatitra mahafinaritra, misaotra. Tena hiantso aho raha misy olana. Tsara angamba ny manoratra lahatsoratra momba an'io rehefa voaangonao ny fampahalalana ara-teknika rehetra. Heveriko fa hankafy tantara misokatra sy marina ny olona. Indrindra raha ampifandraisinao amin'ny sary ny fomba nitomboan'ny fifamoivoizana hatramin'ny nanombohana azy.

Manana fanaraha-maso tsara ao amin'ny tranokalako aho, ary mahazo SMS momba ny tsy fahombiazana rehetra. Ny fanaraha-maso dia mampiseho fa ny tsy fahombiazana dia nitranga tamin'ny 13:03:07 hatramin'ny 14:04:12. Isaky ny dimy minitra no andrana.

Azoko antoka fa ho hitanao izany. Azo antoka ve ianao fa tsy mila olon-tianao any Eoropa? 🙂

Dia namaly izy hoe:

Avy amin'i: Matthew Prince
Daty: 7 Oktobra 2010, 9:57
Lohahevitra: Re: Aiza ny DNS-ko?
Ho an'i: John Graham-Cumming

Misaotra anao. Namaly izay rehetra nanoratra izahay. Handeha ho any amin'ny birao aho izao ary hanoratra zavatra ao amin'ny bilaogy izahay na hanisy lahatsoratra ofisialy eo amin'ny solaitrabenay. Ekeko tanteraka fa ny marina no zava-drehetra.

Ankehitriny dia orinasa lehibe tokoa ny Cloudflare, miasa ho azy aho, ary ankehitriny dia tsy maintsy manoratra ampahibemaso momba ny fahadisoantsika, ny vokany ary ny zavatra ataontsika aho.

Hetsika tamin'ny 2 Jolay

Tamin'ny 2 Jolay dia namoaka fitsipika vaovao izahay ao amin'ny Fitsipika Voatantanana ho an'ny WAFs noho izany Lany ny loharanon-karena CPU amin'ny processeur rehetra manodina ny fifamoivoizana HTTP/HTTPS amin'ny tambajotra Cloudflare manerantany. Manatsara hatrany ny fitsipika voatanisa ho an'ny WAF izahay ho setrin'ny vulnerability sy fandrahonana vaovao. Tamin'ny volana Mey, ohatra, dia nirohotra izahay ampio fitsipikamba hiarovana amin'ny vulnerable lehibe ao amin'ny SharePoint. Ny teboka iray manontolo amin'ny WAF dia ny fahafahana mametraka fitsipika haingana sy manerantany.

Indrisy anefa fa ny fanavaozam-baovao tamin'ny alakamisy lasa teo dia nisy fanehoan-kevitra mahazatra izay nandaniana loharanon-karena CPU HTTP/HTTPS be loatra tamin'ny fiverenana. Nijaly vokatr'izany ny proxy fototra, CDN, ary WAF. Asehon'ny grafika fa mahatratra 100% eo ho eo amin'ny lohamilina ao amin'ny tambajotrantsika ny loharanon'ny processeur amin'ny serivisy HTTP/HTTPS.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019
Fampiasana CPU amin'ny fotoana iray misy tranga iray

Vokatr'izany, ny mpanjifanay (sy ny mpanjifanay) dia niafara tamin'ny pejy diso 502 tao amin'ny sehatra Cloudflare. Ny lesoka 502 dia novokarin'ireo mpizara tranonkala eo anoloana Cloudflare izay mbola nanana cores maimaim-poana saingy tsy afaka nifandray tamin'ny fizotran'ny fifamoivoizana HTTP/HTTPS.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Fantatray ny fahasahiranana naterak'izany ho an'ny mpanjifanay. Menatra be izahay. Ary io tsy fahombiazana io dia nanakana anay tsy hiatrika amim-pahombiazana ny zava-nitranga.

Raha anisan'ireo mpanjifa ireo ianao dia mety natahotra, tezitra ary tezitra. Ankoatra izany, mbola tsy nanana a fanakorontanana maneran-tany. Ny fanjifana CPU be dia be dia noho ny fitsipika WAF iray miaraka amin'ny fitenenana tsy ara-dalàna izay niteraka fihemorana be loatra. Ity ny fitenenana hoe meloka: (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

Na dia mahaliana amin'ny azy manokana aza izany (ary hiresaka momba izany amin'ny antsipiriany etsy ambany aho), ny serivisy Cloudflare dia nidina nandritra ny 27 minitra fa tsy noho ny fanehoan-kevitra mahazatra ratsy. Naharitra elaela ny namaritra ny filaharan’ny zava-nitranga nitarika ny tsy fahombiazana, ka niadana ny namaly. Any amin'ny faran'ny lahatsoratra dia hamaritra ny fiverenana amin'ny fomba mahazatra aho ary hilaza aminao izay tokony hatao amin'izany.

Inona no nitranga

Andeha isika hanomboka amin'ny filaharany. Ny fotoana rehetra eto dia amin'ny UTC.

Tamin'ny 13:42 p.m., nisy injeniera iray ao amin'ny ekipan'ny firewall nanao fanovana kely tamin'ny fitsipiky ny fitiliana XSS mampiasa dingana mandeha ho azy. Araka izany dia nisy tapakila fangatahana fanovana natao. Mitantana tapakila toy izany izahay amin'ny alàlan'ny Jira (pikantsary etsy ambany).

Rehefa afaka 3 minitra dia niseho ny pejy voalohany amin'ny PagerDuty, mitatitra olana amin'ny WAF. Ity dia fitsapana synthetic izay mitsapa ny fiasan'ny WAFs (manana an-jatony amin'izy ireo) ivelan'ny Cloudflare hanaraha-maso ny fampandehanana ara-dalàna. Narahin'ny pejy fampandrenesana avy hatrany momba ny fitsapana serivisy Cloudflare hafa tsy nahomby, ny olana momba ny fifamoivoizana manerantany, ny fahadisoana 502 miparitaka, ary ny tatitra an-taonany avy amin'ny Points of Presence (PoP) any amin'ireo tanàna manerana izao tontolo izao izay manondro ny tsy fahampiana. ny loharanon'ny CPU.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Nahazo maromaro tamin'ireo fampandrenesana ireo aho, nivoaka avy tao amin'ny fivoriana iray, ary teny an-dalana ho any amin'ny latabatra rehefa nilaza ny lehiben'ny sampana fampiroboroboana ny vahaolana fa very 80% ny fifamoivoizanay. Nihazakazaka tany amin'ireo injeniera SRE izahay, izay efa niasa tamin'ny olana. Tamin'ny voalohany dia nihevitra izahay fa karazana fanafihana tsy fantatra.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ny injeniera Cloudflare SRE dia miparitaka manerana izao tontolo izao ary manara-maso ny toe-javatra manodidina ny famantaranandro. Amin'ny ankapobeny, ireo fampandrenesana ireo dia mampandre anao momba ireo olana manokana eo an-toerana izay voafetra ny sehatra, arahin'ny dashboard anatiny ary voavaha imbetsaka isan'andro. Saingy ireo pejy sy fampandrenesana ireo dia nanondro zavatra tena matotra, ary ny injeniera SRE dia nanambara avy hatrany ny haavon'ny hamafin'ny P0 ary nifandray tamin'ny injeniera fitantanana sy rafitra.

Nihaino lahateny tao amin’ny efitrano lehibe ireo injeniera tao Londres tamin’io fotoana io. Tsy maintsy natsahatra ny lahateny, nivory tao amin’ny efitrano lehibe iray ny rehetra, ary nisy manam-pahaizana manokana kokoa nantsoina. Tsy olana mahazatra izay azon'ny SRE atao ny miatrika ny tenany. Tena maika ny fandraisan'anjaran'ireo manampahaizana manokana.

Tamin'ny 14:00 dia fantatray fa ny WAF no olana ary tsy nisy fanafihana. Ny ekipan'ny fampisehoana dia nisintona ny angon-drakitra CPU ary nanjary nazava fa ny WAF no tompon'andraikitra. Ny mpiasa iray hafa dia nanamafy io teoria io tamin'ny fampiasana strace. Nisy olon-kafa nahita tao amin'ny diary fa nisy olana tamin'ny WAF. Tamin'ny 14:02 tolakandro, nanatona ahy ny ekipa iray manontolo rehefa natolotra ny hampiasa ny famonoana eran-tany, rafitra natsangana tao amin'ny Cloudflare izay manidy singa iray manerantany.

Hafa ny fomba namonoana an'izao tontolo izao ho an'ny WAF. Tsy dia tsotra izany. Mampiasa ny vokatray manokana izahay, ary hatramin'ny serivisy Access Tsy nandeha, tsy afaka nanamarina sy niditra tao amin'ny tontonana fanaraha-maso anatiny izahay (rehefa raikitra ny zava-drehetra, dia fantatray fa nisy mpikambana sasany very fidirana noho ny fiarovana izay manakana ny fahazoan-dàlana raha toa ka tsy ampiasaina ny tontonana fanaraha-maso anatiny. fotoana ela).

Ary tsy afaka niditra tamin'ny serivisy anatiny izahay, toa an'i Jira na ny rafitra fananganana. Nila mekanika famahana olana izahay, izay tsy dia nampiasainay matetika (mila karakaraina koa izany). Farany, nisy injeniera iray nahavita nanakana ny WAF tamin'ny 14:07, ary tamin'ny 14:09, niverina tamin'ny laoniny ny fifamoivoizana sy ny haavon'ny CPU na aiza na aiza. Ny sisa amin'ny rafitra fiarovana Cloudflare dia niasa toy ny mahazatra.

Avy eo dia nanomboka namerina ny WAF izahay. Tsy mahazatra ny toe-javatra, noho izany dia nanao fitsapana ratsy izahay (manontany tena raha ny fiovana no tena olana) sy fitsapana tsara (miantoka fa mandeha ny famerenana) tao amin'ny tanàna iray tamin'ny alàlan'ny fifamoivoizana misaraka, mamindra ny mpanjifa mandoa vola avy any.

Tamin'ny 14:52 dia resy lahatra izahay fa azonay ny antony ary nanao fanitsiana, ary namela WAF indray.

Ahoana ny fiasan'ny Cloudflare

Cloudflare dia manana ekipa injeniera natokana amin'ny fitantanana ny fitsipika ho an'ny WAF. Miezaka manatsara ny taham-pandrenesana izy ireo, mampihena ny vokatra diso, ary mamaly haingana ireo fandrahonana vaovao rehefa mipoitra. Tao anatin'ny 60 andro farany dia nisy fangatahana fanovana 476 nokarakaraina ho an'ny fitsipika voatanisa ho an'ny WAF (iray amin'ny antsalany isaky ny adiny 3).

Ity fanovana manokana ity dia mila apetraka amin'ny maodely simulation, izay mandalo amin'ny fitsipika ny fifamoivoizana mpanjifa tena izy, saingy tsy misy voasakana. Ampiasainay ity fomba ity mba hitsapana ny fahombiazan'ny fitsipika ary handrefesana ny tahan'ny tsara diso sy ny ratsy diso. Saingy na dia amin'ny fomba simulation aza dia tsy maintsy tanterahina ny fitsipika, ary amin'ity tranga ity dia misy fomba fiteny mahazatra izay mandany loharanon-karena be loatra ny fitsipika.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Araka ny hitanao amin'ny fangatahana fanovana etsy ambony, dia manana drafitra fametrahana, drafitra famerenana, ary rohy mankany amin'ny fomba fiasa mahazatra anatiny (SOP) ho an'ity karazana fametrahana ity. Ny SOP amin'ny fanovana fitsipika dia mamela azy havoaka maneran-tany. Raha ny marina, ao amin'ny Cloudflare, dia samy hafa tanteraka ny zavatra atao, ary ny SOP dia mandidy ny handefasana ny rindrambaiko ho an'ny fitsapana sy ny fampiasana anatiny mankany amin'ny teboka anatiny (PoP) (izay ampiasain'ny mpiasanay), avy eo amin'ny mpanjifa vitsivitsy. toerana mitokana, avy eo amin'ny mpanjifa marobe, ary avy eo amin'izao tontolo izao ihany.

Toy izao ny endriny. Mampiasa git izahay amin'ny alàlan'ny BitBucket. Ireo injeniera miasa amin'ny fanovana dia mandefa kaody, izay natsangana ho an'ny TeamCity, ary rehefa mandalo ny fananganana dia voatendry ny mpandinika. Rehefa ankatoavina ny fangatahana fisintonana, dia atambatra ny kaody ary andrana maromaro (indray).

Raha vita soa aman-tsara ny fanamboarana sy ny andrana, dia misy fangatahana fanovana noforonina ao amin'ny Jira ary tsy maintsy manaiky ny fanovana ny mpitantana na mpitarika mifanaraka amin'izany. Aorian'ny fankatoavana, ny fametrahana dia mitranga ao amin'ilay antsoina hoe "PoP menagerie": DOG, PIG ary Canary (alika, kisoa ary canary).

DOG PoP dia Cloudflare PoP (tahaka ny tanànantsika rehetra) izay ampiasain'ny mpiasan'ny Cloudflare ihany. PoP ho an'ny fampiasana anatiny dia ahafahanao misambotra olana alohan'ny hanombohan'ny fifamoivoizana mpanjifa mankany amin'ny vahaolana. Zavatra mahasoa.

Raha mahomby ny fitsapana DOG dia mizotra mankany amin'ny dingana PIG (kisoa guinea) ny code. Ity no Cloudflare PoP, izay misy ny fifamoivoizana mpanjifa maimaim-poana amin'ny alàlan'ny code vaovao.
Raha tsara ny zava-drehetra dia miditra ao amin'ny Canary ny code. Manana Canary PoP telo izahay any amin'ny faritra samihafa eto amin'izao tontolo izao. Ao amin'izy ireo, ny fifamoivoizana mpanjifa karamaina sy maimaim-poana dia mandalo amin'ny code vaovao, ary ity no fanamarinana farany momba ny fahadisoana.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019
Fizotry ny famoahana rindrambaiko ao amin'ny Cloudflare

Raha tsara ny kaody ao Canary dia avoakanay izany. Ny fandehanana amin'ny dingana rehetra - DOG, PIG, Canary, izao tontolo izao - dia maharitra ora na andro maromaro, miankina amin'ny fiovan'ny code. Noho ny fahasamihafan'ny tambajotra sy ny mpanjifan'ny Cloudflare, dia mitsapa ny kaody izahay alohan'ny hamoahana azy eran-tany amin'ny mpanjifa rehetra. Saingy tsy manaraka manokana ity dingana ity ny WAF satria mila valiana haingana ny fandrahonana.

Fandrahonana WAF
Tao anatin'ny taona vitsivitsy lasa izay, nitombo be ny fandrahonana amin'ny fampiharana mahazatra. Izany dia noho ny fisian'ny fitaovana fitiliana rindrambaiko bebe kokoa. Ohatra, nanoratra momba ny manjavozavo).

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019
Source: https://cvedetails.com/

Matetika, misy porofon'ny foto-kevitra noforonina ary navoaka avy hatrany tao amin'ny Github mba hahafahan'ireo ekipa mitazona ny rindranasa hizaha toetra azy haingana sy hahazoana antoka fa azo antoka tsara. Noho izany, i Cloudflare dia mila ny fahafahana mamaly ny fanafihana vaovao haingana araka izay azo atao mba hananan'ny mpanjifa fahafahana manamboatra ny rindrambaiko.

Ohatra iray lehibe amin'ny valinteny haingana nataon'i Cloudflare dia ny fametrahana ny fiarovana ny vulnerability SharePoint tamin'ny volana Mey (vakio ato). Saika avy hatrany taorian'ny nanaovana ny fanambarana, dia nahatsikaritra fanandramana marobe izahay hanararaotra ny vulnerability amin'ny fametrahana SharePoint an'ny mpanjifanay. Manara-maso tsy tapaka ireo fandrahonana vaovao sy manoratra fitsipika ho fiarovana ny mpanjifantsika ry zalahy.

Ny fitsipika nahatonga ny olana tamin'ny alakamisy dia tokony hiaro amin'ny scripting cross-site (XSS). Ny fanafihana toy izany koa dia nanjary matetika kokoa tato anatin'ny taona vitsivitsy.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019
Source: https://cvedetails.com/

Ny fomba fanao mahazatra amin'ny fanovana fitsipika voatanisa ho an'ny WAF dia ny fanaovana fitiliana fampidirana mitohy (CI) alohan'ny fandefasana eran-tany. Ny alakamisy lasa teo dia nanao izany izahay ary namoaka ny fitsipika. Tamin’ny 13 ora sy sasany tolakandro, ny injeniera iray dia nametraka fangatahana fisarihana nankatoavina niaraka tamin’ny fiovana.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Tamin'ny 13:37 dia nanangona ny fitsipika ny TeamCity, nanao andrana ary nanome baiko. Ny andiany fitsapana WAF dia mitsapa ny fampiasa fototra an'ny WAF ary misy fitsapana vondrona marobe ho an'ny fiasa tsirairay. Taorian'ny fitsapana vondrona dia nanandrana ny fitsipika momba ny WAF izahay tamin'ny fampiasana fangatahana HTTP marobe. Ny fangatahana HTTP dia manamarina izay fangatahana tokony hosakanan'ny WAF (mba hisakanana ny fanafihana) ary izay azo avela (mba tsy hanakana ny zava-drehetra sy hisorohana ny fanenjehana diso). Saingy tsy nanandrana ny fampiasana CPU be loatra izahay, ary ny fandinihana ny diarin'ny fananganana WAF teo aloha dia mampiseho fa tsy nitombo ny fotoana fanatanterahana ny fitsapana, ary sarotra ny miahiahy fa tsy ho ampy ny loharanon-karena.

Nandalo ny fitsapana ary nanomboka nandefa ho azy ny fanovana tamin'ny 13:42 tolakandro ny TeamCity.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Quicksilver

Ny fitsipiky ny WAF dia mifantoka amin'ny fanarenana haingana ny fandrahonana, noho izany dia apetrakay amin'ny alàlan'ny fivarotana sanda manan-danja nozaraina an'i Quicksilver, izay mampiely fiovana eran-tany ao anatin'ny segondra. Ny mpanjifanay rehetra dia mampiasa ity teknolojia ity rehefa manova ny fandrindrana ao amin'ny dashboard na amin'ny alàlan'ny API, ary noho izany dia mamaly ny fiovana amin'ny hafainganam-pandehan'ny tselatra izahay.

Tsy niresaka firy momba ny Quicksilver izahay. Teo aloha izahay no nampiasa Kyoto Tycoon amin'ny maha-fivarotana tsiroaroa manan-danja miparitaka maneran-tany, saingy nisy olana teo amin'ny fampandehanana azy, ary nanoratra ny fivarotanay manokana izahay, naverina tamin'ny tanàna 180 mahery. Mampiasa Quicksilver izahay izao mba hanosehana ny fanovana fanovana ho an'ny mpanjifa, hanavao ny fitsipika WAF, ary hizara ny code JavaScript nosoratan'ny mpanjifa ho an'ny Cloudflare Workers.

Segaondra vitsy monja no ilaina amin'ny fipihana bokotra eo amin'ny dashboard na fiantsoana API mba hanovana ny fanovana eran-tany. Tian'ny mpanjifa io hafainganam-pandeha io. Ary ny Workers dia manome azy ireo ny fametrahana rindrambaiko manerantany. Amin'ny ankapobeny, Quicksilver dia mampiely 350 fiovana isan-tsegondra.

Ary Quicksilver dia tena haingana. Amin'ny ankapobeny, nahatratra ny 99 isan-jato tamin'ny 2,29 segondra izahay mba hampielezana fiovana amin'ny solosaina rehetra manerantany. Ny hafainganam-pandeha matetika dia zavatra tsara. Rehefa dinihina tokoa, rehefa mamela asa iray ianao na manadio ny cache, dia mitranga eo no ho eo sy na aiza na aiza. Ny fandefasana kaody amin'ny Cloudflare Workers dia mitranga amin'ny hafainganam-pandeha mitovy. Cloudflare dia mampanantena ny mpanjifany hanavao haingana amin'ny fotoana mety.

Saingy tamin'ity tranga ity, ny hafainganam-pandeha dia nanao vazivazy masiaka taminay, ary niova na aiza na aiza ny fitsipika tao anatin'ny segondra vitsy. Voamarikao angamba fa mampiasa Lua ny kaody WAF. Cloudflare dia mampiasa an'i Lua betsaka amin'ny famokarana sy ny antsipiriany Lua in WAF isika efa noresahina. Mampiasa ny Lua WAF PCRE anatiny ary mampihatra ny backtracking mba hampifanaraka. Tsy manana rafitra fiarovana amin'ny fanehoan-kevitra tsy voafehy izy io. Eto ambany aho dia hiresaka bebe kokoa momba izany sy izay ataontsika momba izany.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Talohan’ny nampiharana ny fitsipika dia nizotra tsara ny zava-drehetra: noforonina sy nankatoavina ny fangatahana fisintonana, nanangona sy nanandrana ny kaody ny pipeline CI/CD, napetraka ny fangatahana fanovana araka ny SOP mifehy ny fametrahana sy ny famerenana, ary vita ny fametrahana.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019
Cloudflare WAF dingana fametrahana

Nisy zavatra tsy nety
Araka ny nolazaiko dia mametraka fitsipika WAF am-polony izahay isan-kerinandro, ary manana rafitra maro izahay mba hiarovana amin'ny voka-dratsy ateraky ny fametrahana izany. Ary rehefa misy zavatra tsy mety dia matetika fitambarana toe-javatra maromaro indray mandeha. Raha mahita antony iray fotsiny ianao, dia mazava ho azy fa manome toky izany, saingy tsy marina foana izany. Ireo no antony niarahana nitarika ny tsy fahombiazan'ny serivisy HTTP/HTTPS.

  1. Nanoratra teny tsy tapaka ny injeniera iray izay mety hiteraka tafahoatra fihemorana.
  2. Ny endri-javatra iray izay mety ho nanakana ny fanehoan-kevitra mahazatra amin'ny fandaniam-bola be loatra dia nesorina tamin'ny famerenana ny WAF herinandro maromaro talohan'izay - ny refactoring dia nilaina mba hahatonga ny WAF mandany loharanon-karena kely kokoa.
  3. Ny motera fanehoan-kevitra mahazatra dia tsy nanana antoka sarotra.
  4. Tsy hitan'ny test suite ny fanjifana CPU tafahoatra.
  5. Ny SOP dia mamela ny fanovana fitsipika tsy misy vonjy taitra havoaka maneran-tany tsy misy dingana maromaro.
  6. Nitaky ny fanamboarana WAF feno indroa ny drafitra famerenana indray, izay naharitra ela.
  7. Tara loatra ny fanairana voalohany momba ny olan'ny fifamoivoizana maneran-tany.
  8. Naharitra elaela ny fanavaozana ny pejin'ny sata.
  9. Nanana olana tamin'ny fidirana amin'ny rafitra izahay noho ny fahadisoam-panantenana, ary tsy tafapetraka tsara ny fomba fiasa bypass.
  10. Ny injeniera SRE dia very ny fidirana amin'ny rafitra sasany satria lany ny fahazoan-dàlana azy ireo noho ny antony fiarovana.
  11. Tsy afaka niditra tao amin'ny dashboard Cloudflare na API ny mpanjifanay satria nandalo faritra Cloudflare izy ireo.

Inona no niova nanomboka ny alakamisy lasa teo

Voalohany, nampitsahatra tanteraka ny asa rehetra momba ny famoahana ho an'ny WAF izahay ary manao izao manaraka izao:

  1. Averinay ny fiarovana ny fampiasana tafahoatra ny CPU izay nesorinay. (Vonona)
  2. Fanamarinana an-tànana ny fitsipika 3868 rehetra ao amin'ny fitsipika voatanisa ho an'ny WAF mba hahitana sy hanitsiana ireo tranga hafa mety hisian'ny fihemorana tafahoatra. (Vita ny fanamarinana)
  3. Ampidirinay ny mombamomba ny zava-bita ho an'ny fitsipika rehetra ao amin'ny andiany fitsapana. ( Andrasana : 19 Jolay )
  4. Hiverina any amin'ny motera expression regular re2 na harafesina - samy manome antoka fampandehanana. ( Andrasana : 31 Jolay )
  5. Manoratra indray ny SOP izahay mba hametraka fitsipika amin'ny dingana, toy ny rindrambaiko hafa ao amin'ny Cloudflare, fa miaraka amin'izay koa dia manana fahafahana handefasana eran-tany maika raha toa ka efa nanomboka ny fanafihana.
  6. Mamolavola ny fahafahana manala haingana ny dashboard Cloudflare sy ny API amin'ny faritra Cloudflare izahay.
  7. Fanavaozana pejy automatique Cloudflare Status.

Lavitr'ezaka dia miala amin'ny Lua WAF nosoratako taona vitsivitsy lasa izay. Mamindra WAF mankany rafitra firewall vaovao. Amin'izany fomba izany dia ho haingana kokoa ny WAF ary hahazo fiarovana fanampiny.

famaranana

Niteraka fahasahiranana ho anay sy ny mpanjifanay izany tsy fahombiazana izany. Nihetsika haingana izahay mba hanitsiana ny toe-draharaha ary miasa amin'ny lesoka amin'ny dingana nahatonga ny fianjerana, ary koa ny fandavahana lalindalina kokoa mba hiarovana amin'ny olana mety hitranga amin'ny fanehoan-kevitra mahazatra amin'ny ho avy rehefa mifindra monina amin'ny teknolojia vaovao.

Tena menatra izahay amin'ity fahatapahan-jiro ity ary miala tsiny amin'ny mpanjifanay. Manantena izahay fa hiantoka ny tsy hiverenan'ny zavatra tahaka izao intsony ireo fanovana ireo.

Fampiharana. Famerenana ny fomba fiteny mahazatra

Mba hahatakarana ny fomba fitenenana:

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

nihinana ny loharanon-karena CPU rehetra, mila mahafantatra kely momba ny fomba fiasan'ny maotera mahazatra mahazatra ianao. Ny olana eto dia ny modely .*(?:.*=.*). (?: ary mifanaraka ) dia vondrona tsy misambotra (izany hoe ny fitenenana ao anaty fononteny dia mivondrona ho fomba fiteny tokana).

Ao anatin'ny tontolon'ny fanjifana CPU be loatra, ity lamina ity dia azo lazaina ho .*.*=.*. Amin'ity endrika ity dia toa sarotra be ny lamina. Fa ny tena zava-dehibe, ao amin'ny tontolo tena izy, ny fomba fiteny (toy ny fitenenana be pitsiny ao amin'ny fitsipiky ny WAF) izay mangataka ny motera hifanaraka amin'ny sombiny arahin'ny sombiny hafa dia mety hitarika ho amin'ny fihemorana. Ary izay no antony.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Amin'ny fomba fiteny mahazatra . midika izany fa mila mifanandrify amin'ny toetra iray ianao, .* - mifanandrify amin'ny tarehintsoratra aotra na mihoatra ny "mitsiriritra", izany hoe maka tarehintsoratra ambony indrindra, ka .*.*=.* midika hoe mifanandrify amin'ny tarehintsoratra aotra na maromaro, avy eo ampifanaraho amin'ny tarehintsoratra aotra na maromaro, tadiavo ny litera = toetra, mifanandrify tarehintsoratra aotra na maromaro.

Andeha horaisintsika ny tsipika fitsapana x=x. Mifanaraka amin'ny fitenenana izany .*.*=.*. .*.* alohan'ny hifanaraka amin'ny voalohany ny famantarana mitovy x (iray amin'ireo vondrona .* mifanandrify amin'ny x, ary ny faharoa - tarehintsoratra aotra). .* aorian = lalao farany x.

Mitaky dingana 23 ity fampitahana ity. Vondrona voalohany .* в .*.*=.* miasa amim-pitandremana ary mifanaraka amin'ny tady manontolo x=x. Mifindra any amin'ny vondrona manaraka ny maotera .*. Tsy manana tarehin-tsoratra hafa hifanaraka izahay, ka ny vondrona faharoa .* mifanaraka amin'ny tarehintsoratra aotra (azo atao izany). Avy eo ny motera dia mandeha amin'ny famantarana =. Tsy misy marika intsony (vondrona voalohany .* nampiasa ny fomba fiteny manontolo x=x), tsy misy fampitahana mitranga.

Ary avy eo dia miverina amin'ny voalohany ny motera fanehoan-kevitra mahazatra. Miroso amin’ny vondrona voalohany izy .* ary mampitaha izany с x= (fa tsy x=x), ary avy eo dia mandray ny vondrona faharoa .*. Vondrona faharoa .* ampitahaina amin'ny faharoa x, ary tsy manana tarehin-tsoratra intsony isika. Ary rehefa tonga indray ny motera = в .*.*=.*, tsy misy miasa. Ary miverina indray izy.

Tamin'ity indray mitoraka ity ny vondrona .* mbola mifanaraka x=, fa ny vondrona faharoa .* tsy misy intsony x, ary tarehintsoratra aotra. Miezaka mitady toetra ara-bakiteny ny motera = amin'ny lamina .*.*=.*, fa tsy mivoaka (na izany aza, ny vondrona voalohany dia efa nibodo azy .*). Ary mihemotra indray izy.

Tamin'ity indray mitoraka ity ny vondrona voalohany .* maka ny x voalohany ihany. Fa ny vondrona faharoa .* "mitsiriritra" misambotra =x. Efa novinavinao ve izay hitranga? Ny motera dia manandrana mifanandrify amin'ny ara-bakiteny =, tsy mahomby ary mihemotra indray.

Vondrona voalohany .* mbola mifanaraka amin'ny voalohany x... Ny faharoa .* maka ihany =. Mazava ho azy fa tsy afaka mifanaraka amin'ny ara-bakiteny ny motera =, satria efa nanao izany ny vondrona faharoa .*. Ary miverina miverina indray. Ary miezaka ny hampifanaraka tady misy tarehintsoratra telo izahay!

Vokany, ny vondrona voalohany .* mifanaraka amin'ny voalohany ihany x, faharoa .* - miaraka amin'ny litera aotra, ary ny motera farany dia mifanandrify amin'ny ara-bakiteny = amin'ny fanehoana с = milahatra. Manaraka izany ny vondrona farany .* ampitahaina amin'ny farany x.

Dingana 23 fotsiny ho an'ny x=x. Jereo lahatsary fohy momba ny fampiasana Perl Regexp::Debugger, izay mampiseho ny dingana sy ny fihemorana.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Efa asa be izao, fa ahoana kosa raha toa ka x=x hanana isika x=xx? Dingana 33 izany. Ary raha x=xxx? 45. Tsy linear ny fifandraisana. Ny grafika dia mampiseho fampitahana avy amin'ny x=x до x=xxxxxxxxxxxxxxxxxxxx (20 x после =). Raha manana 20x isika aorian'izay =, ny motera dia mamita ny fampifanarahana amin'ny dingana 555! (Ankoatra izany, raha resy isika x= ary ny tady dia misy 20 fotsiny x, ny motera dia hanao dingana 4067 mba hahatakarana fa tsy misy lalao).

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ity horonantsary ity dia mampiseho ny fihemorana rehetra ho fampitahana x=xxxxxxxxxxxxxxxxxxxx:

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ny olana dia rehefa mitombo ny haben'ny tady dia mitombo tsikelikely ny fotoana mifanandrify. Mety hiharatsy kokoa anefa ny toe-javatra raha ovaina kely ny fomba fiteny mahazatra. Aoka hatao hoe nanana .*.*=.*; (izany hoe nisy semicolon ara-bakiteny teo amin'ny faran'ny lamina). Ohatra, mba hampifanaraka ny fomba fiteny toy ny foo=bar;.

Ary ny fihemorana eto dia ho tena loza. Ho fampitahana x=x 90 dingana izany fa tsy 23. Ary mitombo haingana io isa io. Mampitaha x= ary 20 x, 5353 dingana no ilaina. Ity ny tabilao. Jereo ny soatoavina axis Y raha oharina amin’ny tabilao teo aloha.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Raha liana ianao dia jereo ny dingana 5353 tsy nahomby rehetra x=xxxxxxxxxxxxxxxxxxxx и .*.*=.*;

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Amin'ny fampiasana malaina fa tsy mitsiriritra, dia azo fehezina ny halehiben'ny fihemorana. Raha ovaina ho .*?.*?=.*?, raha ampitahaina x=x dia hanao dingana 11 (fa tsy 23). Raha ny momba ny x=xxxxxxxxxxxxxxxxxxxx... Satria rehetra ? после .* milaza amin'ny maotera mba hifanaraka amin'ny isa kely indrindra alohan'ny handrosoana.

Saingy tsy mahavaha tanteraka ny olana mihemotra ny fanaovana sarintany kamo. Raha soloina ohatra ny loza .*.*=.*; amin'ny .*?.*?=.*?;, ny fotoana famonoana dia tsy miova. x=x mbola mitaky dingana 555, ary x= ary 20 x - 5353.

Ny hany azo atao (ankoatra ny fanoratana tanteraka ny lamina ho an'ny manokana kokoa) dia ny miala amin'ny motera fanehoan-kevitra mahazatra miaraka amin'ny mekanika miverina. Izany no hataontsika mandritra ny herinandro vitsivitsy.

Ny vahaolana amin'ity olana ity dia fantatra hatramin'ny 1968, rehefa nanoratra lahatsoratra i Kent Thompson Teknika fandaharana: Algorithm fitadiavana fomba fiteny mahazatra (“Fomba Fandaharana: Algorithm Fikarohana Expression Regular”). Ny lahatsoratra dia manoritsoritra mekanika iray ahafahanao manova fomba fiteny mahazatra ho milina fanjakana voafetra tsy voafaritra, ary aorian'ny fiovan'ny fanjakana amin'ny milina fanjakana voafetra tsy voafaritra dia ampiasao algorithm iray izay miankina amin'ny tady mifanandrify ny fotoana hanatanterahana azy.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Fomba fandaharana
Algorithm Fikarohana Expression Regular
Ken Thompson

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

Izy io dia mamaritra fomba iray hitadiavana andian-tsoratra manokana ao anaty lahatsoratra ary miresaka momba ny fampiharana an'io fomba io amin'ny endrika compiler. Ny compiler dia mandray ny fomba fiteny mahazatra ho toy ny kaody loharano ary mamokatra ny programa IBM 7094 ho code code. Ny programa object dia maka fidirana amin'ny endrika fitadiavana lahatsoratra ary mamoaka famantarana isaky ny misy andian-dahatsoratra mifanandrify amin'ny fomba fiteny mahazatra. Ny lahatsoratra dia manome ohatra, olana ary vahaolana.

algorithm
Ny algorithm fikarohana teo aloha dia niafara tamin'ny fiverenana raha toa ka tsy nahitam-bokatra ny fikarohana ampahany nahomby.

Amin'ny fomba fanangonana, ny algorithm dia tsy miasa amin'ny marika. Mampita torolalana amin'ny kaody voaangona izy io. Haingana dia haingana ny famonoana - aorian'ny fandefasana angon-drakitra mankany an-tampon'ny lisitra ankehitriny, dia mikaroka ho azy ireo tarehin-tsoratra mety misesy rehetra ao amin'ny fitenenana mahazatra.
Ny algorithm fanangonana sy fikarohana dia tafiditra ao amin'ny tonian-dahatsoratra fizarana fotoana ho fikarohana contextual. Mazava ho azy fa lavitra ny fampiharana ny fomba fikarohana toy izany. Ohatra, ny variana amin'ity algorithm ity dia ampiasaina ho fikarohana marika amin'ny latabatra amin'ny assembler.
Heverina fa fantatry ny mpamaky ny fiteny mahazatra sy ny fiteny fandaharana amin'ny ordinatera IBM 7094.

Compiler
Ny compiler dia misy dingana telo mihazakazaka mifanitsy. Ny dingana voalohany dia ny fanivanana syntax, izay tsy mamela afa-tsy teny mahazatra manitsy syntactique ihany no mandalo. Ity dingana ity koa dia mampiditra ny "·" operator mba hifanaraka amin'ny fomba fiteny mahazatra. Amin'ny dingana faharoa dia avadika ho endrika postfix ny fomba fiteny mahazatra. Amin'ny dingana fahatelo, ny kaody zavatra dia noforonina. Ny dingana 2 voalohany dia miharihary, ary tsy hiresaka momba azy ireo isika.

Ny lahatsoratr'i Thompson dia tsy miresaka momba ny milina fanjakana voafetra tsy voafaritra, fa manazava tsara ny algorithm amin'ny fotoana tsipika ary manolotra programa ALGOL-60 izay mamorona fehezan-teny fivorian'ny IBM 7094. Sarotra ny fampiharana, saingy tena tsotra ny hevitra.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

lalan'ny fikarohana ankehitriny. Izy io dia aseho amin'ny alàlan'ny kisary ⊕ misy fidirana iray sy fivoahana roa.
Ny sary 1 dia mampiseho ny fiasan'ny dingana fanangonana fahatelo rehefa manova ohatra fanehoana mahazatra. Ny endri-tsoratra telo voalohany amin'ny ohatra dia a, b, c, ary ny tsirairay dia mamorona fidirana stack S[i] sy saha NNODE.

NNODE amin'ny kaody efa misy mba hamoronana ny fanehoan-kevitra mahazatra amin'ny fidirana tokana (jereo ny sary 5)

Toy izao ny endriky ny fomba fiteny mahazatra .*.*=.*, raha alainao sary an-tsaina izany toy ny amin'ny sary avy amin'ny lahatsoratr'i Thompson.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ao amin'ny Fig. 0 dia misy fanjakana dimy manomboka amin'ny 0, ary tsingerina 3 izay manomboka amin'ny fanjakana 1, 2 ary 3. Ireo tsingerina telo ireo dia mifanandrify amin'ny telo. .* amin'ny fomba fiteny mahazatra. 3 ovals misy teboka mifanitsy amin'ny marika iray. Oval misy famantarana = mifanitsy amina toetra ara-bakiteny =. Fanjakana 4 no farany. Raha tonga amin'izany isika, dia mifanitsy amin'izay ny fomba fiteny mahazatra.

Mba hahitana ny fomba azo ampiasana ny diagrama fanjakana toy izany amin'ny fampitoviana fomba fiteny mahazatra .*.*=.*, hojerentsika ny fampifandraisana tady x=x. Ny programa dia manomboka amin'ny fanjakana 0, araka ny aseho amin'ny sary. 1.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Mba hampandehanana an'io algorithm io, ny milina fanjakana dia tokony ho any amin'ny fanjakana maromaro miaraka. Ny milina voafetra tsy voafaritra dia hanao ny fifindrana rehetra azo atao miaraka.

Alohan'ny hananan'ny fotoana hamakiana ny angon-drakitra fidirana dia miditra amin'ny fanjakana roa voalohany (1 sy 2), araka ny aseho amin'ny sary. 2.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Ao amin'ny Fig. 2 dia mampiseho izay mitranga rehefa mijery ny voalohany izy x в x=x. x afaka manao sarintany mankany amin'ny teboka ambony, manomboka amin'ny fanjakana 1 ary miverina amin'ny fanjakana 1. Na x afaka sarintany mankany amin'ny teboka etsy ambany, manomboka amin'ny fanjakana 2 ary miverina amin'ny fanjakana 2.

Taorian'ny fampifanarahana ny voalohany x в x=x mbola any amin'ny fanjakana 1 sy 2 isika. Tsy tonga any amin'ny fanjakana 3 na 4 isika satria mila toetra ara-bakiteny. =.

Ny algorithm dia mandinika avy eo = в x=x. Tahaka ny x teo aloha, dia azo ampifandraisina amin'ny iray amin'ireo tadivavarana roa ambony avy amin'ny fanjakana 1 mankany amin'ny fanjakana 1 na avy amin'ny fanjakana 2 mankany amin'ny fanjakana 2, fa ny algorithm dia afaka mifanandrify amin'ny litera. = ary miala amin'ny fanjakana 2 mankany amin'ny fanjakana 3 (ary avy hatrany 4). Izany dia aseho ao amin'ny Fig. 3.

Ny antsipirian'ny fahatapahan'ny Cloudflare tamin'ny 2 Jolay 2019

Avy eo ny algorithm dia mandroso mankany amin'ny farany x в x=x. Avy amin'ny fanjakana 1 sy 2 dia azo atao ny miverina any amin'ny fanjakana 1 sy 2. Avy amin'ny fanjakana 3 x afaka mifanandrify amin'ny teboka eo ankavanana ary miverina amin'ny fanjakana 3.

Amin'ity dingana ity, ny toetra tsirairay x=x noheverina, ary satria tonga amin'ny fanjakana 4 isika, dia mifanaraka amin'io tady io ny fomba fiteny mahazatra. Ny endri-tsoratra tsirairay dia voahodina indray mandeha, ka ity algorithm ity dia tsipika amin'ny halavan'ny tady fampidirana. Ary tsy misy fihemorana.

Mazava ho azy, rehefa tonga ny fanjakana 4 (rehefa nifanaraka ny algorithm x=) mifanandrify ny fitenenana mahazatra iray manontolo, ary mety ho tapitra tsy misy fiheverana izany mihitsy ny algorithm x.

Ity algorithm ity dia miankina amin'ny haben'ny tady fidirana.

Source: www.habr.com

Add a comment