Ještě relativně nedávno byl svět průmyslových automatů, MaR a dalších řídících systémů naprosto odlišný od světa PC počítačů. Doba se změnila a dnes je naprostá samozřejmost, že je možné sledovat a ovládat celé výrobní linky i jednotlivé ventily nebo FW měniče z jednoho místa přes SCADA aplikaci. Současně s PC vstoupily do prostředí řídících a regulačních systémů i problémy s bezpečností známé z kancelářských počítačů a ze sítě Internet.

Kdo ovládá operační systém řídícího počítače, ten může ovládat i všechny aplikace, které běží na takovém počítači. Dokonce platí, že pokud je aplikace kvalitně naprogramována, tak je to dobrá zpráva pro uživatele i pro hackera, který má jistotu, že jeho činnost nebude prozrazena například pádem aplikace.

Tvorba programů je exaktní obor

Při stavbě mostů nebo konstrukci motorů je třeba poznat a pochopit přírodní zákony. Projektanti mostů musí dobře rozumět roztažnosti materiálů. Konstruktéři motorů musí dobře porozumět proudění vzduchu ve spalovacích komorách a průběhu hoření.

Na rozdíl od projektantů a konstruktérů, tak programátoři nemusí respektovat žádné přírodní zákony. Programování je čistě lidská práce, kterou je možné od vstupů až po výstup jasně popsat, naprogramovat a otestovat.

To tedy znamená, že počítačový virus je také výsledek lidské práce.

Počítačové viry a mnohaleté neřešení těchto problémů

V době kdy bylo PC moderní náhradou psacího stroje, tak počítačové viry byly nepříjemné, ale byla to svérázná forma rozptýlení. Jenže doba postupovala. Počítače se začaly propojovat do lokálních sítí a později i do Internetu. Bohužel nad původními základy počítačové bezpečnosti se nikdo vážně a nestranně nezamyslel.

Z počítačové bezpečnosti, ať se jedná o antivirové nebo další programy, se stal business. To mimo jiné znamená, že většina antivirových a bezpečnostních firem neměla zájem řešit základní problémy s architekturou operačních systémů a s počítačovými viry. Situace se od éry Windows XP začala velmi rychle zhoršovat a počítačové viry a hackerské útoky začaly mít podobu profesionálních útoků.

Poučení z viru Stuxnet

Jedním z prvních profesionálně vytvořených virů byl STUXNET. Tento virus dokázal ovládat prostřednictvím PLC Symantec Step 7 frekvenční měniče a následně rychlost elektromotorů.

Na Stuxnetu jsou zajímavé mimo dalších dvě oblasti. První je kdo virus vytvořil a druhou oblastí je způsob jak a co virus zneužil.

Po objevení viru Stuxnet v Iránu, v zařízení na obohacování uranu, začalo vyšetřování. S odstupem mnoha měsíců bylo zjištěno a zástupci americké armády přiznali, že Stuxnet byl vytvořen v armádních laboratořích. To znamená, že se jednalo o profesionálně navržený, naprogramovaný a otestovaný virus.

Virus Stuxnet zneužíval několik slabin v operačním systému Windows. Stuxnet byl navržen, aby testoval jestli je na počítači program Simatic WinCC. Pokud ano, tak prostřednictvím tohoto SCADA programu virus upravoval parametry pro frekvenční měniče.

S virem Stuxnet je spojen starý a trochu zapomenutý fakt. Kdo získá přístup do operačního systému, tak má vládu nad všemi aplikacemi. Konkrétně v případě viru Stuxnet by jakákoliv opatření na úrovni Simatic nebo jiné SCADA aplikace byla neúčinná. Kdo, včetně viru nebo hackera, ovládá operační systém, tak ten může ovládat všechny nadstavbové aplikace.

Microsoft a poskytnutí zdrojových kódů cizím státům

Pro tvorbu počítačových virů je důležité najít nebo jinak získat informace o slabině v konkrétním operačním systému nebo nadstavbovém programu. První cestou je analýza programů, resp. reverse engeneering. Druhý mnohem snadnějším způsobem je analýza zdrojových kódů.

V prostředí Linuxu jsou zdrojové kódy v naprosté většině případů přístupné. Na druhé straně byly klony klasických UNIX systémů a jejich tvůrci si striktně chránili zdrojové kódy.

Někde mezi předchozími dvěma způsoby se nachází společnost Microsoft se svým přístupem. Microsoft běžně nezveřejňuje zdrojové kódy. Jenže už zhruba od roku 2000 existuje Microsoft Government Security Program. Prostřednictvím tohoto programu byly zdrojové kódy Windows, prohlížeče Internet Explorer a dalších programů poskytnuty vládním agenturám a vysokým školám v EU, Rusku a například i v Číně.

