Spectre 1
De manier waarop Spectre 1 werkt is het makkelijkst uit te leggen aan de hand van de proof-of-concept code uit de Spectre-whitepaper.
Een aanvaller wil een waarde van een bepaalde offset, met de naam y, uit de memory range van het hier weergegeven programma afvangen. Daarvoor moet hij onder andere toegang krijgen tot array a1 en de variabele x. Aan de andere kant moet hij de branch-predictor van de cpu van tevoren zo trainen, dat hij het uitvoeren van het if-statement waarschijnlijk vindt.
Nu zet de aanvaller de variabele x op de waarde van y en wist de ingestelde waarde van a1_size uit de cache. Aangezien de nieuwe waarde van x groter is dan a1_size (oftewel 16), geldt het if-statement op regel 7 niet meer. Terwijl de cpu a1_size opnieuw uit het geheugen laadt, voert hij het if-statement dankzij de training toch nog speculatief uit. In regel 8 wordt de inhoud van de uit te lezen memory location a1[x] met 512 vermenigvuldigd om hem, vergelijkbaar met de Meltdown-aanval, tot een bepaald memory page address terug te rekenen. Deze belandt in de cache en wordt door de aanvaller (net als bij Meltdown) gebruikt om de oorspronkelijke waarde te reconstrueren.