2025.november 18-án internet weboldalak egy része elérhetetlenné vált, mivel a Cloudflare rendszerében egy súlyos üzemzavar keletkezett. A cloudflare vizsgálata megállapította, hogy a probléma nem támadásból származott, hanem egy adatbázis-engedélymódosításból, amely a Bot Management rendszer funkciófájljában duplikált sorokat okozott, így annak mérete a szokásos hatvanról több mint kétszázra nőtt. Ez a fájl gyorsan elterjedt a hálózati gépeken, ahol a forgalomkezelő szoftver olvasta be, azonban ez egy méretkorlát miatt összeomlott. A vizsgálat szerint egy kezeletlen kivétel jelentkezett a Rust-alapú FL2 proxyban, ami HTTP 5xx hibákat eredményezett, és leállította az ügyfélforgalmat. A Hackaday elemző cikkben kiemeli, hogy a régi FL kód megfelelően kezelte a helyzetet, míg az új FL2 boldogan feldolgozta a hibás értéket, ami pánikot, és a fl2_worker_thread szál összeomlását okozta.
Tartalomjegyzék

A hiba technikai elemzése
A Cloudflare minden beérkező kérést egy meghatározott úton kezel: először a HTTP és TLS rétegben, majd a core proxy rendszeren keresztül, végül a Pingora gyorsítótárazással vagy az eredeti szerverről való adatlehívással. A Bot Management modul gépi tanulási modellt használ a botok azonosítására, és egy néhány percenként frissülő funkciófájlt olvas be, hogy reagáljon az új fenyegetésekre.
A probléma egy ClickHouse adatbázis-klaszter változásából eredt: délelőtt 11 óra körül explicit engedélyeket adtak a felhasználóknak az r0 adatbázis metaadatainak eléréséhez, ami korábban csak a default adatbázist mutatta. Emiatt a lekérdezések duplikált sorokat eredményeztek, túllépve a proxy kétszázas funkciólimitjét, mivel memóriát előre foglaltak le. A Hackaday rámutat, hogy ez alapvető hiba: kezeletlen error állapot és az input validáció hiánya, amit a Rust nyelv nem kényszerít ki. A Rust kódjában az unwrap() hívás okozta a pánikot, ami HTTP 5xx hibákat generált.

A Cloudflare szerint mindkét proxy verzió érintett volt a hibában, de míg az FL2 ügyfelei HTTP 5xx hibákat tapasztaltak, addig a régi FL proxy-t – amely NGINX-alapú, és nagyrészt Lua scriptekben íródott, LuaJIT engine használatával – futtató ügyfelek nem tapasztaltak közvetlen hibákat, bár náluk a botpontszámok hibásan nullára álltak, ami téves blokkolásokat okozhatott. A státuszoldal egybeeső leállása tovább erősítette a DDoS-támadás gyanúját, de ez csupán véletlen egybeesés volt. A Hackaday kritikája szerint ez az eset jól mutatja a Rust memóriabiztonságának korlátait: hiába kínál erős védelmet alapértelmezésben, az unsafe blokkok kikapcsolhatósága kockázatot jelent, a nyelv komplexitása pedig teljesítményveszteséget okozhat bizonyos alkalmazásokban, miközben a hibák többsége továbbra is emberi mulasztásokból – például nem megfelelő hibakezelésből – ered.
A leállás tanulsága
A hiba érintette a core CDN-t, a Turnstile-t, a Workers KV-t, a Dashboardot, az Email Security-t és az Access-t: autentikációs hibák, késések, csökkent spam-detektálás és bejelentkezési problémák jelentkeztek. A Workers KV bypass-e délután 13 óra 5 percre csökkentette a hatást, de a Dashboard backlog miatt délután 15 óra 30 percig tartott a teljes helyreállítás. A Hackaday hangsúlyozza, hogy a CVE sérülékenységek leggyakoribb oka az input validáció és hibakezelés elhanyagolása, és a Rust memóriabiztonsága nem menti fel a programozókat alapvető óvintézkedések megtételétől. A Cloudflare blogposztjában elnézést kért minden érintett ügyfelétől, hangsúlyozva, hogy ez a legsúlyosabb kiesés 2019 óta, és minden tudásukkal azon fognak dolgozni, hogy megerősítsék rendszereiket a hasonló leállások elkerülése érdekében.
