Kort samengevat: cosmic ray bit flips
- Kosmische straling veroorzaakt single-event upsets (SEU's) die bits in geheugen omdraaien met een frequentie van ongeveer één per gigabyte per maand op zeeniveau. Op planeetschaal is dit geen zeldzame curiositeit.
- Beroemde bit-flip-incidenten omvatten een Belgische kiezer die 4.096 stemmen te veel toegewezen kreeg (2003) en de 'Upwarp'-skip in de Super Mario 64-speedrun veroorzaakt door één omgedraaide bit. Beide zijn consistent met de SEU-waarschijnlijkheid van kosmische straling bij de blootstellingsduur.
- Op webapplicatieschaal zijn cosmic-ray bit flips een van de kleine restoorzaken van niet-reproduceerbare bugs. ECC-geheugen, checksummed-storage en idempotente request-handling zijn de praktische mitigaties.
In 2013 was de competitieve Super Mario 64-speedrunner DOTA_Teabag bezig met Tick Tock Clock, een level dat berucht is omdat het zelfs de beste spelers genadeloos afstraft door een reeks lastige sprongen. Terwijl hij zijn weg zocht door het level, schoot Mario plotseling recht omhoog door de vloer, waarmee een heel gedeelte van het level werd overgeslagen en DOTA_Teabag kostbare seconden won.
Video over het Super Mario 64-bitflipincident
TTC Upwarp: Ceiling Warp vs Byte Change
De speedrunningcommunity, die al tientallen jaren Super Mario 64 speelt en tot op de bodem uitzoekt, stond versteld. Er werd een beloning uitgeloofd om de glitch te reproduceren; sommige speedrunners beweerden dat DOTA_Teabag de cartridge had "geschud" (een manier om een Nintendo 64-spel soms voorspelbaar te glitchen door de hoek van de gamecartridge licht te veranderen). Het mysterie werd opgelost toen YouTuber en gerenommeerd videogame-glitchjager pannenkoek12 (vertaald 'Pancake12') ontdekte dat één enkele bit in het geheugen van de Nintendo 64 de oorzaak was. De bitflip vond plaats op 0xC5837800, het adres dat verantwoordelijk is voor Mario's verticale positie. De binaire waarde veranderde van 1100 0101 naar 1100 0100, en door buitengewoon geluk was dit precies de verandering die nodig was om Mario naar een hoger platform te teleporteren.
Wat veroorzaakte dit in de eerste plaats? Alle aanwijzingen wijzen op een kosmische-straling-bitflip: een willekeurige fout in computerchips, veroorzaakt door een hoogenergetisch deeltje uit de ruimte dat op precies het verkeerde moment een systeem raakt.

Wat is een kosmische-straling-bitflip?
Een kosmische-straling-bitflip (ook wel een "single-event upset" of SEU genoemd) treedt op wanneer een losgeslagen ioniserend deeltje van kosmische straling uit de ruimte een enkele geheugencel of transistor raakt en een binaire bit omzet van 0 naar 1, of van 1 naar 0. Deze bitflips kunnen een zachte fout veroorzaken die geen fysieke schade aan de hardware achterlaat, maar wel opgeslagen data in het geheugen of logica kan wijzigen, waardoor het gedrag van applicaties verandert of zelfs beveiligingsfuncties worden uitgeschakeld.
De Super Mario 64-speedrun is niet het enige gedocumenteerde geval waarbij een kosmische gebeurtenis gevolgen had op aarde. Tijdens de Belgische verkiezingen van 2003 ontving een onbekende kandidaat plotseling exact 4.096 extra stemmen op de elektronische stemmachines van het land, schijnbaar uit het niets. De fout werd alleen ontdekt omdat ze meer stemmen had ontvangen dan het aantal kiezers, wat wiskundig onmogelijk is.
Na onderzoek concludeerden onderzoekers dat een kosmische straal een enkele bit op positie 13 in het geheugen van de stemmachine had omgeklapt, waardoor de kandidaat 4.096 extra stemmen kreeg [1]. In binaire getallen verdubbelt elke bit de waarde, dus de bit op die positie werd berekend als 2^12, ofwel precies 4.096.
Zeldzaam betekent niet onmogelijk, zeker niet op schaal
Kosmische-straling-bitflips zijn ongelooflijk zeldzaam per bit, maar ze zijn niet onmogelijk. In 1996 schatten onderzoekers van IBM dat een gemiddelde desktop met 256 megabyte RAM mogelijk één kosmisch-straling-geïnduceerde bitflip per maand kon ervaren. Spoel door naar vandaag, waar moderne systemen doorgaans draaien met 16 gigabyte RAM (62,5 keer meer dan in de studie!), en het risico schaalt dienovereenkomstig. Combineer dat met miljoenen kosmische stralen die elke seconde de aarde raken, en het is slechts een kwestie van tijd voordat er één de verkeerde bit op het verkeerde moment raakt. Onderzoekers aan de Vanderbilt University bevestigden dit: hun onderzoek wees uit dat een routerpark van een internetprovider met 25 gigabyte geheugen tot wel elke 17 uur een bitflip kan ervaren [2].
Een "één op een miljoen"-gebeurtenis zal dagelijks plaatsvinden als je dagelijks meer dan een miljoen dingen doet. Bij cside scannen we dagelijks ruwweg meer dan 10 miljoen scripts op kwaadaardig gedrag. Zelfs als een bitflipfout een kans van één op 100 miljoen heeft, betekent scannen op dat volume dat deze onmogelijk lijkende kansen in werkelijkheid heel reëel zijn.
Hoewel geheugen van enterprise-kwaliteit dankzij de adoptie van foutcorrigerend geheugen (error-code correcting memory), dat enkelbitsfouten vaak kan detecteren en corrigeren, mogelijk niet meer vatbaar is voor kosmische-straling-bitflips, is consumentenhardware doorgaans niet beschermd. In een wereld waarin miljoenen acties plaatsvinden, betekent 'zeldzaam' simpelweg dat het slechts een kwestie van tijd is.
Kosmische weerbaarheid en het omarmen van veerkracht
Gegeven dat kosmische bitflips een kwestie van statistiek zijn, hoe bouw je systemen die het onverwachte verwachten? Het antwoord ligt in het ontwerpen voor fouttolerantie. NASA-ruimtevaartuigen voeren kritieke berekeningen bijvoorbeeld drievoudig uit: meerdere processors voeren dezelfde operatie uit, en als één daarvan door een losgeslagen bitflip afwijkt, stemmen de andere twee het proces weg. Dichter bij huis kan ECC-geheugen een rol spelen bij het beschermen van routers, servers en cloudinfrastructuur tegen enkelbitsfouten (en soms zelfs tweebitsfouten detecteren!). Maar zoals alles heeft ECC-geheugen zijn eigen beperkingen. Het beschermt doorgaans niet het CPU-register, het GPU-geheugen of de netwerkbuffers. Zelfs in enterprise-omgevingen met ECC-geheugen kunnen meerbitsflips of fouten op logicaniveau onopgemerkt blijven. Daarom is een gelaagde veerkrachtstrategie belangrijk. Bij cside passen we dezelfde filosofie toe op client-side beveiliging. Ook al is een misvormd script of een edge-case exploit individueel zeldzaam, het dagelijks scannen van miljoenen JavaScript-bestanden betekent dat ze in totaal niet zeldzaam zijn.
Op schaal zijn kosmische-straling-bitflips een kwestie van waarschijnlijkheid, niet van zekerheid. Een kans van één op een miljoen wordt onvermijdelijk zodra een systeem miljarden operaties uitvoert, of dat systeem nu een database, een verkiezingsmachine of een client-side browser is. Aan de client-side schaalt onvoorspelbaarheid met volume, dus beveiligingssystemen moeten ervan uitgaan dat er uiteindelijk iets misgaat, en zo gebouwd zijn dat ze dat opvangen wanneer het gebeurt.
Referenties:









