Kaks nĂ€dalat pĂ€rast eelmises globaalset tĂ”rget on eile Cloudflareâi sisu edastamise vĂ”rk, mis teenindab umbes 20% kogu maailma veebiliiklust, olnud 25 minutiks osaliselt kĂ€ttesaamatu. TĂ”rke ajal lĂ”petas umbes kolmandik Cloudflare'i kaudu saadetud pĂ€ringutest tĂŒhja lehe tagastamisega, millel oli 500 vigakood. Seekord oli pĂ”hjuseks aastaid tĂ€helepanuta jÀÀnud probleem Lua keeles olevas koodis, mida kasutatakse WAF-i (veebirakenduste tulemĂŒĂŒr) liikluse filtreerimiseks pahatahtlike pĂ€ringute blokeerimiseks.

Kliendi sĂŒsteemide kaitsmiseks kriitilise haavatavuse (CVE-2025-55182) eest React raamistikus olevates serverikomponentides, pĂ€rast avalikkuse ette jĂ”udnud eksploitide ilmumist, kehtestas Cloudflare'i inseneride meeskond kaitse WAF tasandil. Kaitse rakendamine ei sujunud murevabalt: rakendamise kĂ€igus suurendati proxy-liikluse kontrollimise jaoks puhversalti suurust,serverites, kuid selgus, et WAF-i testitööriist ei toeta seatud puhversalti suurust. Kuna see tööriist ei mĂ”juta liiklust, otsustati see vĂ€lja lĂŒlitada.
VĂ€ljalĂŒlitamiseks kasutasid insenerid "killswitch" alamsĂŒsteemi, et kiiresti muuta konfiguratsiooni ja deaktiveerida eraldi Lua töötlejad proxy-serverites ilma reeglite asendamata. Sellist reeglite vĂ€ljalĂŒlitamise meetodit rakendatakse aeg-ajalt vigade kiireks parandamiseks ja see toob kaasa osa Lua-koodi tĂ€itmise vahelejĂ€tmise. Samas ei arvestanud insenerid, et Lua-reeglites vĂ€ljalĂŒlitatava testitööriista kutsumiseks kasutati "execute" meetodit, mis kĂ€ivitab tĂ€iendava reeglite komplekti. Varem ei ole "killswitch" reĆŸiimi kunagi rakendatud reeglitega, kus on "execute" kutse, ja seda kombinatsiooni ei testitud.
KĂ€ivitamine "killswitch" tĂ”i kaasa selle, et tĂ€iendava testereeglite komplekti mÀÀramine lĂŒlitati vĂ€lja, kuid selle reeglikomplekti vĂ€ljakutset "execute" ei eemaldatud. Koodis ei olnud tĂ€iendavaid objekti olemasolu kontrollimisvahendeid ja eeldati, et kui reeglikomplektis on tegevus "execute", siis objekt "rule_result.execute" eksisteerib kindlasti. Tulemuseks oli katse kĂ€ivitada meetodit "execute" mitte-initsialiseeritud objekti jaoks, mis tĂ”i kaasa töötleja kokkuvarisemise vea "katse indekseerida vĂ€lja âexecuteâ (nil vÀÀrtus)". if rule_result.action == "execute" then rule_result.execute.results = ruleset_results[tonumber(rule_result.execute.results_index)] end
Allikas: opennet.ru
