Stará programátorská moudrost praví, že hardware je ta část počítače, do níž můžete kopnout, pokud se porouchá. Toto přísloví už ale neplatí stoprocentně a to má obrovské důsledky. Na jedné straně je mizení hranice mezi hardwarem a softwarem pozitivní, protože rozšiřuje možnosti využití počítačových čipů. Na straně druhé to znamená změnu celého vnímání počítačové bezpečnosti.

Během posledního roku se do centra pozornosti dostaly problémy dříve nevídané – přibývá „chyb v procesorech“, a nejde přitom o skoro legrační chyby, jakou byla možnost vzniku chyby při výpočtech s plovoucí desetinnou čárkou u raných modelů procesorů Intel Pentium. Jde o bezpečnostní chyby a nedopatření a nedá se hovořit o izolovaných případech. S kritickými bezpečnostními problémy se potýkají všichni.

 

Například nové procesory Ryzen od AMD postihuje hned čtveřice bezpečnostních chyb Ryzenfall, Fallout, Chimera a Masterkey. Intel zase před nedávnem postihly katastrofy jménem Meltdown, Foreshadow, TLBleed a nejnověji PortSmash. A chyba nazvaná Spectre zasáhla většinu dnes používaných procesorů bez rozdílu výrobce či architektury, včetně čipů ARM, používaných v mobilech či tabletech, ale také v pračkách nebo televizorech.

Pyramida bezpečnosti

Chyby postihující procesory, resp. hardware obecně, jsou velice důležité a závažné. Bezpečnost informačních systémů si totiž lze představit jako jakousi pyramidu, kde bezpečnost vyšších pater záleží na bezpečnosti všech pod nimi. Například běžné aplikace musí důvěřovat operačnímu systému, na kterém běží, nemají jinou možnost, jsou na něm závislé. Pokud je nějaká chyba v něm, aplikace nemůže fungovat bezpečně.

Bezpečnostní pyramida

Nejnižším patrem téhle pyramidy a základním stavebním kamenem kybernetické bezpečnosti je právě hardware. Operační systém spoléhá na hardware. Musí, nic jiného mu nezbývá. Nemá jak si zkontrolovat, že mu hardware nelže a že dělá skutečně to, co mu bylo přikázáno.

Software, do kterého můžete kopnout

 

Historicky je hranice mezi "hardwarem" a "softwarem" jasně daná. Například můj první počítač se jmenoval PMD 85-3 a jeho procesor byl MHB 8080A, český klon Intelu 8080A. Kromě procesoru obsahoval ještě paměť (64 kB), pár podpůrných obvodů a to bylo všechno. Procesor měl čtyřicet nožiček a taktovací frekvenci 2,048 MHz. Jeho parametry jsou srovnatelné třeba s čipem ATmega328P, který je srdcem populární vývojové desky Arduino Uno. Uměl, pokud se nepletu, kolem šedesáti jednoduchých instrukcí. Instrukcí se v tomto případě rozumí jednoduchý nízkoúrovňový povel typu "sečti dvě čísla". Instrukce byly v procesoru napevno "zadrátované", dané vnitřním propojením zhruba šesti tisíc tranzistorů, které obsahoval. Mohli jste se na něj spolehnout.

Spousta lidí si myslí, že dnešní procesory jsou v podstatě stejné, jenom jsou rychlejší. Jenomže ona to není pravda. Procesor AMD Ryzen 5 1600, který mám ve svém počítači dneska, má na zhruba desetkrát větší ploše tranzistorů skoro pět miliard, taktovací frekvenci přes 3 GHz a o komunikaci se zbytkem počítače se stará 1331 vývodů. A instrukcí má tento procesor řádově více, k tomu jsou řádově složitější. Od instrukce typu "sečti dvě čísla" jsme se dostali ke komplikovaným instrukcím jako "proveď jedno kolo AES šifrování".

Vyšší rychlosti fungování počítače s moderním procesorem se dosahuje nejenom hardwarovými, ale i softwarovými prostředky. Procesory samy o sobě obsahují software. Sice se mu říká "microcode", ale ve své podstatě to je běžný programový kód. Není v procesoru napevno zadrátovaný, ale lze jej změnit. A také se to dělá, protože i tento software může obsahovat (a také obsahuje) chyby.

