Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Pafupifupi zaka 9 zapitazo Cloudflare inali kampani yaying'ono, ndipo sindinaigwire ntchito, ndinali kasitomala chabe. Patatha mwezi umodzi ndikuyambitsa Cloudflare, ndinalandira chidziwitso kuti webusaiti yanga jgc.orgDNS sikuwoneka kuti ikugwira ntchito. Cloudflare yasintha Protocol Buffers, ndipo panali DNS yosweka.

Nthawi yomweyo ndidalembera a Matthew Prince ndi mutu wakuti "DNS yanga ili kuti?" ndipo adabweza yankho lalitali lodzaza zaukadaulo (werengani makalata onse apa), ndinayankha kuti:

Kuchokera: John Graham-Cumming
Tsiku: October 7, 2010, 9:14
Mutu: Re: Kodi DNS yanga ili kuti?
Kwa: Matthew Prince

Lipoti labwino, zikomo. Ndidzaitana ngati pali mavuto. Ndikoyenera kulemba positi ponena za izi mutatolera zidziwitso zonse zaukadaulo. Ndikuganiza kuti anthu adzasangalala ndi nkhani yomasuka komanso yowona mtima. Makamaka ngati mumangirira ma graph kuti muwonetse momwe kuchuluka kwa magalimoto kukulira kuyambira kukhazikitsidwa.

Ndimayang'anira bwino patsamba langa, ndipo ndimalandira SMS yokhudza kulephera kulikonse. Kuyang'anira kukuwonetsa kuti kulephera kunachitika kuyambira 13:03:07 mpaka 14:04:12. Mayeso amachitika mphindi zisanu zilizonse.

Ine ndikutsimikiza inu mukumvetsa izo. Mukutsimikiza kuti simukufuna munthu wanu ku Europe? πŸ™‚

Ndipo anayankha:

Kuchokera: Matthew Prince
Tsiku: October 7, 2010, 9:57
Mutu: Re: Kodi DNS yanga ili kuti?
Kwa: John Graham-Cumming

Zikomo. Tinayankha aliyense amene analemba. Ndikupita ku ofesi tsopano ndipo tilemba kena kake pabulogu kapena kusindikiza positi pa bolodi lathu. Ndikuvomereza kwathunthu, kukhulupirika ndi chilichonse.

Tsopano Cloudflare ndi kampani yaikulu kwambiri, ndimagwira ntchito, ndipo tsopano ndiyenera kulemba momasuka za zolakwa zathu, zotsatira zake ndi zochita zathu.

Zochitika pa July 2

Pa Julayi 2nd tidatulutsa lamulo latsopano mu Malamulo Oyendetsedwa a WAFs chifukwa chake Zida za CPU zinali kutha pa purosesa iliyonse yopangira HTTP/HTTPS traffic pa Cloudflare network padziko lonse lapansi. Tikuwongolera nthawi zonse malamulo oyendetsedwa ndi ma WAF poyankha zovuta zatsopano ndi ziwopsezo. Mwachitsanzo, mu May, tinafulumira onjezani lamulokuteteza pachiwopsezo chachikulu cha SharePoint. Mfundo yonse ya WAF yathu ndikutha kuyika malamulo mwachangu komanso padziko lonse lapansi.

Tsoka ilo, zosintha za Lachinayi lapitali zinali ndi mawu okhazikika omwe adawononga zinthu zambiri za HTTP/HTTPS CPU pakubweza kumbuyo. Ntchito zathu za proxy, CDN, ndi WAF zinavutika chifukwa chake. Chithunzichi chikuwonetsa kuti zida za purosesa zothandizira HTTP/HTTPS zimafikira pafupifupi 100% pa maseva pamaneti athu.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019
Kugwiritsa ntchito CPU pamalo amodzi pazochitika

Zotsatira zake, makasitomala athu (ndi makasitomala amakasitomala athu) adakhala ndi tsamba lolakwika la 502 m'madomeni a Cloudflare. Zolakwa 502 zidapangidwa ndi ma seva akutsogolo a Cloudflare omwe akadali ndi ma cores aulere koma osatha kulumikizana ndi njira zoyendetsera HTTP/HTTPS.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Tikudziwa kuti izi zasokoneza makasitomala athu. Tili ndi manyazi kwambiri. Ndipo kulephera uku kwatilepheretsa kuchita bwino ndi zomwe zidachitikazo.

Ngati munali mmodzi wa makasitomala awa, mwina mumachita mantha, okwiya komanso okhumudwa. Komanso, sitinakhalepo ndi a chisokonezo padziko lonse. Kugwiritsa ntchito kwambiri kwa CPU kudachitika chifukwa cha lamulo limodzi la WAF lomwe silinatchulidwe momveka bwino zomwe zidapangitsa kuti anthu abwerere m'mbuyo kwambiri. Nawa mawu olakwa: (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

