Skončil nám červenec, ale ještě se vrátíme k jeho událostem. Tento rok hodně vystoupil do popředí fakt, že hardware včetně procesorů má také svoje chyby a některé jsou bohužel bezpečnostními riziky a musí se také nějak ošetřit, pokud nechcete těmito zranitelnostmi být ohroženi. Už se z těchto věcí pomalu stávají banální zprávy, ale opět tu máme dva další problémy spojené s procesory.
První souvisí s chybou Spectre ze začátku roku. Jak si asi pamatujete, tento bohužel hodně dalekosáhlý problém a exploit byl takzvaně lokální chybou. Pokud jste ho tedy chtěli zneužít, museli jste nějak spustit kód na cílovém počítači či serveru – i kdyby to třeba byl javascript ve webovém prohlížeči.
To je v kontrastu s takzvanými vzdálenými zranitelnostmi, kterými se dá nabourat nebo ovládnout systém skutečně vzdáleně – například pouze tím, že k němu dorazí zmanipulovaný síťový paket, komunikaci nebo požadavek. Vzdálené zranitelnosti jsou logicky o hodně nepříjemnější, protože při jejich existenci stačí, aby váš server byl dosažitelný ze sítě, a už vás může zkusit napadnout prakticky kdokoli.NetSpectre: spekulativní útoky už jsou i vzdáleně zneužitelnou hrozbou
Bohužel se ukazuje, že Spectre lze také zneužít tímto stylem, tedy vzdáleně. Podařilo se to demonstrovat výzkumníkům z technické univerzity v Grazu, mezi nimiž byl i jeden z původních objevitelů chyby Spectre. Jde o kombinaci spekulativního a timing útoku jako u původní Spectre, ale v tomto případě nepotřebuje spuštění škodlivého kódu na cílovém počítači. Celý princip se podařilo provést čistě síťovou komunikací s cílovým serverem – a jediným prostředkem je síťové připojení. Problém byl demonstrován s procesorem Intel, ale bude zneužitelný i na jiných.
Útok nazvaný NetSpectre je hodně komplikovaná věc (popravdě se mi ani nechce věřit, že to může fungovat, ale jak jsem si střílel v aprílovém článku, hackeři bohužel dokáží uplést bič z víte čeho, to bohužel apríl nebyl). Zjednodušeně funguje tak, že útočník se snaží skrze požadavky na server jeho CPU donutit k tomu, aby spekulativně zkusilo přečíst nějaká data či podniknout nějakou operaci a zároveň ho zahlcuje jinými požadavky, aby mu vyprázdnil cache. Toto připravuje půdu pro timing útok. Ten zde spočívá v tom, že útočník doslova měří čas, který zabere serveru, než odpoví na požadavky. Po každém takovém pokusu o měření je třeba vytlouct cache procesoru oněmi zahlcujícími požadavky předtím, než lze podniknout další pokus. Tudíž je k provádění timing útoku třeba hodně času.
Data lze krást pouhým sledováním rychlosti odezvy
Přes tyto komplikace se zdá se výzkumníkům tímto timing útokem čistě statisticky z měření doby odezvy podařilo skutečně odvodit data z paměti serveru a údajně lze takto alespoň za určitých okolností číst libobovolná data, což zní až apokalypticky. Nebezpečnost útoku je snížena tím, že extrakce má hodně pomalé tempo (data unikají rychlostí řádově bitů za hodinu). Ale pokud by útok byl použit proti nějakému hodně cennému cíli (strategické firmy, úřady), není nemyslitelné, že by ho útočník mohl skutečně zkoušet třeba několik měsíců. A některé hodně citlivé věci, třeba jako certifikáty nebo šifrovací klíče, jsou docela krátké. Není úplně jasné, jak si snadno útočník u tohoto útoku pomocí měření odezvy dokáže „vybrat“, která data tímto z cíle vycucnout, ale i jen pouhá teoretická možnost, že toto lze, je dost dalekosáhlým problémem.
Spectre v tomto útoku přichází do hry tím, že požadavky útočníka míří na nějaký bounds check, tedy kontrolu přístupu. Útočník nejprve zasílá požadavky, která vedou na data, ke kterým mu server povolí přístup, čímž se předtrénuje predikce. Pak zadá požadavek na data, která chce ukrást a jsou mimo povolený rozsah, ale spekulace díky předtrénování CPU chybně přístup povolí. Z variant Spectre tedy NetSpectre využívá tu první, Spectre v1 „Bounds Check Bypass“. Podorbnosti můžete najít v referátu zde.
Odolnost proti timing útokům bude tedy nutno začít striktně implementovat prakticky do všech síťových služeb a rozhraní. Již u lokálního Spectre se psalo o tom, že bude bolehlavem, s kterým se budeme potýkat dlouho; teď s implikacemi chyby NetSpectre použitelné přes síť už je to teprve silné kafe. Věru bych nechtěl mít na starost se s těmito problémy potýkat coby programátor/architekt operačních systémů a síťového softwaru.
Nalezeny další díry v Intel ME
NetSpectre je zásadní problém, ale naštěstí asi zatím dost akademický a není asi příliš velkou hrozbou pro nás běžné uživatele (pokud nemáme na starosti centrální banku, jaderné hlavice nebo podobné citlivé věci). Aby to bylo pestřejší, objevil se v červenci také problém s bezpečností, který je naopak spíš jednoduchého rázu. Tentokrát jde o problém jen Intelu – byly totiž odhaleny další díry způsobené softwarovými chybami v jeho subsytému Management Engine (ME), který tvoří privilegovanou řídící jednotku všech počítačů běžících na procesorech Intel. Útoky na ME jsou nebezpečné proto, že jdou pod úroveň běžně viditelného operačního systému a CPU a probíhají pod povrchem, kam uživatel nemůže vidět.
Spuštění libovolného kódu v AMT
Intel před několika dny oznámil, že v ME byly odhaleny celkem čtyři různé chyby, které v systému vytvářely zranitelná místa, která útočníkovi umožňují spustit libovolný škodlivý kód přímo uvnitř ME a tím ho ovládnout. Chyby mají označení CVE-2018–3627 (Intel k ní má dokumenty zde), CVE-2018–3628, CVE-2018–3629 a CVE-2018–3632 (na webu Intelu viz zde). Chyby 27 a 32 vyžadují lokální administrátorský přístup, ale chyby 28 a 29 lze napadnout bez administrátosrkých práv a po síti, tedy útokem na vzdálené administrační rozhraní počítače. počítačů, které mají technologie AMT/vPro, jde tedy o velký problém. Napadení může provést jakýkoliv uživatel, který se dostane do stejné sítě se zranitelným počítačem.
Tyto chyby Intel opravil v nových verzích firmwaru pro Management Engine, čísla verzí, na které je třeba updatovat, můžete vidět v následujících tabulkách. Chyby odhalil interní audit, takže je naštěstí nižší pravděpodobnost, že je někdo již tajně zneužíval. Zranitelnosti se týkají jak vidíte procesorů od generace Haswell až po nejnovější Coffee Lake a Xeony na bázi čipu Skylake-SP. Bohužel se zdá, že tento problém postihuje i starší procesory, ale třeba Sandy Bridge a Ivy Bridge už Intel neopravil, protože už jsou příliš staré a mimo podporu. Zdá se, že problémy by se mohly táhnout i dál přes Nehalem k procesorům Core 2 Duo.
Jen chyba CVE-2018–3627 má omezenější působnost, trpí jí jen procesory Skylake a novější. Mají totiž novější architekturu ME používající integrovaná jádra Quark s architekturou x86 a operační systém Minix, zatímco ME v předchozích generacích CPU/čipsetů běželo na licencované platformě ARC a se systémem ThreadX.
Těmito chybami by asi měly být ohrožené jen firemní počítače a notebooky, které poskytují možnosti správy pomocí AMT. Pokud taková PC máte ve firmě, úřadu nebo doma, je třeba jim aktualizovat firmware, aktualizaci by měl poskytnout výrobce. Lenovo je například údajně vypustilo dopředu už v dubnu, Dell v červnu. Ale firemní PC a notebooky se často prodávají repasované na běžném trhu, takže pokud máte takový počítač, je také třeba ho updatovat. Nepříjemné je, pokud je to stroj se staršími procesory, které už opravu nedostaly. Jestliže jej ale používáte doma, mělo by stejně být nejlepší funkce vzdálené správy a přístupu (Intel AMT) deaktivovat.