Procesor toho může ale umět mnohem víc. Téměř všechny procesory od Intelu vyrobené v posledních deseti letech obsahují funkci Intel Management Engine (IME). Uvnitř procesoru jsou speciální jádra, běžným způsobem neviditelná a nevyužitelná. Na nich běží pro uživatele i operační systém neviditelný systém MINIX, a to i když je počítač vypnutý, ale zůstal připojený do zásuvky. Účelem systému IME je mimo jiné usnadnit správu počítačů v korporátním prostředí, umožnit kontrolu integrity hardwaru a celkově zvyšovat bezpečnost systému. Není to žádný neschopný drobeček. Mimo jiné obsahuje kompletní kód potřebný pro komunikaci v sítích s protokoly IPv4 i IPv6 a funkční web server.

Podobné nástroje má i konkurenční AMD v podobě Platform Security Processoru (PSP), v ARM procesorech zase je TrustZone a platforma RISC-V má systém MultiZone. Jedná se o hardwarové implementace ideje, která se nazývá Trusted Execution Environment (TEE) a brání celé řadě nepříjemných útoků.

Jenomže qui custodiet ipsos custodes? V minulosti bylo v implementacích TEE (jak u Intelu, tak u AMD) objeveno několik závažných bezpečnostních chyb. Nebyly přitom čistě teoretické, ale vznikly pro ně ukázky funkčních útoků, jimiž bylo lze napadnouti běžící operační systém. Ten se takovému útoku nemohl bránit, protože nedokázal zjistit, že se děje něco nepatřičného. Funkce spojené s TEE přitom nelze vypnout nebo odstranit.

Zavirovaná klávesnice i disk

Zdrojem potenciálních bezpečnostních slabin nemusí být pouze hlavní procesor. Malých nezávislých "počítačů" se ve vašem PC schovává více. V podstatě je najdete skoro v každé komponentě. Je to například už devět let, co se světu představil představen postup, jak nahrát škodlivý software do klávesnice od Applu. Modifikací jejího firmwaru (což je zase jenom jiný název pro software) je možné zaznamenávat stisky kláves a pak je zase přehrávat, potažmo do počítače posílat něco zcela jiného, než co uživatel na klávesnici píše.

Také pevné disky už dávno nefungují na úrovni "zapiš jedničku semhle a nulu támhle", ale obsahují poměrně komplexní software, který s ukládanými daty pracuje. Dvojnásob to platí u SSD úložišť, "flashek" a paměťových karet, která v podstatě neukládají vaše data, ale jejich probabilistickou aproximaci realizovanou softwarově. A i tenhle firmware lze zneužít.

Počet potenciálně napadnutelných programovatelných čipů v počítačích i jiných zařízení rychle roste. Často je totiž jednodušší a levnější použít patřičně naprogramovaný univerzální procesor než specializovaný čip. Když Martin Malý vytvářel svůj EduShield pro Arduino, ukázalo se, že i pro ovládání sedmisegmentového displeje je čtyřikrát levnější použít univerzální mikročipy ATtiny2313 s odpovídajícím firmwarem než čip MAX7219, určený přímo k ovládání sedmisegmentových LCD displejů. Generické platformy jsou dnes tak extrémně laciné, že tento princip platí skoro univerzálně. Nejde ale jenom o cenu, softwarové řešení umožňuje budoucí rozšíření funkčnosti a rychlejší vývoj i inovace. Jenomže jej lze také zneužít.

Nevyhnutelná budoucnost

Obléknu-li si svou augurskou róbu a pokusím-li se věštit budoucnost, bude jako obvykle chmurná. Chyb v "hardwaru", ve skutečnosti však v jeho vestavěném softwaru, bude do budoucna přibývat. Dělá toho čím dál tím více, a navíc je čím dál tím snazší chyby tohoto typu objevovat. Demokratizace technologií a tím i kybernetických útoků je faktem, na který jsme si museli zvyknout i v jiných oborech. Co před lety vyžadovalo vybavení za miliony, dnes stojí tisíce.

Budeme se prostě muset naučit žít s tím, že do některých chyb se dá kopnout.