Představte si, že útočník může na dálku vypnout řídicí systém dopravního letadla nebo luxusních automobilů. A teď si představte, že si takový útočník může vybírat hned z několika chyb, které mu umožní vládu nad systémy v elektrárnách, továrnách nebo nemocnicích převzít. Není to science fiction, ale realita. Bezpečnostní firma ARMIS tento týden zveřejnila zprávu o jedenácti kritických zranitelnostech v operačním systému VxWorks. I když jeho jméno nejspíše slyšíte poprvé, jde o důležitý systém, který ovlivňuje existenci milionů lidí. Používá se totiž v řadě kritických zařízení, včetně zdravotnických přístrojů a průmyslových řídicích systémů.

Nejde přitom o to, že nalezené chyby nelze opravit. Problém je v tom, že je komplikované opravený software do postižených zařízení dostat.

Operační systém s okamžitou odezvou

Když se řekne "operační systém", většina lidí si představí Windows. Ti informovanější pak ještě Mac OS, Linux, Android a iOS. Smyslem operačního systému je obecně sloužit jako rozhraní mezi běžným aplikačním softwarem a hardwarem, na kterém běží. To je ale velké zjednodušení.

Běžné operační systémy, ty vyjmenované výše a mnohé další, toho umí opravdu hodně, ale nejsou úplně rychlé. Počítají s tím, že na nich běží více aplikací současně a sice se na všechny časem dostane, ale ten "čas" může někdy být docela dlouhý. Pokud je systém zaneprázdněn jednou aplikací, jiná musí čekat. To je zcela vyhovující pro běžné použití počítače uživatelem a většinu scénářů. Nicméně pokud má počítač řídit nějaký speciální hardware, který je citlivý na časování instrukcí, běžné operační systémy použít nelze.

V takovém případě se používají systémy označované jako RTOS - Real Time Operating Systems. Jde o speciální typ operačního systému, který je zkonstruován takovým způsobem, aby garantoval dobu odezvy a pracoval z hlediska času konzistentně a spolehlivě.

VxWorks pro BMW i Dreamliner a Oportunity 

VxWorks, vyvíjený od osmdesátých let firmou Wind River Systems, je jeden z nejpoužívanějších operačních systémů typu RTOS. Nabízí (relativně) komfortní prostředí pro vývoj embedded softwaru a podporuje běžné technologie a protokoly jako USB, Bluetooth a BLE, CAN bus (typ sběrnice používaný zejména v automobilovém průmyslu), fronty pro předávání zpráv, podporu běžných souborových systémů a síťové komunikace.

Tento operační systém tak najdete v automobilech (např. BMW, Hyundai, Renault, VW), průmyslových robotech (ABB, Kuka, Stäubli, Yaskawa), síťových prvcích (3Com, Nortel, Linksys, Ericsson, Motorola, Nokia, Samsung, Alcatel-Lucent, Cisco...) nebo satelitních telefonech Thuraya. Zajímavostí je, že se používá i ve vesmírném programu. Využívá ho FGST (Fermi Gamma-ray Space Telescope) i plánovaný nástupce Hubbleova teleskopu, JWST (James Webb Space Telescope). VxWorks řídí i roboty Sojourner, Spirit a Opportunity na Marsu nebo modul Dragon od SpaceX. Poněkud blíže k Zemi je součástí common core systému (základní počítačový systém letadla, který se skládá z 80 až 100 aplikací kontrolujících avioniku i další prvky výbavy letounu) v Boeingu 787 Dreamliner, helikoptéře AH-64 Apache nebo bezpilotních letounech X-47B nebo Lockheed Martin RQ-170 Sentinel.

Jedenáct chyb v síťovém stacku

Analýza společnosti Armis nalezla v systému VxWorks šest kritických zranitelností, které mohou vést k vykonání kódu útočníka (RCE, remote code execution), a dalších pět, jež lze využít k DoS útokům, krádeži informací a vyvolání logických chyb. Všechny chyby se nacházejí v síťové části systému (network stack) TCP/IP.

TCP/IP je protokol, který se používá pro komunikaci po počítačových sítích. Operační systémy obsahují jeho implementaci, protože musí zajišťovat síťovou komunikaci pro aplikace na nich běžící. Tato implementace je z hlediska bezpečnosti extrémně důležitá. Jde o část systému nevyhnutelně vystavenou do okolí a nízkoúrovňovou - (téměř) všechny ostatní funkce systémů na ní závisí. Když po síti systému přijde zpráva, která je špatně zformátovaná, musí si s tím síťový stack umět nějak poradit a nenechat se tím "shodit".

