Hlavní navigace

Útok Platypus: měření spotřeby jako postranní kanál k citlivým datům

13. 11. 2020
Doba čtení: 5 minut

Sdílet

Nový typ útoku kombinuje data z rozhraní Running Average Power Limit (RAPL) se statistickými metodami a umí dolovat i šifrovací klíče skrze SGX. V bezpečí nejsou desktopy, notebooky, servery ani AMD.

S velkým výkonem přichází i velké ztráty

Platypus je poměrně novátorská a ve své podstatě šikovná metoda postranního útoku na procesory Intel. S její pomocí výzkumníci z několika institucí dokázali za pomoci statistické analýzy vlivu jednotlivých kroků výpočtu na vykazovanou spotřebu CPU extrahovat šifrovací klíče.

Za touto metodou útoku stojí pět výzkumníků z Graz University of Technology a po jednom z CISPA Helmholtz Center for Information Security a University of Birmingham.

Středobodem rozhraní Intel RAPL

Čistě teoreticky vzato by tento princip bylo možné uplatnit na jakýkoli počítač, klidně desítky let starý. Jen by bylo nesmírně náročné měřit spotřebu nějakým vnějším přístrojem, přesnost měření jako z hlediska hodnoty, tak časového rozlišení, by činila tento úkon prakticky nerealizovatelným.

Procesory Intel však od generace Sandy Bridge (32nm tock CPU uvedená v lednu 2011 s modelem Core i7–2600K ad.) disponují rozhraním Running Average Power Limit (RAPL), které umožňuje monitorovat a řídit spotřebu CPU a DRAM softwarovou cestou. CPU tak mohou samy měřit vlastní spotřebu a s aktuálním ovladačem pro Linux má k těmto datům přístup i neprivilegovaný uživatel bez nějakých vyšších oprávnění.

Rozhraní je implementováno s poměrně malou šířkou pásma 20 kHz (oproti GHz u osciloskopů), navíc měřená data jsou poskytována jako klouzavý průměr. Obojí stěžuje rychlou identifikaci konkrétních dat dle spotřeby CPU. Proto celý mechanismus útoku Platypus vyžaduje vysoké množství opakujících se kroků, aby se nasbíralo opravdu hodně dat, která bude možné statisticky vyhodnotit. Zjednodušeně řečeno si Platypus potřebuje udělat konkrétní „spotřebový profil“ CPU v konkrétní konfiguraci konkrétního stroje.

Výzkumníci tvrdí a dokazují v experimentech, že metoda nazvaná Platypus dokáže spárovat nuance v měření spotřeby skrze RAPL s rozdílnými instrukcemi a rozdílnými Hammingovými vahami operandů a využití paměti. Platypus dále může usuzovat na tok aplikačních dat uvnitř cache, prolamovat mechanismus KASLR, získávat klíče AES-NI z enkláv SGX atd.

Speciálně veselá je tato technika u SGX. S touto bezpečnostní sadou Intel dal (některým) svým procesorům schopnost vytvářet izolované enklávy, takže i při kompromitování operačního systému mohou aplikace běžet v bezpečném prostoru (tohle už teď prosím neberte doslovně).

Jenže jak autoři techniky Platypus ilustrují, díky využití přesného řízení vykonávání SGX-Step (viz GitHub projektu) mohou obejít omezení přesnosti RAPL a dokola pouštět stále tytéž instrukce uvnitř dané enklávy SGX. Pak už opět nastoupí ona statistika a autoři tak třeba získávají RSA klíče zpracované s mbed TLS přímo z SGX enklávy.

Jak se proti Platypus chránit?

Ochrana je jednoduchá: opravit RAPL. Na Linuxu poskytuje neprivilegovaný přístup k RAPL čítačům přímo framework powercap. Na světě už je aktualizace, které tento přístup revokuje a tudíž odstřihne možnost získávat z CPU data o spotřebě.

Metoda samozřejmě nechrání proti těžení RAPL dat uživatelem privilegovaným na systému s podporou SGX. Na to pro změnu přináší řešení sám Intel, který vydal aktualizace mikrokódu CPU, které skrývají měřené hodnoty spotřeby, takže výše popsaná cesta s SGX-Step nefunguje.

