Hiba a Cloudflare-nél a Lua nyelven írt kód miatt

Két héttel az előző globális leállás után a Cloudflare tartalomszolgáltató hálózata, amely a globális webforgalom körülbelül 20%-át kezeli, tegnap 25 percig részlegesen elérhetetlenné vált. A incidens idején a Cloudflare rendszeren keresztül érkező kérések körülbelül egyharmada üres oldal visszatérésével zárult 500-as hibakóddal. Ezúttal a háttérben álló ok egy több éve észrevétlen probléma volt a Lua nyelven írt kódban, amelyet a WAF (Web Application Firewall) forgalomszűrő rendszer használ a rosszindulatú kérések blokkolására.

Hiba a Cloudflare-nél a Lua nyelven írt kód miatt

A Cloudflare mérnökei a React keretrendszer szerveroldali komponenseiben felfedezett kritikus sérülékenység (CVE-2025-55182) elleni védelem érdekében, miután az exploit nyilvánosságra került, WAF szintű védelmet vezettek be. A védelem bevezetése nem ment zökkenőmentesen: a bevezetési folyamat során megnövelték a proxy forgalom ellenőrzésére szolgáló puffer méretét,szervereken, de kiderült, hogy a tesztelésre használt WAF eszköz nem támogatja a megadott puffer méretet. Mivel ez az eszköz nem befolyásolja a forgalmat, úgy döntöttek, hogy leállítják.

A leállításhoz a mérnökök a «killswitch» alrendszert használták, amely lehetővé teszi a konfiguráció gyors módosítását és egyes Lua feldolgozók letiltását proxy szervereken a szabályok cseréje nélkül. Ez a módszer ideiglenesen alkalmazható hibák gyors kijavítására, és a Lua-kód egy része végrehajtásának kihagyásához vezet. Ugyanakkor a mérnökök nem vették figyelembe, hogy a letiltott tesztelő eszköz híváshoz az «execute» metódust használták a Lua szabályokban, ami többletszabályok futtatását indítja el. A «killswitch» mód korábban soha nem volt alkalmazva az «execute» hívást tartalmazó szabályokkal, és ez a kombináció nem volt tesztelve.

A "killswitch" implementation resulted in the code that defines an additional test rule set being disabled, but the call to this rule set via "execute" remained. The code lacked additional checks for the existence of the object and assumed that if the action "execute" was present in the rule set, the object "rule_result.execute" must exist. Consequently, an attempt was made to call the method "execute" for an uninitialized object, leading to the handler crashing with the error "attempt to index field ‘execute’ (a nil value)". if rule_result.action == "execute" then rule_result.execute.results = ruleset_results[tonumber(rule_result.execute.results_index)] end

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster