Project Rosenbridge: Hardwarebackdoors in sommige x86-cpu's

Overzicht

Project Rosenbridge legt een hardwarebackdoor bloot in sommige desktop-, laptop- en embedded x86-processoren.

De backdoor stelt code op ring 3 (userland) in staat om processorbeveiligingen te omzeilen, waardoor ring 0 (kernel) data vrijelijk kan worden gelezen en beschreven. Hoewel de backdoor normaal gesproken uitgeschakeld is (en uitvoering op ring 0 vereist is om deze te activeren), is vastgesteld dat deze op sommige systemen standaard is ingeschakeld.

Deze repository bevat hulpprogramma's om te controleren of uw processor is beïnvloed, tools om de backdoor te sluiten indien aanwezig, en het onderzoek en de instrumenten die zijn gebruikt om de backdoor te ontdekken en te analyseren.

De Backdoor

De rosenbridge-backdoor is een kleine, niet-x86 core die naast de hoofd-x86 core in de CPU is ingebouwd. Deze wordt geactiveerd door een controlebit in een model-specific register (MSR) en vervolgens omgeschakeld met een launch-instruction. De ingebedde core ontvangt vervolgens commando's, verpakt in een speciaal geformatteerde x86-instructie. De core voert deze commando's uit — wat we de 'Deeply Embedded Instruction Set' (DEIS) noemen — waarbij alle geheugenbeschermingen en privilege-controles worden gepasseerd.

Hoewel de backdoor kernel-toegang zou moeten vereisen voor activatie, is waargenomen dat deze op sommige systemen standaard is ingeschakeld, waardoor elke onbevoorrechte code de kernel kan wijzigen.

De rosenbridge-backdoor is volledig verschillend van andere publiek bekende coprocessoren op x86-cpu's, zoals de Management Engine of de Platform Security Processor. Deze backdoor is dieper ingebed dan enige bekende coprocessor; hij heeft niet alleen toegang tot al het geheugen van de CPU, maar ook tot het registerbestand en de executiepipeline.

Beïnvloede Systemen

Het wordt aangenomen dat alleen VIA C3-cpu's door dit probleem worden beïnvloed. De C-serie processoren is gericht op industriële automatisering, point-of-sale (POS), geldautomaten (ATM) en hardware voor de gezondheidszorg, evenals diverse consumenten-desktops en laptops.

Toekomstperspectief

De reikwijdte van deze kwetsbaarheid is beperkt; generaties cpu's na de C3 bevatten deze functie niet meer.

Dit werk is gepubliceerd als een casestudy en gedachte-experiment om te illustreren hoe backdoors kunnen ontstaan in steeds complexere processoren, en hoe onderzoekers en eindgebruikers dergelijke functies kunnen identificeren. De tools en het onderzoek die hier worden aangeboden, dienen als startpunt voor nog diepgaander onderzoek naar processor-kwetsbaarheden.

Uw CPU Controleren

Om te controleren of uw CPU is beïnvloed, kunt u de volgende stappen uitvoeren:

git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check

Belangrijke opmerkingen:

  • Het meegeleverde hulpprogramma moet worden uitgevoerd op baremetal (niet in een virtuele machine) en bevindt zich in een alpha-fase.
  • Het kan leiden tot crashes, panics of het vastlopen van systemen die de backdoor niet bevatten.
  • De tools zijn ontworpen voor een specifieke processorfamilie en core; indien de backdoor zelfs maar licht is gewijzigd ten opzichte van de onderzochte vorm, zullen de tools deze mogelijk niet detecteren.

De Backdoor Sluiten

Sommige systemen hebben de backdoor standaard ingeschakeld. Als de stappen bij 'Uw CPU Controleren' uitwijzen dat uw CPU kwetsbaar is, kunt u een script installeren om de backdoor vroeg in het bootproces te sluiten:

cd fix
make
sudo make install
reboot

Let op: Zelfs met deze maatregel kan een aanvaller met kernel-toegang de backdoor opnieuw inschakelen. Dit script is bedoeld als uitgangspunt voor het corrigeren van het probleem tijdens het bootproces, maar vereist mogelijk aanpassingen voor verschillende systemen.

Tools en Technieken

In dit onderzoek is uitgebreid gebruikgemaakt van de sandsifter-utility voor het ontdekken van onbekende instructies. De volgende tools zijn ontwikkeld of gebruikt:

  • asm: Een assembler voor de Deeply Embedded Instruction Set (DEIS). Het converteert programma's geschreven in de aangepaste rosenbridge-assembly naar x86-instructies die, na de launch-instruction, commando's naar de verborgen CPU-core sturen.
  • esc: Een proof-of-concept voor het gebruik van de rosenbridge-backdoor voor privilege-escalatie.
  • fix: Een ruwe schets voor het sluiten van de kwetsbaarheid op beïnvloede systemen, voor zover mogelijk via updates van het model-specific register.
  • fuzz: Een verzameling tools gebruikt om zowel de x86- als de rosenbridge-cores te 'fuzzen'. Dit is gedaan om de onbekende launch-instruction en bridge-instruction te isoleren en het instructieformaat van de rosenbridge-core te bepalen.
  • deis: De fuzzer gebruikt om de effecten en mogelijkheden van de verborgen CPU-core te verkennen.
  • wrap: Een vereenvoudigde versie van de sandsifter-fuzzer, gebruikt om de bridge-instruction te identificeren die commando's van de x86-core naar de verborgen rosenbridge-core stuurt.
  • exit: In een vroeg stadium van het onderzoek werd gezocht naar een exit-sequentie om terug te schakelen naar de x86-core na een DEIS-reeks. Dit traject is gestaakt nadat een processor werd gevonden die geen dergelijke sequentie vereiste.
  • manager: Een verzameling Python-utilities ontworpen om fuzzing-taken te monitoren en beheren over een netwerk van workers.
  • kern: Een verzameling hulpfuncties om het kernelgeheugen en de registers te monitoren op wijzigingen veroorzaakt door gefuzzde DEIS-instructies.
  • lock: Utilities om de rosenbridge-backdoor te vergrendelen of te ontgrendelen.
  • proc: Een tool om patronen uit fuzzing-logs te identificeren en zo klassen van DEIS-instructiegedrag te bepalen.
  • test: Een tool die vroeg in het onderzoek is gebruikt om de architectuur van de verborgen core te proberen te identificeren door bekende RISC-instructies uit te voeren.
  • util: Een alpha-tool om te detecteren of een processor is beïnvloed door rosenbridge.

Referenties

  • (TODO: link naar whitepaper)
  • (TODO: link naar slides)

Disclaimer

De details en implicaties in dit werk zijn gevolgtrekkingen en meningen van de auteurs, afgeleid uit het beschreven onderzoek. Het onderzoek is uitgevoerd met als doel een waargenomen beveiligingslek op de beschreven CPU's te identificeren en op te lossen. VIA-processoren staan bekend om hun lage energieverbruik en uitmuntendheid in embedded designs; wij geloven dat de beschreven functionaliteit te goeder trouw is gemaakt als een nuttige functie voor de embedded markt, en onbedoeld is ingeschakeld gebleven op sommige vroege generaties van de processor. Er wordt geen kwaadaardige opzet geïmpliceerd.