Pouze naivka si může myslet, že tyto zdrojové kódy použily vysoké školy a agentury v jednotlivých zemích pouze pro sebe a pouze pro studijní účely.

Operační systém je základ

Před několika lety jsem prováděl analýzy již zveřejněných slabin v operačních systémech a prohlížečích. Opakovaně jsem nacházel slabiny, které byly společné pro nejnovější verzi operačního systému, ale i pro starší (8, 7) a staré verze (Vista, XP, 2000) operačního systému Windows.

Chyba v operačním systému, firmware nebo aplikaci se může objevit. I v jiných výrobcích se čas od času objevují chyby a konstrukční vady. Co je vážné a stojí za zamyšlení jsou situace kdy se jedna chyba týká několika po sobě jdoucích verzí konkrétního programu. To znamená, že tvůrci programu nemodernizují zdrojové kódy a neprovádí analýzu zdrojových kódů.

Informace o dlouhodobých chybách, které jsou ukryté ve zdrojových kódech a jsou dlouho neodhalené souvisí i s programem Microsoft Government Security Program. Pokud má někdo k dispozici zdrojové kódy může provádět jejich analýzu a hledat slabiny. Navíc pokud se slabiny týkají nejnovější verze a současně i několika předchozích, tak potenciální útočník nemusí mít k dispozici ani nejnovější zdrojové kódy. Stačí zdrojové kódy od starších verzí a díky laxnímu přístupu tvůrců má velkou šanci se svým virem uspět.

Způsoby řešení bezpečnost se z PC přenáší i do oblasti smart telefonů, IoT, SCADA

V posledních letech jsme byly svědky obrovského pokroku v oblasti počítačů a sítí.

S tím také souvisí přenos vážných a nevyřešených problémů z prostředí PC do dalších oblastí. Jak jsem již uváděl v úvodu, tak tvorba počítačových programů je výlučně lidská práce. Není nutné odhalovat nová tajemství vesmíru, fyziky nebo chemie.

Přestože je programování výhradně lidská práce, tak jsme se nedokázali, přesněji velké SW firmy se nedokázaly za víc jak 20 let vypořádat s počítačovými viry a hackerskými útoky. Přestože jsme jsme nevyřešili bezpečnostní problémy v jednom oboru, tak již víc jak 10 let používáme smart telefony, což jsou v podstatě počítače ve velmi zmenšeném obalu. Viry a hackerské útoky se objevují již i v prostředí chytrých telefonů.

Stále jsme se nevypořádali s bezpečnostními problémy v prostředí počítačů a chytrých telefonů a s velkou PR a marketingovou silou se hovoří o Internetu věcí, o samoříditelných automobilech a o fabrikách, ve kterých budou pracovat roboti.

Internet věcí, SCADA aplikace i výrobní provozy plné robotů jsou jasný směr pokroku. Proto, aby IoT, SCADA aplikace zůstaly naším dobrým pomocníkem je třeba si stále opakovat co umožnilo viru STUXNET jeho činnost. Byly jím skryté a dlouho neopravené slabiny v operačním systému, který představuje nutný základ pro běh SCADA aplikací.

Jak situaci změnit ?

V prostředí zabezpečovacích systémů v železniční dopravě, ale i v jiných oblastech řídících a regulačních systémů platil při vývoji princip Fail-save, tedy principy zabezpečení proti selhání. To znamenalo, že například principy, které byly definovány při vytvoření hradlového závěru v roce 1870 byly v průběhu času ověřovány a zdokonalovány.

Nikoho nenapadlo hovořit o tom, že lépe řešení udělat nejde nebo že je to drahé. Vždy konstruktéři uvažovali tak, že při závadě nebo jiné mimořádné události musí zabezpečovací nebo regulační systém přejít (spadnout) do bezpečného stavu.

V prostředí tvorby operačních systémů a dalších komerčních programů nebyli a nejsou programátoři takto vychováváni. Výsledkem jsou skryté slabiny v operačních systémech a následně útoky přes operační systémy na aplikace.

Řešení vidím v zásadě jediné. Musíme být na výrobce operačních systému stejně nároční jako na výrobce klasických zabezpečovacích systémů nebo letadel.

Vím, že se jedná o obrovskou změnu. Pokud generace našich otců a dědů dokázala v ČR vybudovat vltavskou kaskádu a tyto přehrady stojí, pokud stejná generace v USA dokázala připravit a zrealizovat program Apollo, tak musíme být dnes schopni se vypořádat s něčím tak pozemským jako jsou slabiny a dlouhodobě neopravené chyby v operačních systémech. Navíc když si uvědomíme, že programování firmware a operačních systémů je čistě lidská práce bez nutnosti respektovat přírodní zákony. Prostě operační systém je základ, na kterém stojí a padá i bezpečnost SCADA aplikací.