Tak či onak je ale klíčové, aby uživatelé a správci systémů aktualizovali svůj OS, případně mikrokód CPU.

Chyba se netýká jen Intelu

Intel vydal přehled produktů, které jsou Platypusem napadnutelné.

V závěru své práce autoři shrnují i stav pro ostatní výrobce CPU:

tip obecný root

  • AMD: od generace Zen (první Ryzeny / Threadrippery / EPYCy) AMD také poskytuje RAPL rozhraní ve svých CPU. Její dokumentace k implementaci RAPL ale není dostatečná, aby bylo možné vyvodit jednoznačné závěry o vlivu. Autoři provedli určitá měření s procesory Ryzen 7 Pro 3700U (mobilní), Ryzen 7 3700X (desktop) a EPYC 7401P (server) a rozdíly ve spotřebě pro jednotlivé CPU instrukce jsou měřitelné. Hlavním rozdílem AMD implementace RAPLu je, že hodnoty jsou poskytovány po jednotlivých jádrech, nikoli pro celé CPU, což výrazně snižuje šum zkreslující měření a umožňuje efektivněji analyzovat hodnoty. Útočník aktuálně ale potřebuje práva roota pro čtení hodnot. Na starších CPU AMD pak lze využít předchozí způsob čtení dat o spotřebě, ale to autoři studie nemohli z hlediska kvality/přesnosti dat ověřit – oproti Zenu konstatují, že pro starší CPU jsou hodnoty přístupné i běženému uživateli.
  • ARM: na možná nejrozšířenější platformě světa je k dispozici rozhraní ARM Energy Probe, tříkanálový voltmetr, který ale vyžaduje fyzický přístup k zařízení. Různé desky s ARMy ale obsahují přidané měření spotřeby. Využitelnost více zpráva nerozebírá.
  • Nvidia: kalifornský výrobce zejm. GPU má platformu Jetson TX2, která využívá tříkanálové monitory INA3221 poskytující data o proudu (mA), napětí (mV) a odběru (mW) na jednotlivých napájecích větvích. Údaje jsou neprivilegovaně k dispozici skrze sysfs.
  • IBM POWER: v rámci současné architektury POWER 9 poskytuje IBM dedikovaný mikrořadič přímo na čipu, který umožňuje vzorkování různých napěťových hodnot (zpráva hovoří o měření analogových hodnot). Neposkytuje měření jednotlivých jader.
  • Marvell: u platformy ThunderX2 poskytuje Marvell jaderný ovladač, který zpřístupňuje hodnoty z hardwarových senzorů (mj. napětí, příkon). Hodnoty lze získávat pro všechna jádra společně v rámci SoC, dále pak pro SRAM, paměť a různé periferie.
  • Ampere: SoC Altra mají k dispozici ovladač pro hardwarový monitoring poskytující hodnoty v neprivilegovaném režimu (teploty, příkon; lze číst pro CPU i IO)
  • Hygon: rodina procesorů Hygon Dhyana CPU má podporu RAPL, která je přístupní na Linuxu přes perf a jako AMD podporuje čtení hodnot přímo pro jednotlivá jádra.

Nejen Linux je rizikový

Na Linuxu je problémem Intelu podpora ve frameworku powercap, jak zaznělo. Na Windows a macOS je pro stejný efekt potřeba mít nainstalován balík Intel Power Gadget. Prezentovaná metoda útoku tak implicitně funguje pouze na Linuxu, ač ji nelze vyloučit i na ostatních OS. Z hlediska útoku přes Intel SGX je jedno, jaký operační systém na stroji běží.

Podrobnosti k metodě Platypus shrnuje PDF na domovském webu. Intel k věci vydal Security Advisory, stejně tak je k dispozici pro Xen. Platypus je hezké jméno, nicméně chyba je také formálně označena jako CVE-2020–8694 (Mitre, NIST, Red Hat, Ubuntu, SUSE, Debian, …) a CVE-2020–8695 (Mitre, NIST, Red Hat, Ubuntu, SUSE, Debian, …).

Autor článku

Příznivec open-source rád píšící i o ne-IT tématech. Odpůrce softwarových patentů a omezování občanských svobod ve prospěch korporací.