L’affaire de la panne géante des terminaux Windows du 19 juillet dernier n’en finit pas de faire parler d’elle. Si les victimes comme Delta Airlines (qui a vu des milliers de vols annulés) réclament des compensations financières, CrowdStrike, à l’origine du gigantesque crash a livré les conclusions de son enquête sur les causes racines de l’incident. Le rapport reprend les premières analyses post-incident c’est-à-dire des manquements qui concernent deux procédures : celle de mise à jour de signature d'exploit (Rapid Response Content) et celle de test d'intégrité de ses fichiers de canaux (Content Validator). Le fautif est vite cerné « Channel Files 291 » comprenant des mises à jour de contenu (template type) dont une détectant de nouvelles techniques d’attaque sur les communications interprocessus (IPC) de Windows qui abusent de ce que l'on appelle les Named Pipes.
Dans cette mise à jour de contenu déployée sur le cloud, le fournisseur observe une « confluence » de plusieurs lacunes conduisant au plantage. La plus importante d’entre elles est une inadéquation entre les 21 entrées transmises au Content Validator via un template type IPC et les 20 entrées fournies au Content Interpreter. CrowdStrike a déclaré que la non-concordance des paramètres n’a pas été découverte au cours des « multiples niveaux » du processus de test en partie en raison de l’utilisation de metacaractères génériques pour la 21e entrée au cours des tests et dans les Template Instance IPC livrées entre mars et avril 2024.
Une seule entrée vous manque et c’est le drame
Le 19 juillet dernier, le Channel Files 291 a été envoyé comprenant la première instance template IPC comprenant la 21e entrée. L’absence d’un test spécifique sur cette entrée supplémentaire signifie que ce problème n’a été signalé qu’après l’envoi du contenu aux Sensor. Ces derniers « ont reçu la nouvelle version du Channel Files 291 embarquant le contenu problématique et ont été exposés à une latence de lecture dans le Content Interpreter » a déclaré la société. « Le Content Interpreter ne s’attendait qu’à 20 valeurs. Par conséquent, la tentative d’accès à la 21e valeur a produit un débordement de la lecture mémoire au-delà de la fin du tableau de données d’entrée et a entraîné un plantage du système ».
Outre la validation du nombre de champs d'entrée dans le type de modèle au moment de la compilation du capteur pour résoudre le problème, CrowdStrike a déclaré qu'il avait également ajouté des contrôles de limites du tableau d'entrée au moment de l'exécution du Content Interpreter pour empêcher des dépassements de lecture mémoire et a corrigé le nombre d'entrées fournies par les Template Type IPC.