Skip to main content
Blog
Blog

Les inversions de bits par rayons cosmiques et le risque caché à grande échelle

Quand un événement rare survenant une fois sur un million s'avère finalement bien moins rare que prévu. Comment notre atmosphère transforme des zéros en uns, et ce que cela implique pour la sécurité.

Aug 08, 2025 6 min read
blog-cover-cosmic-ray-bit-flips

En 2013, le speedrunner compétitif de Super Mario 64 DOTA_Teabag traversait Tick Tock Clock, un niveau réputé pour punir même les meilleurs joueurs en raison d'une séquence de sauts particulièrement exigeante. En pleine course, Mario fut soudainement propulsé vers le haut à travers le sol, contournant une section entière du niveau et faisant gagner à DOTA_Teabag de précieuses secondes.

Vidéo de l'incident de l'inversion de bit dans Super Mario 64

TTC Upwarp: Ceiling Warp vs Byte Change

La communauté des speedrunners, qui jouait et décortiquait Super Mario 64 depuis des décennies, fut stupéfaite. Une prime fut offerte pour reproduire le glitch ; certains speedrunners affirmèrent que DOTA_Teabag avait « secoué la cartouche » (une technique permettant parfois de provoquer des glitches prévisibles sur une Nintendo 64 en modifiant légèrement l'angle de la cartouche de jeu). Le mystère fut élucidé lorsque le YouTuber et chasseur de glitches vidéoludiques réputé pannenkoek12 (traduit « Pancake12 ») découvrit qu'un seul bit dans la mémoire de la Nintendo 64 en était la cause. L'inversion de bit s'était produite à l'adresse 0xC5837800, responsable de la position verticale de Mario. Le changement en binaire était de 1100 0101 à 1100 0100, et par un extraordinaire coup de chance, exactement le changement nécessaire pour téléporter Mario sur une plateforme plus haute.

Quelle en était la cause ? Tout indique qu'il s'agit d'une inversion de bit par rayon cosmique — une erreur aléatoire dans les puces informatiques provoquée par une particule à haute énergie venue de l'espace, qui affecte un système au mauvais moment.

Qu'est-ce qu'une inversion de bit par rayon cosmique ?

Une inversion de bit par rayon cosmique (également appelée « single-event upset », ou SEU) se produit lorsqu'une particule ionisante issue d'un rayon cosmique frappe une cellule mémoire ou un transistor, faisant basculer un bit binaire de 0 à 1, ou de 1 à 0. Ces inversions de bits peuvent provoquer une erreur logicielle qui ne laisse aucun dommage physique sur le matériel, mais qui peut altérer les données stockées en mémoire ou la logique applicative, modifiant ainsi le comportement des applications, voire désactivant des fonctionnalités de sécurité.

Le speedrun de Super Mario 64 n'est pas le seul cas documenté d'un événement cosmique ayant des effets sur Terre. Lors des élections belges de 2003, une candidate inconnue reçut exactement 4 096 votes supplémentaires, semblant surgir de nulle part, sur les machines à voter électroniques du pays. L'erreur ne fut détectée que parce qu'elle avait reçu plus de votes que le nombre total de votants, ce qui était mathématiquement impossible.

Après enquête, les chercheurs conclurent qu'un rayon cosmique avait inversé un seul bit à la position 13 dans la mémoire de la machine à voter, accordant à la candidate 4 096 votes supplémentaires [1]. En binaire, chaque bit double la valeur, et le bit à cette position correspondait à 2^12 — soit exactement 4 096.

Rare ne signifie pas impossible, surtout à grande échelle

Ces inversions de bits par rayons cosmiques sont extrêmement rares à l'échelle d'un bit individuel, mais elles ne sont pas impossibles. En 1996, des chercheurs d'IBM estimèrent qu'un ordinateur de bureau classique équipé de 256 mégaoctets de RAM pouvait potentiellement subir une inversion de bit induite par un rayon cosmique une fois par mois. Aujourd'hui, les systèmes modernes fonctionnent couramment avec 16 gigaoctets de RAM (62,5 fois plus que dans l'étude !), et le risque évolue en conséquence. Ajoutez à cela les millions de rayons cosmiques qui frappent la Terre chaque seconde, et ce n'est qu'une question de temps avant que l'un d'eux ne touche le mauvais bit au mauvais moment. Des chercheurs de l'Université Vanderbilt ont pu le confirmer, indiquant dans leurs travaux qu'une ferme de routeurs d'un fournisseur d'accès à Internet disposant de 25 gigaoctets de mémoire pourrait subir une inversion de bit toutes les 17 heures environ [2].

