Un billet de blog publié mercredi par Cloudflare révèle qu'un bug logiciel a entraîné la perte d'environ 55 % des logs qui auraient été envoyés aux clients sur une période de 3h30 ce 14 novembre. La société explique que chaque partie de son réseau mondial de services génère des journaux d'événements contenant des métadonnées détaillées sur ses activités. Par exemple, chaque demande adressée au réseau de diffusion de contenu (CDN) du fournisseur crée un journal. Ce dernier met ces logs à la disposition de ses clients, qui peuvent les utiliser de différentes manières, notamment pour la conformité, l'observabilité et la comptabilité. L'entreprise a déclaré qu'au cours d'une journée normale, elle envoie environ 4,5 trillions de logs à ses clients. Le problème est apparu à la suite d'une modification apportée à un système appelé Logpush, qui collecte les journaux individuels du réseau de serveurs de Cloudflare en lots et les envoie aux clients. Bien que ces derniers puissent recevoir leurs logs directement de chaque serveur, la plupart d'entre eux choisissent de ne pas le faire.
« Par analogie, imaginez que le service postal sonne à votre porte une fois pour chaque lettre au lieu d'une fois pour chaque paquet de lettres », explique Cloudflare dans son billet. « Avec des milliers ou des millions de lettres par seconde, le nombre de transactions distinctes que cela impliquerait devient prohibitif. Lorsque l'entreprise a ajouté la prise en charge d'un autre ensemble de données dans Logpush, elle a également dû ajouter une autre configuration à un composant appelé Logfwdr pour indiquer au système quels journaux de clients devaient être transmis au nouveau flux. Un bogue dans le système a envoyé une configuration vide à Logfwdr, lui indiquant qu'aucun client n'avait de logs à transférer. Selon l'entreprise, ce problème a été rapidement repéré et la modification a été annulée en moins de cinq minutes.
Une erreur de configuration de seulement 5 minutes
Cependant, ce qui avait été conçu comme un dispositif de sécurité pour faire face à ce type de problème s'est retourné contre eux. Lorsque la configuration Logfwdr n'était pas disponible, le dispositif de sécurité envoyait des journaux à tous les clients. Dans ce cas, ce problème de cinq minutes a provoqué un pic massif du nombre de logs à envoyer, surchargeant le système de mise en mémoire tampon, Buftee, et le rendant inopérant. Buftee fournit des tampons pour chaque tâche Logpush de sorte que l'échec du traitement de la tâche d'un client n'affecte pas la progression des autres. Il contenait des mesures de protection pour éviter cette avalanche, mais elles n'avaient pas été configurées, a déclaré Cloudflare.
« Une erreur de configuration temporaire de seulement cinq minutes a créé une surcharge massive qui nous a pris plusieurs heures pour la réparer et nous en remettre », peut-on lire sur le blog. « Parce que nos backstops n'étaient pas correctement configurés, les systèmes sous-jacents ont été tellement surchargés que nous ne pouvions pas interagir avec eux normalement. Une réinitialisation et un redémarrage complets ont été nécessaires ». Pour éviter que ces problèmes ne se reproduisent, « nous créons des alertes pour nous assurer qu'il sera impossible de manquer ces erreurs de configuration particulières, et nous nous attaquons également au bogue spécifique et aux tests associés qui ont déclenché cet incident. »