Ngakhale izi ndizosangalatsa pazokha (ndipo ndilankhula mwatsatanetsatane pansipa), ntchito ya Cloudflare idatsika kwa mphindi 27 osati chifukwa cha mawu oyipa nthawi zonse. Zinatitengera nthawi kuti tifotokoze ndondomeko ya zochitika zomwe zinapangitsa kuti tilephere, choncho tinachedwa kuyankha. Kumapeto kwa positi, ndikufotokozerani za kubwereranso m'mawu okhazikika ndikukuuzani zoyenera kuchita nazo.

Zomwe zachitika

Tiyeni tiyambe mwadongosolo. Nthawi zonse pano ali ku UTC.

Nthawi ya 13:42 p.m., injiniya wa gulu la firewall adasintha pang'ono malamulo ozindikira. XSS pogwiritsa ntchito njira yokha. Chifukwa chake, tikiti yopempha kusintha idapangidwa. Timayendetsa matikiti oterowo kudzera ku Jira (chithunzi pansipa).

Pambuyo pa mphindi 3, tsamba loyamba la PagerDuty lidawonekera, likunena vuto ndi WAF. Uku kunali kuyesa kopanga komwe kumayesa magwiridwe antchito a WAF (tili ndi mazana aiwo) kunja kwa Cloudflare kuwunika momwe ntchito ikuyendera. Izi zidatsatiridwa nthawi yomweyo ndi masamba a zidziwitso za mayeso ena a Cloudflare-to-mapeto akulephera, zovuta zamagalimoto padziko lonse lapansi, zolakwika 502 zofala, komanso matani a malipoti ochokera ku Points of Presence (PoP) m'mizinda padziko lonse lapansi zomwe zikuwonetsa kusowa. za CPU zothandizira.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Ndinalandira machenjezo angapo, ndinatuluka pamsonkhano, ndipo ndinali paulendo wopita ku tebulo pamene mkulu wa dipatimenti yathu yopititsa patsogolo mayankho adanena kuti tataya 80% ya magalimoto athu. Ndinathamangira kwa akatswiri athu a SRE, omwe anali akugwira ntchito kale pa vutoli. Poyamba tinkaganiza kuti ndi kuukira kosadziwika.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Mainjiniya a Cloudflare SRE amwazikana padziko lonse lapansi ndikuwunika momwe zinthu zilili nthawi yonseyi. Nthawi zambiri, zidziwitso izi zimakudziwitsani za zovuta zakumaloko zocheperako, zimatsatiridwa pazidashibodi zamkati, ndipo zimathetsedwa kangapo patsiku. Koma masamba awa ndi zidziwitso zidawonetsa chinthu chovuta kwambiri, ndipo mainjiniya a SRE adalengeza nthawi yomweyo kuchuluka kwamphamvu P0 ndikulumikizana ndi oyang'anira ndi mainjiniya amachitidwe.

Akatswiri athu a ku London anali kumvetsera nkhani m’holo yaikulu panthawiyo. Nkhaniyo inayenera kusokonezedwa, aliyense anasonkhana m’chipinda chachikulu cha misonkhano, ndipo akatswiri enanso anaitanidwa. Ili silinali vuto lomwe ma SRE amatha kuthana nawo okha. Zinali zofulumira kuphatikizira akatswiri oyenerera.

Pa 14:00 tinatsimikiza kuti vuto linali ndi WAF ndipo panalibe kuwukira. Gulu lochita masewerawa lidakoka zambiri za CPU ndipo zidawonekeratu kuti WAF ndiye adayambitsa. Wogwira ntchito wina adatsimikizira chiphunzitsochi pogwiritsa ntchito strace. Winawake adawona m'zipikazo kuti pali vuto ndi WAF. Pa 14:02 p.m., gulu lonse linabwera kwa ine pamene likufuna kugwiritsa ntchito kupha padziko lonse, makina opangidwa mu Cloudflare omwe amatseka chigawo chimodzi padziko lonse lapansi.

Momwe tidaphera WAF padziko lonse lapansi ndi nkhani ina. Sizophweka choncho. Timagwiritsa ntchito zinthu zathu, komanso kuyambira ntchito yathu Access sizinagwire ntchito, sitinathe kutsimikizira ndikulowa mu gulu lowongolera lamkati (zonse zitakonzedwa, tidamva kuti mamembala ena adataya mwayi chifukwa chachitetezo chomwe chimalepheretsa zidziwitso ngati gulu lowongolera lamkati siligwiritsidwa ntchito nthawi yayitali).

Ndipo sitinathe kufika kuzinthu zathu zamkati, monga Jira kapena makina omanga. Timafunikira njira yosinthira, yomwe sitinagwiritse ntchito pafupipafupi (izi ziyeneranso kukonzedwa). Pomaliza, mainjiniya m'modzi adakwanitsa kuletsa WAF nthawi ya 14:07, ndipo pa 14:09, kuchuluka kwa magalimoto ndi CPU zidabwerera mwakale kulikonse. Njira zina zotetezera za Cloudflare zinagwira ntchito ngati zachilendo.

Kenako tinayamba kubwezeretsa WAF. Mkhalidwewo unali wachilendo, kotero tinayesa mayesero olakwika (kudzifunsa ngati kusintha kunalidi vuto) ndi mayesero abwino (kuonetsetsa kuti kubwezeretsa kumagwira ntchito) mumzinda umodzi pogwiritsa ntchito magalimoto osiyana, kusamutsa makasitomala olipira kuchokera kumeneko.