L'enseignement clé est qu'un événement « une fois sur un million » se produira quotidiennement si l'on effectue plus d'un million d'opérations par jour. Chez cside, nous analysons environ 10 millions de scripts toutes les 24 heures à la recherche de comportements malveillants. Même si une inversion de bit a une probabilité d'une sur 100 millions, analyser à ce volume rend ces probabilités infimes tout à fait réelles.

Bien que la mémoire de qualité professionnelle ne soit plus nécessairement exposée aux inversions de bits par rayons cosmiques grâce à l'adoption de mémoires à correction d'erreurs (ECC), capables de détecter et corriger les erreurs sur un seul bit, le matériel grand public n'est généralement pas protégé. Il est important de comprendre que « rare » dans un monde où des millions d'opérations ont lieu chaque jour signifie simplement que c'est une question de temps.

Durcissement cosmique et résilience par conception

Étant donné que les inversions de bits cosmiques relèvent des statistiques, comment concevoir des systèmes capables d'anticiper l'inattendu ? La réponse réside dans l'ingénierie de la tolérance aux pannes. Par exemple, les engins spatiaux de la NASA exécutent les calculs critiques en triple exemplaire — plusieurs processeurs effectuent la même opération, et si l'un d'eux produit un résultat différent en raison d'une inversion de bit parasite, les deux autres l'emportent. Sur Terre, la mémoire ECC peut contribuer à protéger les routeurs, les serveurs et l'infrastructure cloud contre les erreurs sur un seul bit (et même parfois détecter des erreurs sur deux bits !). Mais comme toute technologie, la mémoire ECC a ses propres limites. Elle ne protège généralement pas les registres du CPU, la mémoire GPU ou les tampons réseau. Même dans des environnements professionnels équipés de mémoire ECC, des inversions multi-bits ou des défauts au niveau logique peuvent passer inaperçus. C'est pourquoi il est essentiel d'adopter une stratégie de résilience en couches. Chez cside, nous appliquons la même philosophie à la sécurité côté client. Même si un script malformé ou un exploit en cas limite peut être rare individuellement, l'analyse de millions de fichiers JavaScript chaque jour signifie qu'ils ne sont pas rares dans l'ensemble.

En définitive, les inversions de bits par rayons cosmiques nous rappellent qu'à grande échelle, nous travaillons avec des probabilités — pas des certitudes. Un événement sur un million devient inévitable lorsque vos systèmes traitent un milliard d'opérations à la fois. Que vous construisiez une base de données, un système de vote ou un proxy navigateur côté client, la leçon reste la même : anticipez toutes les possibilités. Côté client, l'imprévisibilité croît avec le volume. C'est pourquoi vos systèmes doivent être conçus en partant du principe que rien n'est à l'abri d'une défaillance, et pensés pour résister même aux anomalies les plus improbables, d'origine cosmique ou non.

Références :

[1] https://web.archive.org/web/20070927185155/http://wiki.ael.be/index.php/ElectronicVotingRandomSpontaneousBitInversionExplained

[2] https://www.independent.co.uk/news/science/subatomic-particles-cosmic-rays-computers-change-elections-planes-autopilot-a7584616.html

Jack LaFond
Security Researcher

I'm a security engineer + security researcher at cside.

Surveillez et sécurisez vos scripts tiers

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Commencez gratuitement, ou essayez Business avec un essai de 14 jours.

cside Interface du tableau de bord affichant la surveillance des scripts et les analyses de sécurité
Related Articles
Réserver une démonstration