8 problèmes de programmation ou de logiciels coûteux qui ont entraîné des pertes d'un million de dollars
Les erreurs de programmation peuvent constituer l’un des problèmes les plus dévastateurs du monde moderne. Nos vies étant si interconnectées avec la technologie, une simple ligne de code égarée pourrait provoquer un désastre, coûtant aux entreprises des millions de dollars en dommages ou en temps perdu. Ces huit erreurs comptent parmi les pires de l’histoire.
Sommaire
1 Mise à jour cassée de CrowdStrike
La panne mondiale de CrowdStrike rappelle la menace de l'an 2000 pour les utilisateurs d'ordinateurs plus âgés. La panne a été causée par la suppression d'un code défectueux lors d'une mise à jour automatique. Un bug dans l'architecture de test basée sur le cloud a signé la mise à jour cassée comme étant prête à l'emploi, et le système l'a simplement transmise aux utilisateurs.
Cette panne a coûté des millions de dollars. Certains médias estiment que cela a coûté à Microsoft environ 44 millions de dollars par entreprise Fortune 500 gênée. Cette erreur de programmation particulière a presque paralysé le monde. Cela démontre également à quel point nous sommes dépendants de la technologie au 21e siècle.
2 Le virus Heartbleed
Le bug Heartbleed, une erreur de programmation critique découverte en 2014, a exposé des millions de sites Web et d'appareils à un vol potentiel de données. Cette vulnérabilité dans la bibliothèque de logiciels cryptographiques OpenSSL largement utilisée a permis aux attaquants d'accéder à des informations sensibles de la mémoire des systèmes concernés, notamment des mots de passe et des clés de chiffrement. L'impact du bug a été dévastateur, coûtant aux entreprises environ 500 millions de dollars en pertes et en efforts de remédiation.
L'erreur de programmation au cœur de Heartbleed était une simple lecture excessive du tampon dans l'extension TLS Heartbeat. Cet oubli dans la mise en œuvre du code est resté indétectable pendant deux ans, mettant en évidence les conséquences catastrophiques d'erreurs de codage, même mineures, dans des logiciels critiques. Cela montre également que vous devez être prudent lorsque vous utilisez un logiciel open source, car on ne sait pas quels bogues existent dans le code.
3 Échec du vol 501 d'Ariane 5
L’échec du vol 501 d’Ariane 5 en 1996 nous rappelle brutalement qu’une erreur de programmation apparemment mineure peut avoir des conséquences catastrophiques. La cause première était une exception logicielle dans le système de référence inertielle de la fusée déclenchée lorsqu'un nombre à virgule flottante de 64 bits était converti en une valeur entière signée de 16 bits. Ce débordement a amené le système de guidage à interpréter les données de vol correctes comme un écart par rapport à la trajectoire de vol attendue.
Seulement 37 secondes après le lancement, cette erreur a conduit la fusée à dévier de sa trajectoire, puis à s'autodétruire. L'explosion a entraîné la perte de quatre satellites scientifiques et d'une décennie de recherche scientifique. Au-delà du coût immédiat du lancement de 370 millions de dollars, l'Agence spatiale européenne a été confrontée à d'importantes atteintes à sa réputation et à un retard dans ses ambitions spatiales commerciales.
4 Accidents de radiothérapie Therac-25
Il faut toujours se méfier des radiations, mais cet incident particulier a coûté de réelles vies humaines, et tout cela était dû à une erreur de programmation. Cet appareil de radiothérapie, conçu pour traiter les patients atteints de cancer, contenait une faille logicielle qui lui permettait de délivrer des surdoses massives de rayonnements dans certaines circonstances. Le bug provenait d’une condition de concurrence critique dans le logiciel de contrôle. Si vous tapiez assez vite, vous pourriez contourner les verrous du logiciel.
Cette erreur de programmation a entraîné au moins six accidents connus au cours desquels des patients ont reçu des doses de rayonnement des centaines de fois supérieures à celles prévues. Trois de ces incidents se sont avérés mortels. De telles erreurs de programmation entraînent non seulement des poursuites judiciaires valant des millions de dollars, mais également des pertes de vies, tout cela à cause de quelque chose qui aurait pu être évité grâce à des protocoles de test rigoureux.
5 L’orbiteur climatique de Mars
Parfois, les erreurs de programmation et de logiciel les plus coûteuses se produisent hors de la planète, comme dans ce cas. Le problème principal était un accident de conversion d'unité : Lockheed Martin, le fabricant du vaisseau spatial, utilisait des unités anglaises (livres-secondes) dans son logiciel, tandis que le Jet Propulsion Laboratory de la NASA prévoyait des unités métriques (newton-secondes) pour les calculs de poussée.
Sans surprise, l’orbiteur s’est écrasé à la surface de Mars parce que les unités utilisées par la NASA étaient erronées. La perte du vaisseau spatial de 327 millions de dollars a constitué un revers important pour le programme d'exploration de Mars de la NASA, retardant des études climatiques critiques et obligeant à une réévaluation des processus de communication et de vérification entre les sous-traitants et l'agence spatiale. C'est un excellent exemple de la raison pour laquelle il est crucial de disposer d'un document de conception pour un projet.
6 Faille de la plateforme de trading de Knight Capital Group
Knight Capital était autrefois une société financière très respectée qui gagnait son argent grâce au trading. Le logiciel de trading exclusif de la société utilisait des algorithmes pour acheter et vendre automatiquement. Des programmeurs ont été embauchés pour apporter de petites modifications au code afin de le rendre plus efficace. Malheureusement, l’un de ces codeurs a téléchargé une mise à jour du code qui a provoqué le dysfonctionnement de l’ensemble de l’algorithme.
En l'espace de 45 minutes, Knight Capital a perdu 440 millions de dollars, soit près de quatre fois le bénéfice net annuel de l'entreprise. Cette erreur de programmation a non seulement décimé le capital de l'entreprise, mais a également gravement porté atteinte à sa réputation, entraînant une chute spectaculaire du cours de l'action et une éventuelle acquisition par un concurrent. Cela devrait être une leçon pour les programmeurs de trouver et d'éliminer les bogues avant de mettre leur code en production.
7 Bogue du Pentium FDIV
Si vous êtes amateur de Linux, vous pouvez faire des calculs en virgule flottante dans Bash, mais que se passe-t-il lorsqu'un processeur entier a un problème avec la division en virgule flottante ? En 1994, le processeur phare d'Intel, le Pentium, faisait parler de lui dans le monde de la technologie. Malheureusement, la puce souffrait d'une erreur dans la table de recherche de division utilisée par le processeur, où cinq entrées sur 1 066 étaient définies par erreur sur zéro, conduisant à des calculs inexacts dans des scénarios spécifiques.
Initialement, Intel a minimisé le problème, mais à mesure que la prise de conscience du public, en particulier parmi les scientifiques et les ingénieurs qui s'appuyaient sur des calculs précis, s'est accrue, Intel a été contraint d'en reconnaître la gravité. La société a finalement proposé de remplacer toutes les puces concernées, ce qui a entraîné des frais de 475 millions de dollars pour rappeler et remplacer des millions de processeurs. Cet incident montre comment quelque chose d'aussi petit que quelques chiffres dans une table de recherche pourrait coûter de la bonne volonté à une entreprise et des millions de dollars en frais de rappel.
8 Incident de l'atterrisseur polaire sur Mars
L’espace présente de nombreux dangers pour le matériel et les logiciels. Contrairement à la dernière erreur sur Mars, celle-ci n’était pas due à un écart d’unité. Le vaisseau spatial de 125 millions de dollars, conçu pour étudier le climat martien et rechercher de la glace d'eau, a été perdu lors de sa descente vers la surface de la planète. La cause première remonte à une faille logicielle dans la séquence d’atterrissage.
L'erreur s'est produite dans les capteurs d'atterrissage du vaisseau spatial. Ces capteurs ont été conçus pour détecter le déploiement des jambes et le contact avec la surface, signalant aux moteurs de s'arrêter. Cependant, le logiciel n'a pas pris en compte les faux signaux générés lors du déploiement des jambes de l'atterrisseur. Cette indication prématurée d'atterrissage a provoqué l'arrêt des moteurs alors que l'atterrisseur était encore à 40 mètres au-dessus de la surface, entraînant un accident catastrophique. La NASA a perdu l'atterrisseur ainsi que tous les instruments et données qu'elle aurait pu collecter. Cette catastrophe souligne pourquoi les tests bêta constituent une partie si importante de la conception de logiciels. Des tests approfondis auraient pu empêcher cela.
Nos vies modernes sont inexorablement liées aux programmes informatiques. Du travail que nous effectuons aux jeux auxquels nous jouons pour nous amuser, tout dépend du fonctionnement des programmes. La plupart du temps, ils fonctionnent parfaitement, mais dans le cas contraire, cela pourrait coûter des millions à une entreprise. Ces erreurs de programmation et de logiciel avertissent tous les développeurs de prêter attention aux petits détails. Le coût réel pourrait être bien supérieur aux heures passées à corriger le code.