Pa 14:52 tinali otsimikiza kuti tamvetsetsa chifukwa chake ndikuwongolera, ndikuwongolera WAF kachiwiri.

Momwe Cloudflare imagwirira ntchito

Cloudflare ili ndi gulu la mainjiniya odzipereka kuti aziwongolera malamulo a WAFs. Amayesetsa kuwongolera ziwopsezo zodziwikiratu, kuchepetsa zonena zabodza, ndikuyankha mwachangu kuwopseza kwatsopano akamatuluka. M'masiku 60 apitawa, pakhala zopempha zosintha 476 zomwe zasinthidwa pamalamulo oyendetsedwa ndi WAF (avareji imodzi mwamaola atatu aliwonse).

Kusintha kwapadera kumeneku kuyenera kutumizidwa mumayendedwe oyerekeza, pomwe magalimoto enieni amakasitomala amadutsa mulamulo, koma palibe chomwe chatsekedwa. Timagwiritsa ntchito njirayi kuti tiyese mphamvu ya malamulo ndikuyesa zolakwika zabodza ndi zabodza. Koma ngakhale mumayendedwe oyerekeza, malamulowo ayenera kuchitidwa, ndipo pamenepa lamuloli limakhala ndi mawu okhazikika omwe amawononga kwambiri purosesa.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Monga mukuonera pa pempho losintha pamwambapa, tili ndi ndondomeko yotumizira, ndondomeko yobweza, ndi ulalo wa ndondomeko yoyendetsera mkati (SOP) yamtunduwu. SOP yosintha lamulo imalola kuti lifalitsidwe padziko lonse lapansi. Kwenikweni, ku Cloudflare, zinthu zimachitika mosiyana kwambiri, ndipo SOP imatiuza kuti tiyambe kutumiza mapulogalamuwa kuti ayesedwe ndikugwiritsa ntchito mkati kumalo amkati (PoP) (omwe ogwira ntchito athu amagwiritsa ntchito), kenako kwa makasitomala ochepa. malo akutali, kenako kwa ogula ambiri, kenako kudziko lonse lapansi.

Izi ndi momwe zimawonekera. Timagwiritsa ntchito git mkati kudzera pa BitBucket. Mainjiniya omwe akugwira ntchito pazosintha amatumiza ma code, omwe amamangidwa ku TeamCity, ndipo nyumbayo ikadutsa, owunikira amapatsidwa. Pempho kukoka litavomerezedwa, code imasonkhanitsidwa ndipo mayeso angapo amayendetsedwa (kachiwiri).

Ngati kumanga ndi kuyesa kutha bwino, pempho losintha limapangidwa ku Jira ndipo woyang'anira woyenera kapena mtsogoleri ayenera kuvomereza kusinthaku. Pambuyo pa kuvomerezedwa, kutumizidwa kumachitika kumalo otchedwa "PoP menagerie": GALU, PIG ndi Canary (galu, nkhumba ndi canary).

DOG PoP ndi Cloudflare PoP (monga mizinda yathu yonse) yomwe imagwiritsidwa ntchito ndi ogwira ntchito ku Cloudflare okha. PoP yogwiritsidwa ntchito mkati imakupatsani mwayi wopeza zovuta magalimoto a makasitomala asanayambe kulowa yankho. Chinthu chothandiza.

Ngati mayeso a GALU apambana, code imasunthira ku PIG (guinea pig). Iyi ndi Cloudflare PoP, pomwe kachulukidwe kakang'ono kamakasitomala aulere kamayenda kudzera mu code yatsopano.
Ngati zonse zili bwino, code imapita ku Canary. Tili ndi ma Canary PoP atatu kumadera osiyanasiyana padziko lapansi. Mwa iwo, kuchuluka kwa makasitomala olipidwa ndi aulere kumadutsa mu code yatsopano, ndipo iyi ndiye cheke chomaliza cha zolakwika.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019
Pulogalamu Yotulutsa Mapulogalamu ku Cloudflare

Ngati code ili bwino ku Canary, timayimasula. Kudutsa magawo onse - GALU, PIG, Canary, dziko lonse lapansi - zimatenga maola angapo kapena masiku, kutengera kusintha kwa code. Chifukwa cha kusiyanasiyana kwa netiweki ya Cloudflare komanso makasitomala, timayesa kachidindo tisanawatulutse padziko lonse lapansi kwa makasitomala onse. Koma WAF samatsata ndondomekoyi chifukwa ziwopsezo ziyenera kuyankhidwa mwachangu.

Zowopsa za WAF
M'zaka zingapo zapitazi, pakhala kuwonjezeka kwakukulu kwa ziwopsezo pakugwiritsa ntchito wamba. Izi ndichifukwa cha kupezeka kwakukulu kwa zida zoyesera mapulogalamu. Mwachitsanzo, ife posachedwapa analemba za fuzzing).

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019
Source: https://cvedetails.com/

