Pour un système situé à ce point sur le chemin critique, il n’aurait pas dû passer une pipeline CI correcte.
Je ne suis pas du genre ultra strict sur les tests automatisés, mais pour un système de cette importance, la gestion des états devrait être exceptionnellement bonne.
Il ne faudrait pas déployer en production sans tests d’intégration pour tous les environnements que l’on prétend prendre en charge, et il est difficile de croire qu’une entreprise de cette taille et de cette importance n’ait même pas de serveurs de staging ou de tests de développement validant l’ensemble des images prises en charge.
Il manque trop d’informations et il y a trop d’hypothèses. Par exemple, il se pourrait très bien qu’un fichier correct ait existé et que le point de défaillance ait été le code qui téléverseait l’artefact validé sur le CDN.
Dans ce cas, le problème pourrait n’être apparu qu’après avoir passé de nombreux contrôles avant déploiement. Je n’irais pas conclure trop vite qu’ils ne testent absolument pas ce qu’ils envoient vers Windows.
Qui a dit qu’ils n’avaient pas ce type d’environnement ? Qui a dit que tous ces tests n’avaient pas été passés ? Pour l’instant, il y a trop d’hypothèses.
Je me souviens d’un entretien, il y a quelques années, avec une équipe chargée d’un langage s’exécutant dans le noyau : ils disaient que leur CI faisait tourner 20 000 à 40 000 combinaisons de machines/OS et de configurations.
J’imagine qu’il devait certainement y avoir du Windows de base là-dedans.
Si le critère d’acceptation était « empêcher le démarrage de la machine en cas de signature de données incorrecte », cela pouvait indiquer une distribution corrompue ou un problème réseau ; rétrospectivement, ne pas démarrer pouvait donc être le bon comportement.
Il est aussi possible que le système ait été conçu pour que la machine ne démarre pas complètement tant qu’un fichier doté d’une signature valide n’a pas été téléchargé.
Il est difficile d’imaginer qu’un fichier entièrement rempli de caractères nuls ait été l’artefact d’une pipeline de build automatisée.
Je parierais plutôt sur une défaillance dans une étape aval, après la compilation et le passage des tests CI, au moment de copier le fichier pour préparer le déploiement. Mais pour l’instant, tout cela n’est que spéculation.
À ce sujet, cela ne me semble pas être un hasard si deux des plus grandes catastrophes techniques de l’histoire — CrowdStrike et le piratage de SolarWinds il y a quelques années — sont toutes deux venues de logiciels de sécurité partis en vrille.
J’ai tendance à penser que les profils hackers qui veulent lancer des entreprises de logiciels de sécurité sont probablement ceux qui s’intéressent le moins à la mise en place des parties ennuyeuses d’une culture centrée sur les processus. Dans le cas de SolarWinds, il est apparu que la culture de sécurité interne de l’entreprise était terrible ; et pour cet incident, quand la cause racine sortira, il me semble probable qu’il s’agissait d’un processus de déploiement rapide et relâché.
Je ne suis pas d’accord. Les entreprises de sécurité souffrent du syndrome « trop grosses pour échouer », et l’argent rentre facilement parce que les clients veulent cocher des cases. La sécurité n’est pas un produit que l’on achète, c’est une culture, et elle doit être implantée dès le premier jour par des efforts actifs et un travail difficile. Il n’existe pas de produit qui vous fournisse de la sécurité sur le marché ; seulement des produits vers lesquels rejeter la responsabilité quand un problème survient.
CrowdStrike a été fondée et avait à l’origine son siège à Irvine, en Californie.
Au début, la majeure partie de l’ingénierie était soit à distance/en télétravail, soit à Irvine ; en grandissant, l’entreprise a ajouté un bureau à Sunnyvale, puis a ensuite déplacé officiellement son siège à Austin, au Texas.
Ces dernières années, elle a aussi étendu ses opérations d’ingénierie à l’étranger, ce qui a probablement inclus de l’offshoring.
C’est une hypothèse distincte, mais compatible. Les logiciels de sécurité ont en général besoin de droits d’accès larges et puissants.
Donc lorsqu’une erreur ou une compromission survient, l’impact a tendance à être beaucoup plus important.
Le palmarès du secteur est assez particulier. Rien que de mémoire, il y a CrowdStrike, SolarWinds, Kaspersky, https://en.wikipedia.org/wiki/John_McAfee.
J’ai sûrement oublié d’autres exemples. La structure ressemble peut-être au problème d’auto-sélection qui touche l’industrie légale du cannabis.
Les logiciels de sécurité ont besoin d’un accès au niveau du noyau. Quand quelque chose casse, cela mène à des boucles de démarrage et à des crashs.
La plupart des autres logiciels n’ont pas besoin d’un accès aussi bas niveau ; même s’ils plantent, ils n’emportent pas tout le système avec eux, et ils peuvent aussi être mis à jour automatiquement rapidement.
S’il fallait trouver un côté positif à ce désastre, ce serait le très mince espoir que les organisations repensent l’accès au niveau du noyau.
On ne peut pas considérer que n’importe quel éditeur de jeux vidéo ait les compétences nécessaires pour utiliser un logiciel antitriche au niveau du noyau.
À moins que Microsoft ne serre très fortement la vis, je ne pense pas que les logiciels de jeu seront affectés.
Cela dit, comme Microsoft possède des studios de jeux, il est très probable qu’ils continueront à fournir des hooks pour les jeux. Les organisations d’entreprise ne sourcilleront pas devant les pratiques antitriche de Riot, parce qu’elles n’installent pas LoL sur les machines de travail.
Les adversaires à combattre, ce sont les acheteurs de cheats qui se disent : « un pilote aléatoire au niveau du noyau ? Aucun problème ! »
À mon avis, l’antitriche devrait être principalement côté serveur et basé sur le comportement.
Sur macOS, il me semble qu’au moins l’accès au noyau est impossible, et c’est déjà ça.
On dirait un fichier de test qu’un responsable QA aurait essayé en deuxième ou troisième, juste après un fichier vide et un fichier minimal valide. Le niveau d’incompétence généralisée que cela révèle est sidérant
Dans un marché concurrentiel où l’on impressionne les dirigeants non techniques avec des présentations, il n’est pas surprenant qu’une entreprise techniquement compétente n’ait pas d’avantage sur une entreprise incompétente
J’ai récemment lu le jugement Craig Wright https://www.judiciary.uk/judgments/copa-v-wright/, et lui, qui prétendait faussement être Satoshi Nakamoto, n’avait même pas les compétences techniques de base dans le domaine dont il se disait expert mondial. À la barre, il ne savait même pas ce que signifiait « unsigned », et il semble avoir trompé des gens depuis les années 90 en travaillant sur la sécurité pour de grandes entreprises, à coups de jargon, de démos truquées et de documents falsifiés
George Kurtz, fondateur et CEO de CrowdStrike, était CTO chez McAfee il y a 14 ans, lorsque McAfee a fait presque la même chose : https://old.reddit.com/r/sysadmin/comments/1e78l0g/can_crowd...https://en.wikipedia.org/wiki/George_Kurtz
CrowdStrike lui-même a provoqué le même problème sur Debian stable il y a trois mois : https://old.reddit.com/r/debian/comments/1c8db7l/linuximage6...
Ce qui est terrifiant, c’est que les exigences de conformité PCI ont poussé CrowdStrike et les antivirus dans presque tous les recoins de l’infrastructure IT actuelle
Il est aussi ironique que la conformité ait créé la plus grande vulnérabilité sous la forme d’un énorme point de défaillance unique
Mais les réglementations gouvernementales sont comme ça
Le pire dans cet incident, c’est que les acteurs étatiques disposent désormais d’un plan très clair pour des attaques d’infrastructures à grande échelle
C’est amusant de voir les gens dans les liens s’énerver parce qu’on appelle ça une « panne Microsoft » et dire que c’est « la faute de CrowdStrike »
Mais c’est aussi un échec de Microsoft. Plus largement, c’est encore un échec de l’industrie
Combien de fois faudra-t-il que ce genre de choses se répète pour que des réformes du secteur nous permettent de construire les systèmes sûrs et fiables que nous étudions depuis 70 ans ? On a l’impression de revivre 1988
Il est assez ironique que Craig Wright ait proposé de ne pas faire émettre les certificats numériques par un seul ordinateur ou cluster, mais de les mettre sur une blockchain
Un point centralisé devient une cible, alors qu’un réseau pair-à-pair est bien plus résilient face aux attaques
Si le problème ici avait été lié au remplacement du certificat racine de tous les ordinateurs par celui de CrowdStrike, des certificats enregistrés sur une blockchain pourraient être une solution. Je ne suis pas spécialiste en cryptographie, mais cela paraît plausible
Au passage, c’est seulement en entendant l’explication de Craig Wright sur la blockchain que le livre blanc de Bitcoin a commencé à devenir assez compréhensible pour moi. Ce n’est peut-être pas le meilleur codeur, mais un mathématicien n’est pas inutile en sécurité, non ?
Je ne veux pas passer pour complotiste, mais il me semble encore trop tôt pour écarter toute intention malveillante au seul nom du rasoir de Hanlon
La plupart des erreurs ne sont pas d’une absurdité aussi mondiale. Cela ressemble à la plus grande erreur à ce jour, comme le bug de l’an 2000 qui n’a finalement pas eu lieu
CrowdStrike a un comportement consistant à remplacer par des zéros un fichier transmis via un socket réseau s’il correspond à une signature de malware
Si ces fichiers sont eux-mêmes des fichiers de signatures de malware, il n’est pas surprenant qu’il y ait correspondance
Cela correspond à ce qu’un ami m’a dit avoir entendu de quelqu’un qui travaille chez CrowdStrike au sujet de ce bug
Le bug était tapi depuis des années dans le pilote noyau, et il a été déclenché par des données défectueuses. Ces données ont été ajoutées lors d’une étape de post-traitement d’une mise à jour de configuration, après les tests mais avant la copie vers les serveurs de mise à jour d’où les clients la récupèrent
La configuration de test de CrowdStrike semble avoir été correcte pour les données de configuration elles-mêmes, mais elle n’a pas détecté le problème avant la mise en production, parce qu’ils testaient la mauvaise chose
S’ils publient une analyse post-mortem, j’espère qu’ils reconnaîtront ce problème et expliqueront ce qu’ils comptent faire pour éviter un autre échec de processus à impact mondial
Enfin une explication qui tient à peu près debout
Tout administrateur système compétent a probablement déjà désactivé les mises à jour automatiques partout, du Groenland à la Nouvelle-Zélande, les a bloquées au pare-feu, et prépare un plan pour retirer ce produit de son parc de serveurs aussi vite que possible
Les budgets marketing des concurrents vont sans doute augmenter ce trimestre
CrowdStrike devrait subir bien plus qu’une simple « reconnaissance » des faits
Même si les contrats contiennent une « limitation de responsabilité », j’espère qu’il y aura une enquête sérieuse, des amendes et des poursuites juridiques
L’ampleur des dommages causés par cet incident est difficile à calculer, et elle est encore plus grande si l’on inclut le temps perdu par les entreprises et le grand public. Par exemple, les personnes qui devaient prendre l’avion
Une telle négligence doit nécessairement avoir un coût
Je pensais que Windows exigeait la signature de tous les modules noyau
S’il ne s’agit pas d’une simple fuite de test, mais de plusieurs copies corrompues, on peut se demander comment elles ont pu passer la vérification de signature et être chargées par le noyau
Il se peut que ce ne soit pas le contenu original du fichier, mais le résultat d’une réponse manuelle destinée à stopper les dégâts
Quelqu’un a peut-être espéré qu’en écrasant le mauvais fichier par un fichier de même taille entièrement rempli de zéros, la mise à jour deviendrait inoffensive
Ou, si l’on suit l’hypothèse selon laquelle « le contrôle QA a été contourné à cause d’une vulnérabilité critique », l’arrêt de la diffusion du vrai correctif pourrait avoir été une tentative de réduire l’accès aux vraies données et de ralentir la rétro-ingénierie de la vulnérabilité
D’après une explication publiée sur le forum technique de 4chan, le problème se serait produit en deux étapes
Un driver noyau signé nommé CSAgent.sys analysait les fichiers de définitions antivirus de CrowdStrike, et ne gérait pas correctement les cas où un fichier de définitions malformed provoquait un accès mémoire invalide
Il existait donc un driver noyau à retardement qui fonctionnait sans problème depuis des mois avec des fichiers de définitions normaux, jusqu’au moment où le serveur web ou le CDN fournissant ces définitions a commencé à livrer du contenu incorrect, comme un fichier vide, des octets arbitraires ou des fichiers d’un autre logiciel
Selon cette explication, le client de mise à jour les téléchargeait sous C:\Windows\System32\drivers, puis CSAgent.sys les relisait et les analysait, ce qui entraînait un écran bleu PAGE_FAULT_IN_NONPAGED_AREA et une boucle de redémarrage
En comparant CSAgent.sys_18511.sys et CSAgent.sys_18513.sys, on verrait des traces de modification du contrôle de taille et de la taille des buffers, afin d’éviter à l’avenir qu’un mauvais fichier de définitions ne provoque un crash
On dirait qu’une certaine fonction de protection antivirus sur le serveur fournissant les fichiers de définitions a empêché la lecture du disque et, au lieu de renvoyer une erreur, a fourni des données de sortie remplies de zéros
Si un véritable package antivirus en était la cause, ce serait assez drôle
Si cela s’est produit plusieurs fois, il pourrait s’agir d’une attaque de hackers visant un driver noyau mal écrit
Surtout dans le contexte actuel des élections, et du fait que c’est une entreprise appréciée par Trump, cela pourrait aussi être une démonstration de force
Par le passé, un logiciel de sécurité avait déjà transformé des fichiers entiers en zéros, cassant la compilation d’un logiciel
Je ne dis pas que c’est ce qui s’est passé cette fois-ci, mais ce ne serait pas surprenant
En gros, sous Windows, le linker ne pouvait pas ouvrir un fichier parce qu’un autre processus le verrouillait pendant son scan. Mais au lieu de renvoyer une erreur, il remplaçait par des zéros le code objet qui devait être lié
Les gens ne trouvaient pas la cause, jusqu’à ce qu’ils ouvrent un débogueur et constatent que de gros blocs du code objet avaient été remplacés par des zéros
J’ai rencontré beaucoup trop de fois le problème où Visual Studio ne parvenait pas à écrire dans un fichier qu’il venait de compiler
L’antivirus attrapait le binaire tout juste généré exactement au moment où mt.exe devait y écrire, au point que j’ai même créé un wrapper mt.exe ajoutant des tentatives de réessai. Les builds CI échouaient aussi aléatoirement à cause de ça
1 commentaires
Avis sur Hacker News
Pour un système situé à ce point sur le chemin critique, il n’aurait pas dû passer une pipeline CI correcte.
Je ne suis pas du genre ultra strict sur les tests automatisés, mais pour un système de cette importance, la gestion des états devrait être exceptionnellement bonne.
Il ne faudrait pas déployer en production sans tests d’intégration pour tous les environnements que l’on prétend prendre en charge, et il est difficile de croire qu’une entreprise de cette taille et de cette importance n’ait même pas de serveurs de staging ou de tests de développement validant l’ensemble des images prises en charge.
Dans ce cas, le problème pourrait n’être apparu qu’après avoir passé de nombreux contrôles avant déploiement. Je n’irais pas conclure trop vite qu’ils ne testent absolument pas ce qu’ils envoient vers Windows.
J’imagine qu’il devait certainement y avoir du Windows de base là-dedans.
Il est aussi possible que le système ait été conçu pour que la machine ne démarre pas complètement tant qu’un fichier doté d’une signature valide n’a pas été téléchargé.
Je parierais plutôt sur une défaillance dans une étape aval, après la compilation et le passage des tests CI, au moment de copier le fichier pour préparer le déploiement. Mais pour l’instant, tout cela n’est que spéculation.
À ce sujet, cela ne me semble pas être un hasard si deux des plus grandes catastrophes techniques de l’histoire — CrowdStrike et le piratage de SolarWinds il y a quelques années — sont toutes deux venues de logiciels de sécurité partis en vrille.
J’ai tendance à penser que les profils hackers qui veulent lancer des entreprises de logiciels de sécurité sont probablement ceux qui s’intéressent le moins à la mise en place des parties ennuyeuses d’une culture centrée sur les processus. Dans le cas de SolarWinds, il est apparu que la culture de sécurité interne de l’entreprise était terrible ; et pour cet incident, quand la cause racine sortira, il me semble probable qu’il s’agissait d’un processus de déploiement rapide et relâché.
La sécurité n’est pas un produit que l’on achète, c’est une culture, et elle doit être implantée dès le premier jour par des efforts actifs et un travail difficile. Il n’existe pas de produit qui vous fournisse de la sécurité sur le marché ; seulement des produits vers lesquels rejeter la responsabilité quand un problème survient.
Au début, la majeure partie de l’ingénierie était soit à distance/en télétravail, soit à Irvine ; en grandissant, l’entreprise a ajouté un bureau à Sunnyvale, puis a ensuite déplacé officiellement son siège à Austin, au Texas.
Ces dernières années, elle a aussi étendu ses opérations d’ingénierie à l’étranger, ce qui a probablement inclus de l’offshoring.
Donc lorsqu’une erreur ou une compromission survient, l’impact a tendance à être beaucoup plus important.
J’ai sûrement oublié d’autres exemples. La structure ressemble peut-être au problème d’auto-sélection qui touche l’industrie légale du cannabis.
La plupart des autres logiciels n’ont pas besoin d’un accès aussi bas niveau ; même s’ils plantent, ils n’emportent pas tout le système avec eux, et ils peuvent aussi être mis à jour automatiquement rapidement.
S’il fallait trouver un côté positif à ce désastre, ce serait le très mince espoir que les organisations repensent l’accès au niveau du noyau.
On ne peut pas considérer que n’importe quel éditeur de jeux vidéo ait les compétences nécessaires pour utiliser un logiciel antitriche au niveau du noyau.
Cela dit, comme Microsoft possède des studios de jeux, il est très probable qu’ils continueront à fournir des hooks pour les jeux. Les organisations d’entreprise ne sourcilleront pas devant les pratiques antitriche de Riot, parce qu’elles n’installent pas LoL sur les machines de travail.
On dirait un fichier de test qu’un responsable QA aurait essayé en deuxième ou troisième, juste après un fichier vide et un fichier minimal valide. Le niveau d’incompétence généralisée que cela révèle est sidérant
Dans un marché concurrentiel où l’on impressionne les dirigeants non techniques avec des présentations, il n’est pas surprenant qu’une entreprise techniquement compétente n’ait pas d’avantage sur une entreprise incompétente
J’ai récemment lu le jugement Craig Wright https://www.judiciary.uk/judgments/copa-v-wright/, et lui, qui prétendait faussement être Satoshi Nakamoto, n’avait même pas les compétences techniques de base dans le domaine dont il se disait expert mondial. À la barre, il ne savait même pas ce que signifiait « unsigned », et il semble avoir trompé des gens depuis les années 90 en travaillant sur la sécurité pour de grandes entreprises, à coups de jargon, de démos truquées et de documents falsifiés
George Kurtz, fondateur et CEO de CrowdStrike, était CTO chez McAfee il y a 14 ans, lorsque McAfee a fait presque la même chose : https://old.reddit.com/r/sysadmin/comments/1e78l0g/can_crowd... https://en.wikipedia.org/wiki/George_Kurtz
CrowdStrike lui-même a provoqué le même problème sur Debian stable il y a trois mois : https://old.reddit.com/r/debian/comments/1c8db7l/linuximage6...
Ce qui est terrifiant, c’est que les exigences de conformité PCI ont poussé CrowdStrike et les antivirus dans presque tous les recoins de l’infrastructure IT actuelle
Mais les réglementations gouvernementales sont comme ça
Mais c’est aussi un échec de Microsoft. Plus largement, c’est encore un échec de l’industrie
Combien de fois faudra-t-il que ce genre de choses se répète pour que des réformes du secteur nous permettent de construire les systèmes sûrs et fiables que nous étudions depuis 70 ans ? On a l’impression de revivre 1988
Un point centralisé devient une cible, alors qu’un réseau pair-à-pair est bien plus résilient face aux attaques
Si le problème ici avait été lié au remplacement du certificat racine de tous les ordinateurs par celui de CrowdStrike, des certificats enregistrés sur une blockchain pourraient être une solution. Je ne suis pas spécialiste en cryptographie, mais cela paraît plausible
Au passage, c’est seulement en entendant l’explication de Craig Wright sur la blockchain que le livre blanc de Bitcoin a commencé à devenir assez compréhensible pour moi. Ce n’est peut-être pas le meilleur codeur, mais un mathématicien n’est pas inutile en sécurité, non ?
La plupart des erreurs ne sont pas d’une absurdité aussi mondiale. Cela ressemble à la plus grande erreur à ce jour, comme le bug de l’an 2000 qui n’a finalement pas eu lieu
Cet article est faux, et je l’ai signalé parce qu’il n’y avait pas d’autre moyen de le faire descendre de la page d’accueil
Trouver un fichier rempli de zéros sur un ordinateur en panne ne signifie pas que ce fichier a été distribué dès le départ entièrement rempli de zéros
https://x.com/craiu/status/1814339965347610863
https://x.com/cyb3rops/status/1814329155833516492
Si ces fichiers sont eux-mêmes des fichiers de signatures de malware, il n’est pas surprenant qu’il y ait correspondance
Cela correspond à ce qu’un ami m’a dit avoir entendu de quelqu’un qui travaille chez CrowdStrike au sujet de ce bug
Le bug était tapi depuis des années dans le pilote noyau, et il a été déclenché par des données défectueuses. Ces données ont été ajoutées lors d’une étape de post-traitement d’une mise à jour de configuration, après les tests mais avant la copie vers les serveurs de mise à jour d’où les clients la récupèrent
La configuration de test de CrowdStrike semble avoir été correcte pour les données de configuration elles-mêmes, mais elle n’a pas détecté le problème avant la mise en production, parce qu’ils testaient la mauvaise chose
S’ils publient une analyse post-mortem, j’espère qu’ils reconnaîtront ce problème et expliqueront ce qu’ils comptent faire pour éviter un autre échec de processus à impact mondial
Tout administrateur système compétent a probablement déjà désactivé les mises à jour automatiques partout, du Groenland à la Nouvelle-Zélande, les a bloquées au pare-feu, et prépare un plan pour retirer ce produit de son parc de serveurs aussi vite que possible
Les budgets marketing des concurrents vont sans doute augmenter ce trimestre
Même si les contrats contiennent une « limitation de responsabilité », j’espère qu’il y aura une enquête sérieuse, des amendes et des poursuites juridiques
L’ampleur des dommages causés par cet incident est difficile à calculer, et elle est encore plus grande si l’on inclut le temps perdu par les entreprises et le grand public. Par exemple, les personnes qui devaient prendre l’avion
Une telle négligence doit nécessairement avoir un coût
Kevin Beaumont affirme sur Mastodon que le fichier qu’il a reçu diffère selon les clients
https://cyberplace.social/@GossiTheDog/112812454405913406
Il suffit de descendre un peu
S’il ne s’agit pas d’une simple fuite de test, mais de plusieurs copies corrompues, on peut se demander comment elles ont pu passer la vérification de signature et être chargées par le noyau
Il se peut que ce ne soit pas le contenu original du fichier, mais le résultat d’une réponse manuelle destinée à stopper les dégâts
Quelqu’un a peut-être espéré qu’en écrasant le mauvais fichier par un fichier de même taille entièrement rempli de zéros, la mise à jour deviendrait inoffensive
Ou, si l’on suit l’hypothèse selon laquelle « le contrôle QA a été contourné à cause d’une vulnérabilité critique », l’arrêt de la diffusion du vrai correctif pourrait avoir été une tentative de réduire l’accès aux vraies données et de ralentir la rétro-ingénierie de la vulnérabilité
D’après une explication publiée sur le forum technique de 4chan, le problème se serait produit en deux étapes
Un driver noyau signé nommé CSAgent.sys analysait les fichiers de définitions antivirus de CrowdStrike, et ne gérait pas correctement les cas où un fichier de définitions malformed provoquait un accès mémoire invalide
Il existait donc un driver noyau à retardement qui fonctionnait sans problème depuis des mois avec des fichiers de définitions normaux, jusqu’au moment où le serveur web ou le CDN fournissant ces définitions a commencé à livrer du contenu incorrect, comme un fichier vide, des octets arbitraires ou des fichiers d’un autre logiciel
Selon cette explication, le client de mise à jour les téléchargeait sous C:\Windows\System32\drivers, puis CSAgent.sys les relisait et les analysait, ce qui entraînait un écran bleu PAGE_FAULT_IN_NONPAGED_AREA et une boucle de redémarrage
En comparant CSAgent.sys_18511.sys et CSAgent.sys_18513.sys, on verrait des traces de modification du contrôle de taille et de la taille des buffers, afin d’éviter à l’avenir qu’un mauvais fichier de définitions ne provoque un crash
Si un véritable package antivirus en était la cause, ce serait assez drôle
Surtout dans le contexte actuel des élections, et du fait que c’est une entreprise appréciée par Trump, cela pourrait aussi être une démonstration de force
Par le passé, un logiciel de sécurité avait déjà transformé des fichiers entiers en zéros, cassant la compilation d’un logiciel
Je ne dis pas que c’est ce qui s’est passé cette fois-ci, mais ce ne serait pas surprenant
En gros, sous Windows, le linker ne pouvait pas ouvrir un fichier parce qu’un autre processus le verrouillait pendant son scan. Mais au lieu de renvoyer une erreur, il remplaçait par des zéros le code objet qui devait être lié
Les gens ne trouvaient pas la cause, jusqu’à ce qu’ils ouvrent un débogueur et constatent que de gros blocs du code objet avaient été remplacés par des zéros
L’antivirus attrapait le binaire tout juste généré exactement au moment où mt.exe devait y écrire, au point que j’ai même créé un wrapper mt.exe ajoutant des tentatives de réessai. Les builds CI échouaient aussi aléatoirement à cause de ça