Bezpečnostní chyba v čipech Tegra. Umožňuje hacknout Nintendo Swich a nedá se opravit

29. 4. 2018

Sdílet

 Autor: Redakce

Procesory Intelu měly letos bezpečnostní problémy, procesory AMD měly bezpečnostní problémy. Z ústřední trojice počítačového hardwaru zbývá už jen Nvidia – a co byste řekli? Nvidia má nyní bezpečnostní díru v procesorech Tegra. Týká se mimo jiné Nintenda Switch, které je momentálně asi nejviditelnějším působištěm těchto čipů, ale zřejmě i řady dalších zařízení. Proti Meltdownu a Spectre (na Spectre jinak asi jádra Cortex v těchto SoC také trpí) je ovšem poněkud jiné povahy.  

Prolomení ochrany Nintenda Switch

Tuto chybu našli hackeři pokoušející se dostat pod kůži konzoli Nintendo Switch, a to zřejmě nezávisle na sobě v několika případech (fail0verflow, Katherine Temkin, zřejmě i další). Nalezená bezpečnostní díra v SoC Nvidia Tegra X1 dovoluje ovládnout zařízení velmi brzy po jeho bootu, když ještě nejsou zinicializované bezpečnostní funkce a různé ochrany. Výsledkem toho je, že hacker pak dokáže vyřadit kryptografické ověřování podpisu u spouštěného kódu a spustit vlastní zavaděč, vlastní (upravený) operační systém a pak už i jakýkoliv software. Je tím tedy rozbito DRM na celé konzoli a tato chyba se dá využít k instalaci Linuxu, provozu neschválených podomácku vyrobených her („homebrew“) a také k pirátství.

nvidia-tegra-x1-chipChyba (s formálním označením CVE-2018-6242) se nachází v režimu RCM, což je speciální mód, určený k nouzovému obnovení bricknutých zařízení tak, že se systém nabootuje z USB. RCM běžně kontroluje digitální podpis, aby se jím nedal spustit jakýkoliv kód. Jenže Tegra obsahuje chybu, která dovoluje tento požadavek obejít patřičně upraveným požadavkem na sběrnici USB, jenž díky chybě v kontrole délky dat dovoluje místo legitimního obrazu vložit jakýkoliv nepodepsaný binární kód a spustit ho. K exploitu je třeba mít na USB přichystán cílový obraz systému a pak aktivovat režim RCM.

Obraz se dá připojit prostřednictvím počítače přes USB (například z Linuxu) a režim RCM se dá v případě Nintenda Switch aktivovat několika cestami – existujícím kernel exploitem, vyřazením eMMC úložiště nebo poškozením zavaděče systému na tomto úložišti (což není moc praktické), ale také stisknutím kombinace tlačítek na konzoli. Lze jej také vyvolat spojením dvou pinů na konektoru ovladače Joy-Con. Adaptér, který toto učiní po zasunutí do konektoru, se dá jednoduše vytisknout na 3D tiskárně.

Exploit může spustit jednoduchý adaptér k zasunutí do konektoru pro JoyCon, pouze spojuje dva z pinů Exploit může spustit jednoduchý adaptér k zasunutí do konektoru pro JoyCon, pouze spojuje dva z pinů

Pro Nintendo je nepříjemné, že chyba není na existujících zařízeních opravitelná softwarem. Jelikož exploit přichází do hry velmi brzy po bootu, je postižený bootovací kód v ROM a nový firmware pro Switch jej údajně nemůže změnit. Exploit totiž přes režim RCM natáhne vlastní binárku dříve, než se aktualizovaný firmware dostane ke slovu. Nintendo tedy může díru zalátat jen novou revizí hardwaru (i když nevím, zda by to kvůli tomu Nvidia nemusela vyrobit opravenou revizi čipu Tegra X1), ale na existujících konzolí s ní už nic nesvede. Uživatelé na nich tedy budou moci tento hack používat „na věky“ a zřejmě se objeví tzv. modchipy, které díky tomu na těchto konzolích dovolí hrát pirátské kopie her.

Díra je podobná průniku do Intel Management Enginu

Podle ReSwitched a Katherine Temkin je tímto bugem kompromitován celý tzv. „root-of-trust“, jelikož kromě raného přístupu k hlavnímu CPU a bootu má hacker kompletní kontrolu i nad řídící jednotkou (Boot and Power Management Processor), tedy k něčemu jako je IME u Intelu nebo PSP u AMD. Zřejmě by tím pádem mělo být možné získat z ní citlivá data, která mají být v zařízení chráněná, například dešifrovací klíče k různým DRM. I přístup k hlavním CPU jádrům je na úrovni nejvyšších privilegií (jako TrustZone Secure Monitor).

Chybou je postižena Tegra X1 a podle ReSwitched pravděpodobně i starší verze těchto SoC. Tím se podstatně rozrůstá množství zařízení, které by se takto dala hacknout – kromě různých Nvidia Shieldů také různé starší Tablety, nebo embedded zařízení. Skupina fail0verflow kvůli tomuto informovala předem (s lhůtou 90 dní) Google, na jehož Androidu tato zařízení nejčastěji běží. Zdá se ale, že ne Nvidii a Nintendo – což lze chápat, jde-li těmto hackerům o to, dostat do konzole Linux a homebrew software, čemuž výrobci hardwaru aktivně brání. Informace o exploitu byly nakonec zveřejněny i proto, že o na něj stejně přišla řada dalších hackerů.

Demonstrace hacku od Katherine Temkin Demonstrace hacku od Katherine Temkin

Současná zařízení nelze proti hacku zabezpečit

Tegra X2 („Parker“) by zřejmě již tuto chybu neměla obsahovat, takže pro výrobce zařízení, vůči nimž by cold-boot útok jako tento byl rizikem, je jedním z řešení přejít na tuto novou verzi SoC. Existující zařízení asi není možné opravit a zatím není známo, zda Nvidia vydá opravenou revizi Tegry X1, případně dalších ještě užívaných čipů starších generací.

ICTS24

Pokud jde o bezpečnost samotného koncového uživatele například u konzole Switch, tak samotný cold-boot útok by asi neměl být zas tak rizikový. Nezdá se reálné, že by se mohlo povést ho zneužít například k útočení z škodlivých webových stránek během užívání počítače/zařízení. Úplně 100% akademická tato zranitelnost není, jelikož do režimu RCM, kde se infekce provádí, se dá procesor zresetovat softwarově záznamem do určitého registru. Pokud tedy útočník dokáže na zařízení spustit kód například exploitem Webkitu a jádra z webové stránky (což bylo na Nintendu Switch demonstrováno), má otevřenou možnost získat tímto exploitem navíc ještě o řád vyšší přístup i k řídící jednotce, v které by pak mohl svůj malware schovat. Ovšem stále je tu nutnost mít nějak připojený „payload“ ke spuštění na rozhraní USB, což vzdálený útočník obvykle nebude moci zajistit. Tudíž lze celkem klidně říci, že chyba není vzdáleně zneužitelná.

Vrásky z této chyby tedy bude mít hlavně Nintendo a potenciálně další uživatelé čipů Tegra v embedded zařízeních. Potažmo je to samozřejmě problém i pro Nvidii, těžko ale soudit, jak velký.