Nthawi zambiri, umboni wamalingaliro umapangidwa ndikusindikizidwa nthawi yomweyo pa Github kuti magulu omwe akusunga pulogalamuyi athe kuyesa mwachangu ndikuwonetsetsa kuti yatetezedwa mokwanira. Chifukwa chake, Cloudflare imafunikira kuthekera koyankha kuukira kwatsopano mwachangu momwe angathere kuti makasitomala akhale ndi mwayi wokonza mapulogalamu awo.

Chitsanzo chabwino chakuyankha mwachangu kwa Cloudflare ndikutumiza kwachitetezo chachitetezo cha SharePoint mu Meyi (werengani apa). Pafupifupi zidziwitso zitangoperekedwa, tidawona kuchuluka kwa zoyeserera kugwiritsa ntchito chiwopsezo pakuyika kwamakasitomala a SharePoint. Anyamata athu nthawi zonse amayang'anitsitsa zowopseza zatsopano ndikulemba malamulo kuti ateteze makasitomala athu.

Lamulo lomwe lidayambitsa vutoli Lachinayi limayenera kuteteza motsutsana ndi ma cross-site scripting (XSS). Kuukira kotereku kwachulukanso m'zaka zaposachedwapa.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019
Source: https://cvedetails.com/

Njira yokhazikika yosinthira lamulo loyendetsedwa ndi WAF ndikuyesa mosalekeza (CI) musanatumizidwe padziko lonse lapansi. Lachinayi lapitali tidachita izi ndikutulutsa malamulo. Nthawi ya 13:31 p.m., mainjiniya adapereka pempho lovomerezeka kukoka ndikusintha.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Pa 13:37 TeamCity inasonkhanitsa malamulo, inayesa mayesero ndikupereka chivomerezo. WAF test suite imayesa magwiridwe antchito a WAF ndipo imakhala ndi mayeso ochulukirapo a mayunitsi amtundu uliwonse. Pambuyo poyesa mayunitsi, tinayesa malamulo a WAF pogwiritsa ntchito zopempha zambiri za HTTP. Zopempha za HTTP fufuzani zomwe zopempha ziyenera kutsekedwa ndi WAF (kuletsa kuukira) ndi zomwe zingaloledwe kupyolera (kuti musatseke chirichonse ndikupewa zolakwika). Koma sitinayesere kugwiritsa ntchito kwambiri CPU, ndipo kuwunika zipika za WAF zomanga zam'mbuyomu zikuwonetsa kuti nthawi yoyeserera malamulo sinachuluke, ndipo zinali zovuta kukayikira kuti sipadzakhala zokwanira.

Mayeso adadutsa ndipo TeamCity idayamba kuyika zosinthazo nthawi ya 13:42 p.m.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Quicksilver

Malamulo a WAF amayang'ana kwambiri kuthetsa ziwopsezo zanthawi yomweyo, motero timawatumiza pogwiritsa ntchito sitolo ya Quicksilver yogawidwa yamtengo wapatali, yomwe imachulukitsa kusintha padziko lonse lapansi pakasekondi. Makasitomala athu onse amagwiritsa ntchito ukadaulo uwu akasintha kasinthidwe mu dashboard kapena kudzera pa API, ndipo ndikuthokoza kuti timayankha kusintha ndi liwiro la mphezi.

Sitinakambirane zambiri za Quicksilver. Poyamba tidagwiritsa ntchito Kyoto Tycoon monga sitolo yamtengo wapatali yogawidwa padziko lonse lapansi, koma panali zovuta zogwirira ntchito, ndipo tidalemba sitolo yathu, yojambulidwa m'mizinda yoposa 180. Tsopano timagwiritsa ntchito Quicksilver kukankhira zosintha kwa makasitomala, kusintha malamulo a WAF, ndikugawa JavaScript code yolembedwa ndi makasitomala kwa Cloudflare Workers.

Zimangotenga masekondi angapo kuchokera pakudina batani pa dashboard kapena kuyimbira API kuti musinthe masinthidwe padziko lonse lapansi. Makasitomala adakonda kufulumira uku. Ndipo Ogwira ntchito amawapatsa pafupifupi nthawi yomweyo kutumiza mapulogalamu apadziko lonse lapansi. Pafupifupi, Quicksilver imafalitsa pafupifupi kusintha kwa 350 pamphindikati.

Ndipo Quicksilver ndi yachangu kwambiri. Pa avareji, tapeza 99th percentile ya 2,29 seconds kufalitsa zosintha pamakompyuta aliwonse padziko lonse lapansi. Kuthamanga nthawi zambiri ndi chinthu chabwino. Kupatula apo, mukatsegula ntchito kapena kuchotsa cache, zimachitika nthawi yomweyo komanso kulikonse. Kutumiza kachidindo kudzera pa Cloudflare Workers kumachitika pa liwiro lomwelo. Cloudflare imalonjeza makasitomala ake zosintha mwachangu panthawi yoyenera.

