Incident partiel du réseau Cloudflare du 5 décembre 2025
(blog.cloudflare.com)- À 08:47 UTC le 5 décembre 2025, une partie du réseau Cloudflare a subi une panne majeure et la restauration complète est intervenue à 09:12, soit environ 25 minutes plus tard
- Environ 28 % de l’ensemble du trafic HTTP a été impacté, et seul un sous-ensemble de clients répondant à certains critères a été touché
- La cause était une modification du WAF (logique d’analyse du corps de requête) liée au correctif de la vulnérabilité React Server Components (CVE-2025-55182), sans rapport avec une attaque ou une action malveillante
- Une erreur de code du proxy FL1 a généré des erreurs HTTP 500, et cette erreur n’a pas été observée sur le nouveau proxy FL2 basé sur Rust
- Cloudflare reconnaît qu’un problème similaire s’est reproduit depuis l’incident du 18 novembre et met désormais en priorité un projet visant à améliorer la sécurité des déploiements et la résilience
Aperçu de l’incident
- Le 5 décembre 2025 à 08:47 UTC, une panne est survenue sur une partie du réseau Cloudflare
- La récupération complète a eu lieu à 09:12, avec un impact total de 25 minutes
- Environ 28 % du trafic HTTP global ont été impactés
- L’incident n’était pas lié à une cyberattaque ni à une action malveillante, mais est survenu pendant un changement interne de configuration
- La cause était une modification de la logique de parsing du corps du WAF pour traiter la vulnérabilité de React Server Components
Cause de l’incident et contexte technique
- Le WAF Cloudflare met en mémoire tampon le corps des requêtes HTTP pour détecter les payloads malveillants
- La taille du tampon est passée de 128 Ko à 1 Mo en cours de déploiement
- Les outils de test internes ne prenaient pas en charge la nouvelle taille de tampon, ce qui a conduit à une deuxième modification désactivant les outils de test
- Cette modification a été propagée immédiatement à l’ensemble des serveurs via le système de configuration globale
- Sur le proxy FL1, ce changement a provoqué un état d’erreur, générant des réponses HTTP 500
- Message d’erreur :
attempt to index field 'execute' (a nil value)
- Message d’erreur :
- Le problème a été identifié immédiatement et la modification a été revertie à 09:12
Portée de l’impact
- Seuls les clients utilisant le proxy FL1 et appliquant le Cloudflare Managed Ruleset ont été impactés
- Pour les sites concernés, toutes les requêtes ont renvoyé une erreur HTTP 500
- Certaines exceptions ont existé, comme le endpoint de test
/cdn-cgi/trace
- Le réseau chinois et les clients avec d’autres configurations n’ont pas été impactés
Détails de l’erreur d’exécution
- Le système rulesets de Cloudflare évalue les règles à chaque requête
- Les règles sont composées de filtres et d’actions, et l’action
executeappelle un autre ruleset
- Les règles sont composées de filtres et d’actions, et l’action
- Le système de journalisation interne utilisait
executepour évaluer des règles de test - Le système de killswitch est conçu pour désactiver automatiquement les règles dysfonctionnelles, mais
- c’est la première fois qu’un killswitch a été appliqué à une règle contenant l’action
execute
- c’est la première fois qu’un killswitch a été appliqué à une règle contenant l’action
- L’erreur de Lua est apparue en tentant d’accéder à l’objet
executelorsqu’il n’existait pas - Cette erreur était un simple bug de code présent depuis plusieurs années non détecté
- En Rust, le proxy FL2 n’a pas rencontré cette erreur
État des améliorations après l’incident du 18 novembre
- Le 18 novembre, un incident similaire de déploiement global ayant provoqué une panne étendue s’était déjà produit
- À l’époque, Cloudflare a communiqué directement avec des centaines de clients et partagé un plan pour éviter une propagation massive d’une seule mise à jour
- Ce travail d’amélioration n’était pas encore terminé et a contribué à l’incident actuel
- Cloudflare en a fait une priorité absolue de l’entreprise
Projets en cours de renforcement de la résilience
- Enhanced Rollouts & Versioning
- Appliquer un déploiement progressif, une validation de santé et des rollbacks rapides aux changements de données et de configuration liés à la réponse aux menaces
- Streamlined Break Glass Capabilities
- Permettre des opérations d’urgence même lors des interactions avec les services internes et le control plane
- Gestion des erreurs Fail-Open
- En cas d’erreur de fichier de configuration, ne pas bloquer les requêtes, mais revenir à un état opérationnel sain ou laisser passer le trafic
- Une option fail-open/fail-closed est prévue pour certains services
- Les détails de tous les projets de résilience seront publiés d’ici la semaine prochaine
- Jusqu’à alors, les changements réseau restent gelés en mode lockdown
Chronologie (UTC)
- 08:47 – Déploiement du changement de configuration et début de propagation réseau
- 08:48 – Impact global
- 08:50 – Déclaration d’incident suite à alertes automatiques
- 09:11 – Début du rollback du changement
- 09:12 – Récupération complète, trafic totalement normalisé
Conclusion
- Cloudflare reconnaît la gravité des deux incidents consécutifs et présente ses excuses aux clients et à l’ensemble de l’écosystème Internet
- L’entreprise prévoit de prévenir de nouveaux incidents par un renforcement de la sécurité des déploiements, de la tolérance aux erreurs et de la résilience
1 commentaires
Réactions sur Hacker News
Cette panne de Cloudflare n’a pas simplement révélé un bug Lua, mais un problème d’architecture plus profond.
La structure web distribuée d’origine était bien plus résistante à ce type de panne globale. À l’inverse, un système centralisé homogène comme Cloudflare peut arrêter des services du monde entier d’un seul faux pas. Même écrit en Rust, un système reste exposé à l’erreur humaine. Au final, c’est la solidité de la conception qui compte.
J’ai vu hier soir des erreurs 500 de Cloudflare sur plusieurs sites. Pourtant, la page de statut n’en disait rien et n’affichait qu’un avis de maintenance planifiée.
On dirait que l’ingénierie qualité de Cloudflare n’arrive pas à suivre le rythme de production. Dans l’industrie de la défense, on disait autrefois que les équipes qualité étaient toujours les plus expérimentées ; dans le logiciel, on dirait l’inverse.
La structure en commutation de paquets de l’internet a justement été conçue pour résister à ce genre de panne globale.
À l’époque de la guerre froide, le réseau de la DARPA visait à maintenir la chaîne de commandement même en cas d’attaque nucléaire.
C’est peut-être le moment de revenir à un paradigme internet local-first.
J’ai l’impression qu’en ce moment Cloudflare rend internet plus lent et pénible. Les procédures du type « prouvez que vous êtes humain » se multiplient, et le chargement des pages prend plus de temps.
Cela semble davantage lié à une politique de facturation du crawling IA qu’à la protection des sites (présentation de Pay-per-crawl).
Le système de configuration globale de Cloudflare est risqué s’il diffuse un changement à l’ensemble du réseau en quelques secondes, sans déploiement progressif.
Il faut un mécanisme capable d’identifier immédiatement la corrélation lorsqu’un changement de configuration provoque une erreur.
La personne en charge du déploiement aurait dû surveiller les métriques en temps réel et appuyer immédiatement sur le bouton de rollback.
Les logs pointaient même clairement jusqu’à la ligne de code, mais il semble y avoir eu une rupture entre l’équipe de déploiement et celle qui comprenait réellement le code.
Le taux de disponibilité de Cloudflare est tombé sous les 99,9 %. C’est pire que mon PC à la maison.
À l’échelle de Cloudflare, il faut absolument disposer d’un environnement de test.
Tout changement devrait être simulé dans un environnement modèle isolé avant d’être déployé progressivement.
Les garde-fous procéduraux comptent davantage qu’un système de types fort.
Les équipes sujettes aux erreurs avancent plus lentement, et celles qui sont fiables vont plus vite.
Au fond, la vitesse technique est un choix. Si les SLA sont menacés, il faut ralentir et renforcer les tests.
La qualité logicielle de Cloudflare semble vaciller.
Il y a même eu un bug où la vérification d’accès à une fonctionnalité réservée aux entreprises n’était effectuée qu’à la toute dernière étape.
Il fallait passer par le support pour le modifier, et la correction a pris plusieurs jours.
Lien vers un cas connexe
Je suis curieux de la culture opérationnelle chez Cloudflare.
Lors d’une réponse à un incident de sécurité, une erreur s’est produite, et au lieu d’un rollback ils ont procédé à un nouveau déploiement global ; c’est une décision risquée.
Cela va à l’encontre du principe de base : « en cas de doute, rollback ».
Retarder le déploiement aurait pu exposer des clients à un piratage réel ; dans ce cas, la vitesse fait partie de la sécurité.
Le premier correctif a révélé un bug latent dans le second, donc dans certains cas un roll forward est plus réaliste qu’un rollback.
La multiplication récente des pannes est peut-être le signe que cette dette commence à remonter à la surface.