L’incident survenu chez CrowdStrike a entrainé un plantage d’un très grand nombre d’ordinateurs Windows. Comment en est-on arrivés là ? Il s’agit très probablement de la convergence de plusieurs facteurs techniques, que nous allons exposer.
Dans notre article, nous relations comment une mise à jour du logiciel Falcon Sensor de CrowdStrike avait provoqué une épidémie d’écrans bleus à travers le monde. La panne engendrée a touché de nombreux aéroports et autres structures.
Comment le déploiement d’une telle mise à jour a-t-elle été possible ? Pourquoi la mise à jour d’un produit de sécurité peut-elle aboutir à un plantage complet du système ?
Une question de privilèges
Sous Windows, comme sur n’importe quel autre système d’exploitation, il existe des niveaux de privilèges, basés sur un système d’anneaux concentriques (les fameux rings). Le ring 0 constitue l’espace noyau (ou kernel). Les privilèges y sont maximaux, de même que les performances. Dans son infrastructure, Microsoft a simplifié les autres niveaux depuis longtemps et n’en laisse aujourd’hui qu’un autre : le ring 3, l’espace utilisateur.
Dans les vieilles versions de Windows, de nombreux pilotes étaient en espace noyau. Aujourd’hui, le paysage a changé. L’évolution du framework de développement des pilotes a repoussé un nombre croissant de catégories vers le ring 3. Sous les actuels Windows 10 et 11, les pilotes en espace noyau sont beaucoup plus rares. Le cas le plus connu est le pilote graphique, pour des questions de performances.
L’autre exception est pour les logiciels de sécurité. On parle ici des antivirus et plus généralement des suites de sécurité. Ce type de produit surveille un certain nombre de processus. Pour le faire, ils utilisent le plus souvent un pilote en espace noyau, lui octroyant les privilèges nécessaires à une telle surveillance.
Mais puisqu’un grand pouvoir implique de grandes responsabilités, le plantage d’un pilote en espace noyau peut avoir des conséquences bien plus importantes que, disons, le pilote de votre souris USB. Vous avez déjà peut-être rencontré un clignotement soudain de l’écran sous Windows, le système vous avertissant qu’une panne du pilote graphique a été détectée. Le message indique que le pilote a été relancé. Parfois, le système n’y parvient pas et un écran bleu se produit.
Comme l’explique l’ingénieur Aurélien Chalot chez Orange Cyberdéfense, le fonctionnement est le même pour les EDR (Endpoint Detection and Response), auxquelles appartiennent les suites de sécurité. La proximité du pilote avec le noyau lui octroie privilèges et performances. Mais, en cas de plantage, c’est le noyau lui-même qui risque de partir avec l’eau du bain.
Un simple fichier de définition
Falcon Sensor de CrowdStrike possède bien un pilote en espace noyau, csagent.sys. C’est un agent responsable du cœur des fonctionnalités de surveillance. Il est alimenté très régulièrement par des fichiers de définition. Ceux-ci permettent de mettre à jour les capacités de détection des malwares de l’agent en lui donnant les moyens de les repérer par leur empreinte.
Falcon Sensor, comme toutes les autres solutions de sécurité, reçoit donc plusieurs types de mises à jour. Certaines concernent l’agent, d’autres, beaucoup plus fréquentes, les définitions. Or, c’est un fichier de définition qui a provoqué la vaste panne. Comment est-ce possible ?
Selon l’expert en cybersécurité Kevin Beaumont, qui a récupéré des fichiers incriminés, tout vient d’un problème de formatage. Le fichier de définition, lorsqu’il est interprété par le pilote, entraine un plantage de ce dernier qui, à son tour, entraine le noyau Windows avec lui. Les machines sous Linux et MacOS ne sont pas affectées.
Pour lui, une chose est sûre : « Il s'agira de l'incident "cyber" le plus important de tous les temps en termes d'impact, c’est juste un spoiler, tant la récupération est difficile ».
La question du processus de validation
Plus on en apprend sur les raisons techniques de l’incident, plus la question de la validation s’impose : comment une telle mise à jour a pu passer les tests de qualité (QA) et être validée pour déploiement ?
Car il faut constater l’ampleur de la panne. Au vu du nombre de machines concernées (au strict minimum des dizaines de milliers, partout dans le monde), on peut se demander comment un problème aussi important n’a pas été détecté durant la phase de test. À moins que celle-ci ait été particulièrement légère, voire inexistante.
C’est la question que se pose notamment l’ingénieur Maiko Bossuyt (MaikoB sur X). Il n’est pas le seul, le sujet revient régulièrement sur les réseaux sociaux. CrowdStrike n’a pour le moment rien dit.
Tous les mêmes
— CommitStrip FR (@CommitStrip_fr) January 5, 2017
https://t.co/t5hHPJ6mLK pic.twitter.com/yo4ONRdt9O
Redémarrez 15 fois…
La question de la réparation, en revanche, pose toujours un gros problème. Microsoft, sur sa page de statut pour Azure, indique avoir reçu des retours de clients sur le plantage CrowdStrike qui touchait des machines virtuelles Windows ou Windows Server.
Dans le cas des machines virtuelles, les tâches peuvent être automatisées. Selon des clients, redémarrer les machines plusieurs fois (jusqu’à quinze !) donne de bons résultats.
Selon Maiko Bossuyt, avec qui nous nous sommes entretenus, l’explication est simple : le BSOD n’est pas forcément immédiat. Avec un peu de chance, Windows a le temps de se charger et Falcon Sensor de trouver la dernière mise à jour, qui corrige le tir. S’il parvient à la récupérer et l’installer, la machine est tirée d’affaire. « Ça se joue vraiment à quelques secondes », ajoute-t-il. L’opération est donc loin de réussir dans tous les cas
Malheureusement, les machines virtuelles ne sont pas les seules : les machines physiques (ordinateur et serveurs) sont également concernées. D’après les retours obtenus par Next, les PC Windows où le système est installé nativement sont aussi impactés.
… ou déplacez-vous (y compris en datacenter)
La réparation prend beaucoup plus de temps, car il faut intervenir physiquement sur chaque ordinateur et se déplacer dans les datacenters pour les serveurs Windows sans accès IPMI (ou autre). Dans le cadre d’organisations possédant des milliers de machines, l’opération risque de virer au cauchemar. Si BitLocker est actif, il faut en plus avoir la clé de restauration de chaque machine sous la main.
Enfin, précisons que ce n’est pas la première fois que le pilote de Falcon Sensor entraine des problèmes, même si aucun de cette ampleur. Sous Windows, on trouve des cas de plantage similaires en décembre dernier. En avril, on relevait des kernel panics sur Linux.
Commentaires (46)
#1
Crowdstrike est au début d'un sacré bordel...
#1.1
#2
#3
edit: après avoir vu plus de messages, il semble que c'est plutôt aléatoire en fait (mais le coup du "full zéro" est très drôle quand même)
Historique des modifications :
Posté le 19/07/2024 à 18h19
Ce qui est encore plus drôle, c'est que le fichier impacté est juste... une suite de zéros: 42k d'octets nuls.
#3.1
Historique des modifications :
Posté le 19/07/2024 à 19h00
Dans 4 ans, nous saurons si ce n'est pas un ingénieur de CrowdStrike payé par Wagner pour pousser un fichier foireux à la MEP.
#4
#4.1
#5
#5.1
#5.2
#5.3
"est avec nous depuis le 6 décembre 2004"
Salut à toi, voyageur temporel
#5.4
#5.6
4 smileys pour mon message / 20 pour cette réponse.
Il y a eu 5x plus de personnes qui n'ont pas compris la teneur de mon message (le prompt étant pourtant suffisamment révélateur) que de personnes d'une infinie intelligence ayant discerné toute la subtilité de mon prompt.
#5.5
#5.7
#6
Ah... Le driver en mode noyau, vs le driver en mode utilisateur, vs les API/Hook du système.
Comme dit notre expert en cybersécurité, a trop vouloir durcir les protections on finit par mettre en péril la triade "Confidentialité, Intégrité et Disponibilité". C'est un équilibre subtil.
Ca va p-e inciter Ms a fournir un vrai "failsafe mode" sur windows, avec FS Read-Only pour le système et A/B.
Soyons fous.
#6.1
cf red hat qui a eu un problème similaire en juin https://access.redhat.com/solutions/7068083 - un patch côté kernel a corrigé le vérificateur eBPF pour ça.
#6.2
Ce n'est pas "plus safe" que Windows: Windows vérifie des signatures - Linux vérifie au kernel et Windows externalise, c'est tout.
#6.4
cf https://www.brendangregg.com/blog/2024-07-22/no-more-blue-fridays.html
Historique des modifications :
Posté le 24/07/2024 à 19h01
Non non, je maintiens, en théorie un programme eBPF ne peut pas kernel panic. Là, il l'a fait à cause d'un bug (désormais fixé) dans le vérificateur. Le programme eBPF peut éventuellement crasher, être buggé, etc. mais ça ne devrait pas affecter le noyau, ou du moins pas jusqu'au crash.
cf https://www.brendangregg.com/blog/2024-07-22/no-more-blue-fridays.html
#6.3
Ceci dit, avec le boot from VHD, c'est possible depuis Windows Vista: un Windows, un VHD, un disque de différence - et on peut charger plusieurs environnements, revenir à la config d'origine (le VHD), distribuer nue second VHD avec les dernières updates ... Hyper pratique sur des postes "invités"
Ceci dit, en général le mode récup de Windows se débrouille pas mal, mais dans ce cas précis, il ne détecte pas un problème de boot ou un pilote qui fait planter trop souvent, c'est bizarre.
Historique des modifications :
Posté le 24/07/2024 à 07h02
Ca c'est vrai. Il est passé où le mode wimboot qui nous permettait de booter directement sur l'image ISO, en dur dans le disque, tout en chargeant "dynamiquement" les modifs passées dans le FS, un peu comme un fichier de modifs?
Ceci dit, avec le boot from VHD, c'est possible depuis Windows Vista: un Windows, un VHD, un disque de différence - et on peut charger plusieurs environnements, revenir à la config d'origine (le VHD), distribuer nue second VHD avec les dernières updates ... Hyper pratique sur des postes "invités"
#7
Ne devraient être en ring 0 que les opérations qui requièrent absolument un ring 0, tout le reste des tâches devraient s'effectuer en ring 3. La base quoi ....
#7.1
Le code noyau, c'est comme l'embarqué, pas le droit à l'erreur donc il faut tout blinder
#7.2
Du mal à comprendre comment ça peut passer.
#7.3
#8
#9
Une possibilité c’est que le processus QA soit plus léger avec les définitions qu’avec le code de l’agent, et qu’il y ai une faille dans la CD qui produit une défaillance après l’étape de contrôle qualité. Typiquement, la QA teste très peux les bugs issuent de la CD en tant que tel et donc une altération de fin de process pourrait passer sous les radars.
#9.1
#9.2
Il n'empêche que les cahiers des charges ne sont pas toujours très fournis ou à coté de la plaque.
Mais bon, toujours facile a dire après coup hein ?
#10
Est-ce vraiment bon de se fournir en solution de sécurité chez des acteurs uniquement B2B ?
Cela aurait pu arriver à un Avast, et consort.
Y'a de la méditation à faire de ce coté là.
#10.1
La nana d'Avast a trop fait faire d'arrêts cardiaques aux gentils geeks qui avaient laissé leurs HP à donf
#10.2
C'était début des années 2000, je jouais à Silent Hill premier du nom genre à 2h du mat. Suspens à son paroxisme (c'était la première fois que j'y jouais ^^). J'étais dans l'école, le son à fond pour épier le moindre bruit.
Quand soudain...
VOTRE BASE DE DONNEES VIRALE A BIEN ETE MISE A JOUR
#11
Vu le tarif du produit, ils ont quelques explications à donner sur le comment ils en sont arrivés là et ce qu’ils vont faire pour blinder le process (qui aurait déjà du l’être mais ils ont pris du carton et ça ne l’a pas fait).
#12
Là les RSSI feront moins les gourous quand même
#12.1
Sachant que la plupart des auditeurs ne sont pas techniques, donc ils voient EDR sur tout le parc ils sont content...
#12.4
#12.2
Pour les entreprises qui consomment du Cloud, donc payé à l'usage, un EDR qui scanne des dossiers en permanence c'est autant d'actes de lecture sur des disques managés. Et la facture peut grimper trèèèèèès vite dans le cas de stockage objet.
#12.3
#13
#13.1
#14
Certaines fonctions avaient une parenthèse "(" dans le début de la fonction de maths de pré-affiché… Si on avait le malheur de finir l’expression avec un ], là c’était blocage complet et hard/factory reset (soit en une seconde seulement des heures évaporées à rentrer à la main toutes les formules de maths/physiques de 2 années de cours).
J’avais montré le bug à un camarade de classe sur sa HP, ben il n’avait pas aimé, mais alors vraiment pas du tout… le factory reset...
.
Historique des modifications :
Posté le 20/07/2024 à 10h27
En parlant de truc mal formaté, rien de neuf ici… Je me rappelle fin des années 90, sur une HP 48G (calculatrice scientifique qui coûtait environ 200€ @ 2024-inflation, utilisée surtout en prépa), remplie de fonctions mathématiques.
Certaines fonctions avait une parenthèse "(" dans le début de la fonction de maths de pré-affiché… Si on avait le malheur de finir l’expression avec un ], là c’était blocage complet et hard/factory reset (soit en une seconde seulement des heures évaporées à rentrer à la main toutes les formules de maths/physiques de 2 années de cours).
J’ai montré le bug à un camarade de classe sur son HP, ben il n’avait pas aimé, mais alors vraiment pas du tout… le factory reset...
.
Posté le 20/07/2024 à 10h29
En parlant de truc mal formaté, rien de neuf ici… Je me rappelle fin des années 90, sur une HP 48G (calculatrice scientifique qui coûtait environ 200€ @ 2024-inflation, utilisée surtout en prépa), remplie de fonctions mathématiques.
![:mdr2:](https://cdn2.nextinpact.com/smileys/mdr2.gif)
Certaines fonctions avait une parenthèse "(" dans le début de la fonction de maths de pré-affiché… Si on avait le malheur de finir l’expression avec un ], là c’était blocage complet et hard/factory reset (soit en une seconde seulement des heures évaporées à rentrer à la main toutes les formules de maths/physiques de 2 années de cours).
J’ai montré le bug à un camarade de classe sur son HP, ben il n’avait pas aimé, mais alors vraiment pas du tout… le factory reset...
.
Posté le 20/07/2024 à 10h29
En parlant de truc mal formaté, rien de neuf ici… Je me rappelle fin des années 90, sur une HP 48G (calculatrice scientifique qui coûtait environ 200€ @ 2024-inflation, utilisée surtout en prépa), remplie de fonctions mathématiques.
![:mdr2:](https://cdn2.nextinpact.com/smileys/mdr2.gif)
Certaines fonctions avait une parenthèse "(" dans le début de la fonction de maths de pré-affiché… Si on avait le malheur de finir l’expression avec un ], là c’était blocage complet et hard/factory reset (soit en une seconde seulement des heures évaporées à rentrer à la main toutes les formules de maths/physiques de 2 années de cours).
J’avais montré le bug à un camarade de classe sur sa HP, ben il n’avait pas aimé, mais alors vraiment pas du tout… le factory reset...
.
#15
https://en.wikipedia.org/wiki/BlackBerry#Service_outages
des millions d'appareils touchés, pendant des heures.
le PDG avait carrément fait des excuses publiques sur youtube à l'époque.
pas mieux que bitdefender en l'année d'avant..
#16
Pour ma part, cela me rappelle l'histoire de Bitdefender qui prend tous les fichiers système pour un logiciel malveillant et les met en quarantaine. C'était il y a des lustres, et à l'époque cela concernait que les systèmes 64 bits (qui n'étaient pas encore majoritaires).
McAfee a eu aussi le coup il me semble.
#16.1
On a eu de la chance au taf que la màj a été retardée par le firewall moisi de l'époque.
#17
Historique des modifications :
Posté le 22/07/2024 à 14h38
Et surtout pourquoi a-t-on mis un antivirus sur de simples terminaux où l'utilisateur ne peut rien faire d'autres qu'exécuter le programme prévu ?
Posté le 22/07/2024 à 14h38
Et surtout pourquoi a-t-on mis un antivirus sur de simples terminaux où l'utilisateur ne peut rien faire d'autre que d'exécuter le programme prévu ?
#17.1
#17.2
Historique des modifications :
Posté le 22/07/2024 à 15h59
un antivirus ou un EDR ne servent pas forcément QUE à se protéger du user (l'interface chaise clavier ;)), ça peut aussi servir à se protéger d'une attaque visant le terminal depuis le réseau (genre un virus réussi à accéder au terminal (via une faille quelquonque) et tente de s'exécuter pour compromettre le terminal... si c'est un DAB, ça va tenter par exemple de faire sortir les billets :)