Koma mu nkhani iyi, liwiro ankatichitira nkhanza nthabwala, ndipo malamulo anasintha kulikonse mu nkhani ya masekondi. Mwina mwazindikira kuti nambala ya WAF imagwiritsa ntchito Lua. Cloudflare imagwiritsa ntchito Lua kwambiri pakupanga ndi tsatanetsatane Lua mu WAF ife takambirana kale. Lua WAF amagwiritsa ntchito PCRE mkati ndipo imagwiritsa ntchito kubwerera kumbuyo kuti ifanane. Ilibe njira zodzitetezera ku mawu omwe amalephera kuwongolera. Pansipa ndilankhula zambiri za izi ndi zomwe tikuchita nazo.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Malamulo asanayambe kutumizidwa, zonse zinayenda bwino: pempho lachikoka linapangidwa ndikuvomerezedwa, payipi ya CI / CD inasonkhanitsidwa ndikuyesa kachidindo, pempho la kusintha linaperekedwa molingana ndi SOP yomwe imayang'anira kutumizidwa ndi kubwezeretsa, ndipo ntchitoyo inamalizidwa.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019
Cloudflare WAF Deployment process

China chake chalakwika
Monga ndanenera, timayika malamulo atsopano a WAF sabata iliyonse, ndipo tili ndi machitidwe ambiri oti titeteze ku zotsatira zoipa za kutumizidwa koteroko. Ndipo ngati chinachake chalakwika, nthawi zambiri chimakhala chophatikiza zinthu zingapo nthawi imodzi. Ngati mupeza chifukwa chimodzi chokha, izi, ndithudi, ndi zolimbikitsa, koma sizowona nthawi zonse. Izi ndi zifukwa zomwe zidapangitsa kuti ntchito yathu ya HTTP/HTTPS isalephereke.

  1. Wopanga injiniya analemba mawu okhazikika omwe angapangitse mopambanitsa kubwerera m'mbuyo.
  2. Chinthu chomwe chikadalepheretsa kufotokozera nthawi zonse kuti chiwononge CPU yochuluka chinachotsedwa molakwika pakukonzanso WAF masabata angapo m'mbuyomo - kukonzanso kunali kofunika kuti WAF iwononge zinthu zochepa.
  3. Injini yowonetsera nthawi zonse inalibe zitsimikizo zovuta.
  4. Ma test suite sanazindikire kugwiritsa ntchito CPU mochulukira.
  5. SOP imalola kuti kusintha kwa malamulo osafulumira kuchitidwe padziko lonse lapansi popanda njira zambiri.
  6. Dongosolo lobwezeretsa linkafuna kuyendetsa WAF yomanga kawiri, zomwe zidatenga nthawi yayitali.
  7. Chenjezo loyamba la zovuta zamagalimoto padziko lonse lapansi lidayambitsidwa mochedwa kwambiri.
  8. Tidatenga nthawi kuti tikonzere tsamba.
  9. Tinali ndi vuto lopeza makina chifukwa cha glitch, ndipo njira yodutsamo sinakhazikitsidwe bwino.
  10. Mainjiniya a SRE adataya mwayi wamakina ena chifukwa zidziwitso zawo zidatha chifukwa chachitetezo.
  11. Makasitomala athu analibe mwayi wopita ku Cloudflare dashboard kapena API chifukwa amadutsa dera la Cloudflare.

Zomwe zasintha kuyambira Lachinayi lapitali

Choyamba, tidayimitsa ntchito zonse pazotulutsa za WAF ndipo tikuchita izi:

  1. Tikubweretsanso chitetezo cha CPU mopitilira muyeso chomwe tidachotsa. (Okonzeka)
  2. Kuyang'ana pamanja malamulo onse 3868 m'malamulo oyendetsedwa kuti WAF apeze ndikuwongolera milandu ina yobwerera m'mbuyo mopitilira muyeso. (Kutsimikizira kwatha)
  3. Timaphatikizapo mbiri ya machitidwe a malamulo onse mu test set. (Akuyembekezeka: Julayi 19)
  4. Kusintha kwa injini yowonetsera nthawi zonse re2 kapena dzimbiri - onse amapereka zitsimikizo za nthawi yothamanga. (Akuyembekezeka: Julayi 31)
  5. Tikulembanso SOP kuti tiyike malamulo pamagawo, monga mapulogalamu ena ku Cloudflare, koma nthawi yomweyo amatha kutumizidwa padziko lonse lapansi mwadzidzidzi ngati kuwukira kwayamba kale.
  6. Tikupanga kuthekera kochotsa mwachangu Cloudflare dashboard ndi API kudera la Cloudflare.
  7. Zosintha zamasamba zokha Cloudflare Status.

Kwa nthawi yayitali tikuchoka ku Lua WAF yomwe ndinalemba zaka zingapo zapitazo. Kusuntha WAF kupita pulogalamu yatsopano ya firewall. Mwanjira iyi WAF idzakhala yachangu ndikulandila chitetezo chowonjezera.

Pomaliza

Kulephera kumeneku kunadzetsa mavuto kwa ife ndi makasitomala athu. Tinachitapo kanthu mwamsanga kuti tikonze zinthuzo ndipo tsopano tikugwira ntchito pa zolakwika zomwe zinayambitsa ngoziyi, komanso kukumba mozama kuti tipewe mavuto omwe angakhalepo ndi mawu okhazikika m'tsogolomu akamasamukira ku zipangizo zamakono zatsopano.

