De storing bij Cloudflare vrijdag werd veroorzaakt door noodmaatregelen tegen de Kritieke kwetsbaarheid in React, meldt het cloudbedrijf zelf. Door de storing functioneerde het netwerk van Cloudflare 25 minuten niet stabiel.
Volgens Cloudflare ondervond een deel van het netwerk vrijdag vanaf 9.47 uur 'aanzienlijke storingen'. Om 10.12 uur was de storing volgens het bedrijf weer verholpen. In totaal is ongeveer 28 procent van het HTTP-verkeer dat door Cloudflare wordt verwerkt getroffen. De verstoring was volgens cto Dane Knecht niet het gevolg van een cyberaanval, maar van noodmaatregelen tegen de Kritieke kwetsbaarheid in React Server Components, die eerder deze week werd bekendgemaakt.
Cloudflare besloot de standaardbuffergrootte van zijn firewall voor webservers te verhogen van 128KB naar 1MB. Dit is de standaardlimiet die Next.js-applicaties toestaat. Deze maatregel werd geleidelijk doorgevoerd. Tijdens de uitrol merkte Cloudflare dat zijn interne testtool voor deze firewalls de grotere buffergrootte niet ondersteunde. Daarom besloot het team deze tool uit te schakelen.
Deze uitschakeling gebeurde via het global configuration system van Cloudflare. Dit systeem introduceert veranderingen niet geleidelijk, maar voert ze meteen wereldwijd door. Het uitschakelen van de tool veroorzaakte een bug in de code-uitvoering in de FL1-proxy van Cloudflare. Deze bug resulteerde in HTTP 500-fouten bij klanten wiens webassets door de FL1-proxy worden beheerd en de Cloudflare Managed Ruleset hebben geïmplementeerd.
De bug werd veroorzaakt door een programmeerfout in het regelsysteem van Cloudflare, specifiek hoe het systeem omgaat met de actie execute als het bedrijf een killswitch toepast. Het systeem sloeg de evaluatie van de executeactie terecht over, maar de code verwacht dat het object rule_result.execute bestaat als een dergelijke actie wordt uitgevoerd. Deze bestond echter niet, omdat de executeactie was overgeslagen. Daardoor gaf Lua een foutmelding.
"Dit is een simpele fout in de code, die jarenlang onopgemerkt was gebleven", schrijft Knecht. "Dit type codefout wordt voorkomen door talen met sterke typesystemen. In onze vervanging voor deze code in onze nieuwe FL2-proxy, geschreven in Rust, trad de fout niet op."
/i/2007931054.webp?f=imagenormal)