Běžné operační systémy si v tomto ohledu své vybraly už v devadesátých letech. Pamětníci dodnes vzpomínají na "ping of death", chybu, která umožnila shodit Windows 95 a Windows NT nesprávně zformátovaným dotazem protokolu ICMP. Podobného druhu jsou i chyby objevené v IPnetu, síťovém stacku ve VxWorks. Má-li útočník možnost se zařízením komunikovat po síti, má možnost chyby využít s potenciálně kritickými následky.

Zranitelnost na věčné časy

Ve světě kybernetické bezpečnosti se hodně hovoří o zero-day zranitelnostech. Jde o chyby, o kterých výrobce neví, a měl tedy "nula dnů" na to, aby připravil opravu. Uvedené chyby ve VxWorks do této kategorie nepatří. Analytici, kteří je odhalili, výrobce systému o problémech informovali se standardním tříměsíčním předstihem před zveřejněním. Problém je ale v tom, že mnoho zařízení s VxWorks nikdy nezíská aktualizace, které by chyby opravily.

Průmyslové RTOS nefungují jako běžné operační systémy, které se aktualizují nezávisle na nainstalovaném softwaru. Opravy je nutné připravit pro konkrétní aplikace operačního systému a je na výrobci odpovídajícího zařízení, aby vydal novou verzi firmwaru, která bude obsahovat i opravený RTOS. A ani ve chvíli, kdy výrobce zařízení vydá nový firmware, ještě není vyhráno, protože nainstalovat aktualizaci firmwaru na průmyslové řídicí systémy není jednoduché - v mnoha případech je to podobně složité jako u robota na povrchu Marsu.

"V roce 2018 jsme zkoumali výskyt již opravených zranitelností ve VxWorks a došli jsme k závěru, že tyto 'zranitelnosti nulového dne' se mění ve 'zranitelnosti na věky'," řekl pro Wired Ang Cui, DEO společnosti Red Balloon, která se zabývá bezpečností embedded systémů. "Je to tím, že mnoho zasažených zařízení je součástí kritické infrastruktury. Tiskárny nebo telefony lze zazáplatovat, ale většina průmyslových zařízení nikdy opravena nebude."

Mýtus vzduchové mezery

Staré síťařské pravidlo říká, že "pokud tě to může zabít, nepřipojuj to k síti". VxWorks RTOS pohání spoustu zařízení, která mohou někoho zabít a k síti připojená jsou. A zkušenost praví, že uvedené sítě nebývají právě dobře zabezpečené.

Často zaznívá argument, že o opravdu kritickou infrastrukturu není nutné se strachovat, protože tyto sítě jsou provozovány odděleně od internetu, a útočník tedy nemá šanci se do nich dostat. Vzduchová mezera - air gap - je vydávána za vrcholné řešení bezpečnostních problémů, které by mělo učinit nemocnice, elektrárny, vojenské sítě a další podobná zařízení imunní vůči kybernetickým útokům.

Skutečnost je bohužel podstatně méně radostná. Počítačové viry a další malware se už našly i v „hermeticky uzavřených“ sítích řídících jaderné elektrárny, produktovody, a dokonce i na ISS, Mezinárodní vesmírné stanici. Dokonalá izolace v praxi neexistuje, a i pokud by existovala, měla by dosti malou hodnotu.

Většina kritických sítí od ostatních sítí a internetu zcela izolována není. Musí existovat nějaký způsob, jak z nich a do nich dostat data, a izolovaný systém lze nakazit třeba pomocí přenosného disku. Snaha oddělit kritické sítě od internetu může být i kontraproduktivní, protože komplikuje samotnou aktualizaci takto oddělených zařízení - výrazně omezuje možnost takovou činnost automatizovat.

Závažnost bezpečnostních chyb v systémech, jako je VxWorks, roste i kvůli aktuální situaci. Jsme ve stavu nevyhlášené, ale o to urputnější kybernetické války. Dispečerské řídicí systémy (SCADA systémy), rozvodné sítě a další prvky kritické infrastruktury jsou šťavnatým soustem a žádoucím cílem kybernetických útoků. Odhodlaný útočník, třeba znepřátelený stát, může způsobit škody s nedozírnými následky. A to bohužel není plané strašení.