Ndife amanyazi kwambiri chifukwa cha kuzimitsa uku ndipo tikupepesa kwa makasitomala athu. Tikukhulupirira kuti zosinthazi zionetsetsa kuti zinthu ngati izi sizichitikanso.

Kugwiritsa ntchito. Kubwereza mawu okhazikika

Kuti mumvetsetse momwe mawuwa:

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

adadya zida zonse za CPU, muyenera kudziwa pang'ono momwe injini yanthawi zonse imagwirira ntchito. Vuto apa ndi chitsanzo .*(?:.*=.*). (?: ndi zogwirizana ) ndi gulu losagwira (ndiko kuti, mawu omwe ali m'makolo aikidwa m'magulu amodzi).

Pankhani yakugwiritsa ntchito kwambiri CPU, izi zitha kufotokozedwa ngati .*.*=.*. Mu mawonekedwe awa, chitsanzocho chikuwoneka chovuta mosayenera. Koma chofunika kwambiri, m'dziko lenileni, mawu (monga mawu ovuta m'malamulo a WAF) omwe amapempha injini kuti ifanane ndi chidutswa chotsatiridwa ndi chidutswa china chikhoza kubweretsa kubwereza koopsa. Ndi chifukwa chake.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

M'mawu okhazikika . zikutanthauza kuti muyenera kufanana ndi munthu m'modzi, .* - fananizani ndi ziro kapena kupitilira apo "mwadyera", ndiye kuti, kujambula anthu ochulukirapo, kuti .*.*=.* kutanthauza ziro kapena ziro zambiri, kenaka fananizani ziro kapena zochulukirapo, pezani zenizeni = zilembo, fananitsani ziro kapena zochulukirapo.

Tiyeni titenge mzere woyesera x=x. Zimagwirizana ndi mawu .*.*=.*. .*.* chizindikiro chofanana chisanafanane ndi choyamba x (limodzi mwamagulu .* zimayenderana x, ndi wachiwiri - ziro zilembo). .* pambuyo = machesi omaliza x.

Kuyerekeza uku kumafuna masitepe 23. Gulu loyamba .* Π² .*.*=.* amachita mwadyera ndikugwirizanitsa chingwe chonse x=x. Injini imasunthira ku gulu lotsatira .*. Tilibenso zilembo zofananira, ndiye gulu lachiwiri .* zimagwirizana ndi ziro (izi ndizololedwa). Kenako injini imasunthira ku chikwangwani =. Palibenso zizindikiro (gulu loyamba .* adagwiritsa ntchito mawu onse x=x), palibe kufananitsa komwe kumachitika.

Ndiyeno injini yowonetsera nthawi zonse imabwerera ku chiyambi. Amapita ku gulu loyamba .* ndikufanizira с x= (m'malo x=x), ndiyeno amatenga gulu lachiwiri .*. Gulu lachiwiri .* akufanizidwa ndi chachiwiri x, ndipo tilibe zilembo zotsalira. Ndipo injini ikafikanso = в .*.*=.*, palibe chimene chimagwira ntchito. Ndipo amabwerera mmbuyo kachiwiri.

Nthawi iyi gulu .* zimagwirizana x=, koma gulu lachiwiri .* basi x, ndi zilembo ziro. Injini ikuyesera kupeza munthu weniweni = mu chitsanzo .*.*=.*, koma samatuluka (pambuyo pake, gulu loyamba lakhala nalo kale .*). Ndipo amabwerera mmbuyo kachiwiri.

Nthawi ino gulu loyamba .* zimangotenga x yoyamba. Koma gulu lachiwiri .* "mwadyera" amalanda =x. Kodi mwalingalira kale zomwe zidzachitike? Injini imayesa kufanana ndi zenizeni =, amalephera ndipo amapanga kubwereranso kwina.

Gulu loyamba .* ikufanana ndi yoyamba x. Chachiwiri .* zimangotenga =. Inde, injiniyo singafanane ndi yeniyeni =, chifukwa gulu lachiwiri lachita kale izi .*. Komanso kubwerera m'mbuyo. Ndipo tikuyesera kufananitsa chingwe cha zilembo zitatu!

Zotsatira zake, gulu loyamba .* zimagwirizana ndi choyamba chokha x, chachiwiri .* - yokhala ndi zilembo za zero, ndipo injiniyo imafanana ndi yeniyeni = m'mawu с = motsatana. Chotsatira ndi gulu lomaliza .* akufanizidwa ndi wotsiriza x.

Masitepe 23 okha x=x. Onerani kanema wachidule wogwiritsa ntchito Perl Regexp::Debugger, zomwe zikuwonetsa momwe masitepe ndi kubwerera m'mbuyo zimachitika.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Iyi ndi ntchito yambiri, koma bwanji ngati m'malo mwake x=x tidzakhala nazo x=xx? Ndi masitepe 33. Ndipo ngati x=xxx? 45. Ubale suli mzere. Grafu ikuwonetsa kufananiza kuchokera x=x mpaka x=xxxxxxxxxxxxxxxxxxxx (20 x послС =). Ngati tili ndi 20 x pambuyo pake =, injiniyo imamaliza kufananitsa mu masitepe 555! (Komanso, ngati tataya x= ndipo chingwecho chimangokhala ndi 20 x, injini idzatenga masitepe 4067 kuti amvetsetse kuti palibe machesi).

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Kanemayu akuwonetsa zonse zobwerera kumbuyo kuti zifananize x=xxxxxxxxxxxxxxxxxxxx:

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Vuto ndiloti kukula kwa zingwe kumawonjezeka, nthawi yofananira imakula kwambiri. Koma zinthu zikhoza kuipiraipira kwambiri ngati mawu okhazikika asinthidwa pang'ono. Tinene kuti tinali nazo .*.*=.*; (ndiko kuti, panali semicolon yeniyeni kumapeto kwa chitsanzo). Mwachitsanzo, kufananiza mawu ngati foo=bar;.

Ndipo apa kubwezera kumbuyo kungakhale tsoka lenileni. Poyerekeza x=x idzatenga masitepe 90, osati 23. Ndipo chiwerengero chimenecho chikukula mofulumira. Kuyerekeza x= ndi 20 x, masitepe 5353 akufunika. Nayi tchati. Onani ma axis values Y poyerekeza ndi tchati cham'mbuyo.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Ngati mukufuna, onani masitepe onse 5353 omwe alephera x=xxxxxxxxxxxxxxxxxxxx ΠΈ .*.*=.*;

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Pogwiritsa ntchito ulesi m'malo mofananitsa mwadyera, kuchuluka kwa kubweza kumbuyo kungalamulidwe. Ngati tisintha mawu oyamba kukhala .*?.*?=.*?, kuyerekezera x=x idzatenga masitepe 11 (osati 23). Koma x=xxxxxxxxxxxxxxxxxxxx. Zonse chifukwa ? послС .* imauza injini kuti ifanane ndi zilembo zochepa musanapitirire.

Koma kupanga mapu aulesi sikuthetsa vuto lakumbuyo. Ngati ife m'malo tsoka chitsanzo .*.*=.*; pa .*?.*?=.*?;, nthawi yophedwa idzakhala yofanana. x=x ikufunikabe masitepe 555, ndi x= ndi 20 x - 5353.

Chokhacho chomwe chingachitike (kupatula kulemberanso kwathunthu mawonekedwewo kuti adziwe zambiri) ndikusiya injini yanthawi zonse yokhala ndi makina ake obwerera kumbuyo. Izi ndi zomwe tikhala tikuchita m'masabata angapo akubwerawa.

Njira yothetsera vutoli yadziwika kuyambira 1968, pamene Kent Thompson analemba nkhani Njira Zopangira Mapulogalamu: Kusaka kwa mawu pafupipafupi ("Njira Zopangira: Kusaka Kwanthawi Zonse Kwa Mawu"). Nkhaniyi ikufotokoza njira yomwe imakulolani kuti mutembenuzire mawu okhazikika kukhala makina osagwirizana ndi deterministic finite state, ndipo pambuyo pa kusintha kwa boma m'makina osagwirizana ndi finite state, gwiritsani ntchito algorithm yomwe nthawi yake yakupha imadalira mzere wofanana.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Njira Zopangira Mapulogalamu
Kusaka Kwanthawi Zonse Algorithm
Ken Thompson

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

Imalongosola njira yofufuzira mndandanda wa zilembo zomwe zili m'mawu ndikukambirana za kukhazikitsidwa kwa njirayi mu mawonekedwe a compiler. Wopangayo amatenga mawu okhazikika ngati ma source code ndikupanga pulogalamu ya IBM 7094 ngati code code. Pulogalamu ya chinthu imalowetsa m'mawu ofufuzira ndipo imatulutsa chizindikiro nthawi iliyonse pamene mndandanda wa mawu ukugwirizana ndi mawu operekedwa nthawi zonse. Nkhaniyi ikupereka zitsanzo, mavuto ndi zothetsera.

Algorithm
Ma algorithms osaka am'mbuyomu adapangitsa kubweza m'mbuyo ngati kusaka kopambana pang'ono sikunapereke zotsatira.

Munjira yophatikizira, algorithm sigwira ntchito ndi zizindikiro. Imapereka malangizo ku code yopangidwa. Kupha kumathamanga kwambiri - mutapereka deta pamwamba pa mndandanda wamakono, imangofufuza zilembo zonse zomwe zingatheke motsatizana m'mawu okhazikika.
Ma algorithm ophatikizira ndi osakira akuphatikizidwa mumkonzi wogawana nthawi ngati kusaka kwanthawi zonse. Zoonadi, izi siziri kutali ndi ntchito yokhayo ya kufufuza koteroko. Mwachitsanzo, kusinthika kwa algorithm iyi kumagwiritsidwa ntchito ngati kusaka chizindikiro patebulo mu assembler.
Zikuganiziridwa kuti owerenga amadziwa mawu okhazikika komanso chilankhulo cha pulogalamu ya pakompyuta ya IBM 7094.

Wopanga
Wopangayo amakhala ndi magawo atatu omwe akuyenda molumikizana. Gawo loyamba ndi kusefa kwa syntax, komwe kumalola kuti mawu okhazikika azitha kudutsamo. Sitepe iyi imayikanso "Β·" wogwiritsa ntchito kuti agwirizane ndi mawu okhazikika. Mu gawo lachiwiri, mawu okhazikika amasinthidwa kukhala mawonekedwe a postfix. Pa gawo lachitatu, code code imapangidwa. Magawo awiri oyamba ndi odziwikiratu, ndipo sitikhala pa iwo.

Nkhani ya Thompson sichinena za makina amtundu wa nondeterministic finite state, koma imalongosola ndondomeko ya nthawi yeniyeni bwino ndipo imapereka pulogalamu ya ALGOL-60 yomwe imapanga kachidindo ka chinenero cha msonkhano kwa IBM 7094. Kukhazikitsa ndizovuta, koma lingaliro ndilosavuta.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

njira yakusaka. Imayimiridwa ndi βŠ• chithunzi chokhala ndi cholowetsa chimodzi ndi zotulutsa ziwiri.
Chithunzi 1 chikuwonetsa ntchito za gawo lachitatu lophatikizira posintha chitsanzo chokhazikika. Zilembo zitatu zoyambirira pachitsanzozi ndi a, b, c, ndipo aliyense amapanga zolowa S[i] ndi gawo la NNODE.

NNODE ku code yomwe ilipo kuti ipange mawu omwe amabwera nthawi zonse muzolowera chimodzi (onani Chithunzi 5)

Umu ndi momwe mawu okhazikika angawonekere .*.*=.*, ngati mukuganiza ngati muzithunzi zochokera m'nkhani ya Thompson.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Mku. 0 pali zigawo zisanu kuyambira ku 0, ndi 3 kuzungulira komwe kumayambira ku chigawo 1, 2 ndi 3. .* m'mawu okhazikika. Ma oval 3 okhala ndi madontho amafanana ndi chizindikiro chimodzi. Chowulungika ndi chizindikiro = zimagwirizana ndi munthu weniweni =. State 4 ndi yomaliza. Ngati tifika, ndiye kuti mawu okhazikika amafanana.

Kuti muwone momwe chithunzi choterechi chingagwiritsire ntchito kufananitsa pafupipafupi .*.*=.*, tiwona kufananiza kwa zingwe x=x. Pulogalamuyi imayamba kuchokera ku boma 0, monga momwe tawonetsera mkuyu. 1.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Kuti algorithm iyi igwire ntchito, makina aboma ayenera kukhala m'maboma angapo nthawi imodzi. Makina osakhazikika omaliza apanga masinthidwe onse munthawi imodzi.

Isanakhale ndi nthawi yowerengera zomwe zalowetsedwa, imapita m'magawo onse awiri (1 ndi 2), monga zikuwonetsedwa mkuyu. 2.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Mku. 2 ikuwonetsa zomwe zimachitika akayang'ana koyamba x Π² x=x. x akhoza kupanga mapu mpaka pamwamba, kuchoka ku boma 1 ndi kubwerera ku chigawo 1. Kapena x akhoza kupanga mapu mpaka pansi, kuchoka ku chigawo 2 ndi kubwerera ku chigawo cha 2.

Pambuyo pofananiza woyamba x Π² x=x tikadali mu zigawo 1 ndi 2. Sitingathe kufikira gawo 3 kapena 4 chifukwa timafunikira munthu weniweni. =.

Algorithm ndiye imaganizira = Π² x=x. Monga x isanachitike, imatha kufananizidwa ndi imodzi mwa malupu awiri apamwamba kuchokera ku boma 1 kupita ku 1 kapena kuchokera ku boma 2 kupita ku 2, koma algorithm imatha kufanana ndi zenizeni. = ndi kuchoka ku boma 2 kupita ku 3 (ndipo nthawi yomweyo 4). Izi zikuwonetsedwa mkuyu. 3.

Tsatanetsatane wa Cloudflare kuzimitsa pa Julayi 2, 2019

Kenako algorithm imapitilira mpaka yomaliza x Π² x=x. Kuchokera ku zigawo 1 ndi 2 kusintha komweko ndi kotheka kubwerera ku zigawo 1 ndi 2. Kuchokera ku boma 3 x akhoza kufanana ndi mfundo kumanja ndi kubwerera ku chigawo 3.

Pa nthawi imeneyi, aliyense khalidwe x=x amaganiziridwa, ndipo popeza tafika gawo la 4, mawu okhazikika amafanana ndi chingwecho. Chikhalidwe chilichonse chimakonzedwa kamodzi, kotero kuti aligorivimu ili ndi mzere muutali wa chingwe cholowetsa. Ndipo palibe kubwerera m'mbuyo.

Mwachiwonekere, atafika ku state 4 (pamene algorithm yafanana x=) mawu onse okhazikika amafananizidwa, ndipo algorithm ikhoza kutha popanda kuganizira konse x.

Algorithm iyi imadalira motsatana ndi kukula kwa chingwe cholowetsa.

Source: www.habr.com

Kuwonjezera ndemanga