WIdle se použít dají, ale ne na řízení. Od toho tam byly ty SIMATICy. PC s widlema je tam jenom jako ovládací panel a na logování provozního stavu. Takže real time řízení nedělají a v případě modré smrti si automat podrží data v paměti trochu delší dobu a jede podle nahranýho programu. Widle si to zkontrolujou pozděj...
To je standardní přístup, používá se skoro všude (od lékařské techniky po CNC stroje) a elegantně řeší nepoužitelnost widlí pro real time a jejich stabilitu. Ale neřeší, když se do widlí někdo naboří a zneužije je k tomu, aby přehrál ten program v PLC... To se pak dějou věci ;)
Přitom by na obranu úplně stačilo, kdyby před přehráním firmware vyskočil na PC PIN kód, který je pak potřeba ručně naťukat do PLC pomocí klávesnice, jinak se firmware neaktualizuje.
Konkrétně simatic na PLC S7-300/400 (na kterém to jelo) takový fyzický přepínač před mnoha lety měl (a měli ho i jiní výrobci). A pak ho zrušil.
Ten přepínač byl nějak reálný dokud byly automatizované provozy malé a řízeny několika málo PLCčky, které se stejně musely programovat z fyzické blízkosti.
V okamžiku, kdy máte těch PLCček desítky nebo stovky (a tady to desítky nebo stovky PLCček byly), tak není reálné je po jednom obcházet.
V praxi byl ten fyzický přepínač stejně trvale zapnut v programovací poloze :-) Ale to je jedno, protože tenhle útok se stal v době, kdy se provoz teprve postupně spouštěl. Takže v době kdy by byl (alespoň občas) v programovací poloze tak jako tak.
Navíc jsou provozy, kde je nějaká nevhodná atmosféra (nevhodná pro elektrická zařízení) a rozváděče jsou přetlakované a není záhodno jenom tak přijít, otevřít ho, přehodit přepínač, naprogramovat PLC, zase ho otevřít a zase přepnout.
Způsobů, jak zajistit, že v PLC bude váš kód a né nějakého útočníka (nebo alespoň zjistit, že je tam kód jiný) může být dost i bez fyzického opruzu. Jde jenom to to, že dříve na to kašlali i výrobci PLC i programátoři PLC.
Fyzickému přepínači trvale v programovací poloze se dá snadno předejít tak, že programovací poloha znamená speciální režim, kdy to zařízení nemůže dělat nic jiného, než se nechat přeprogramovat. Což ale samozřejmě neřeší ty ostatní námitky – snad jen, že ten fyzický přepínač nemusí být fyzicky na konkrétním zařízení, ale může to být hromadné dálkové ovládání skupiny zařízení. Samozřejmě pak ale ten ovladač nesmí být řešen softwarem nainstalovaným na těch samých Windows…
Ano, kdysi v pravěku bylo nutné PLC uvést do režimu STOP (kdy nevykonává uživatelský program), aby se přeprogramovalo. To by zabránilo mnohým problémům. Ale nikoliv tomu, který je v článku - prostě by se tam škodlivý kód nahrál v době, kdy tam nahráváte nějakou svou změnu.
Ano, kdysi v pravěku bylo nutné běžet před autem s praporkem. To by zabránilo mnohým dopravním nehodám.
Ale dneska už pravěk není a obě řešení zásadně nevyhovují dnešním potřebám. Je fakt zbytečné vymýšlet dálkově ovládaná tlačítka. Řešení normálního IT světa (heslo, zabezpečený kanál, certifikáty, kontrola hashů) jsou dostatečné.
Nebo "neautomatizační" IT systémy, které jsou mnohy také dost kritické (třeba databáze nějakých enterprise/business systémů) také zamykáte nějakým kouzelným tlačítkem, proti úpravám?
Pokud vám nevadí, že vám červ centrifugu rozbije, pak jsou ta opatření dostatečná. Pokud vám to vadí, pak ta opatření evidentně dostatečná nejsou.
Databáze se nezamykají proti úpravám dat prováděným běžně aplikací. Ale aplikace má jenom ta práva, která potřebuje, a pokud provádíte upgrade (změny struktury, vypínání triggerů, aktualizace číselníků), provádí se pod jiným uživatelem, který má víc práv, než ta aplikace. Takže ano, kouzelné tlačítko se používá. Jinak takováhle databáze pořád nedokáže někoho zabít nebo vážně zranit, i ty požadavky jsou trochu jiné.
Ta situace se stala v době, kdy - jak už jsem několikrát psal - se na bezpečnost vůči útoku v automatizaci zcela kašlalo. Cesta do PLC byla z místní sítě otevřená dokořán a nějaké speciální programovací tlačítko by na situaci nic nezměnilo.
Takže to čemu vy říkáte kouzelné tlačítko jsou ve skutečnosti jenom digitální opatření. Čili přesně to, co já říkám, že je potřeba a že je dostatečné. Pokud má někdo všechny hesla a certifikáty a je ve správné síti, tak změní nejenom strukturu databáze, ale nainstaluje i patch na DB engine. A v řídících systémech budeme hrozně rádi, když to bude vypadat alespoň takto.
Tlačítko navíc nejenomže není potřeba, ale nic nepřinese - jak už jsem zase několikrát psal.
Tady ale primárně nejde o život a zdraví. Útok na PLC, který by se snažil o to, aby zabil/zranil obsluhu se zatím nekonal. Tady jde zase o ekonomiku. Jaké mám přijmout opatření, aby mi někdo nenarušil můj provoz . A ten provoz může být přímo ta výroba (řídící systém), nebo plánování té výroby (ERP), nebo třeba obchodování (třeba burza). A a útok třeba na systémy burzy by mohl způsobit mnohem větší škodu, než výpadek v nějakém fyzickém provozu (*). Takže provozovatelé těch databází, které "nemohou nikoho zabít" (**), mají paradoxně mnohem větší motivaci k zabezpečení než typický (typický, ne extrémní) průmyslový provoz.
(*) A i než cena odškodnění za zraněné a mrtvé dělníky. Smrt a zranění k lidské fyzické práci patří odnepaměti. A i tady se řeší jak to minimalizovat - a za jakou cenu. Nepochybně i vaše auto ve kterém vozíte vaše děti, by bylo mnohem bezpečnější, kdyby stálo o 2 miliony víc a vážilo o 2 tuny více.
(**) Je to jenom šťournutí, ale když je někde obří ekonomická škoda, tak si vždy nějací lidé vezmou život. Občas ti nejchudší, protože přišli o to málo, občas ti bohatí, protože nezvládnou představu, že by byli chudí.
Některé bugy zabíjejí, a nejen v detektivce:
http://en.wikipedia.org/wiki/Therac-25
1) odstředivky jsou "kritický" provoz ve smyslu toho, že výpadky a chyby jsou drahé a oddalují dobu kdy budete mít dost obohaceného materiálu na výrobu bomby. Není to kritický provoz ve smyslu, že hrozí únik radioaktivity mimo provoz.
Pohodlí = ušetřený čas a snížený čas po který provoz nejede = ušetřené peníze a přiblížení doby kýženého cíle.
2) Jestli mám zavirovanou pracovní stanici, tak je zcela irelevantní kolik a jakých tlačítek musím mačkat pro změnu kódu v PLC. Prostě si ten vir počká, až budu dělat nějakou změnu a zmáčknu tlačítko a budu posílat svůj kód, tak se pošle taky.
K čemu mi teda to tlačítko bylo?
Pokud mám zavirovnou pracovní stanici, tak napadení PLCčka škodlivým kódem dlouhodobě nezabráním. Pomůže mi ale kontrola hashů toho, co si myslím, že jsem do PLC nahrál a co tam opravdu nahráno je.
Tak to už by záleželo na inteligenci a povaze toho viru. Jestli by se přidal jenom do paměti PLC, nebo jestli by modifikoval i projekt ve vývojovém prostředí na inženýrské stanici.
Jsem líný to dohledat, ale co si pamatuji, tak na 99% se Stuxnet přidával pouze do paměti PLC.
Ale nevylučuji teoretickou možnost, že by mohl existovat virus, který si bude hlídat správné a špatné hashe a před kompromitovaný hashovací nástroj bude podvrhovat taková čísla, aby to sedělo.
Ale to je fuk - pořád je tam ta možnost udělat to na počítači, kterému věřím, že není zavirovaný.
Jo to máte asi pravdu. Já si rozhodně vybavuji, že stuxnet našli v PLC, že projekt byl v pořádku :-)
Mne zase hlavně zaujalo, jak poslal první hodnotu na fyzické výstupy a následně ji přepsal na druhou hodnotu tak, že se pro celé okolí tvářil, že na fyzické výstupy byla poslána ta druhá.
Hodně jsem tehdy sledoval blog Ralpha Langnera (jednoho z objevitelů stuxnetu), ale také už si detaily nepamatuji.
Byly to úplně obyčejné widle s inženýrskou stanicí pro simatic, klikadlo s názvem PCS7. To pochopitelně obsahuje všechny potřebné protokoly pro komunikaci s PLC.
A windowsy v tomto případě nebyly klíčem problému. Tohle byl cílený útok, kdy útočník využil několik zero-day zranitelností. Kdyby to PCS7 jelo na linuxu, tak by také našel cestu, jak to udělat. Jenom by měl horší cestu dostat do na to cílové PC s PCS7.
Klíčový problém byl v tom, že v prostředí automatizace se nebezpečí cíleného útoku dlouhodobě nikoliv podceňovalo, ale přímo ignorovalo. Spoléhalo se na to, že tyhle systémy jsou odstíněny od vnějšku a to stačí. Takže typické PLC (nejenom simatic, ale ostatních výrobců) si v defaultním nastavení nechá zapisovat do dat i do programu od kohokoliv, kdo je na síti. A ve starších verzích to ani nešlo omezit, aniž byste i významně neomezil nutnou funkčnost.
A ano - strach je na místě. Většina systémů které řídí elektrárny, rozvodné elektrické sítě, vodárny a vodárenské sítě, které řídí chemické provozy, které zajišťuje všechny další životně důležité oblasti jede na starých systémech, které nemohou dělat nic jiného, než se spoléhat, že se jim do vnitřní sítě nikdo nedostane.
Běžnou distribuci Linuxu bych tam taky nenasadil. Jedině nějakou jednoúčelovou, pečlivě prověřenou - když už si hraju s jádrem, neměl by být problém na to mít lidi.
Představa, že je u nějakých experimentů s radioaktivním materiálem PC, do kterého si kdokoliv může cokoliv strčit, je fakt děsivá.
typujete zpravně s7 300/400 - vývojové prostředí pro widle - step 7, nyní následník tia - portal ( programovací "jazyky" : LAD - de facto funkční schéma zapojení kontakty, cívky a td..., STL - cosi jako assembler, SCL - de facto Pascal, + dva další grafické - funkční bloky, vývojový diagram)
Na nízké úrovni řízení máte PLC automaty.
V nadřazené úrovni potřebujete bohatou aplikaci. Spousty obrazovek, grafů, trendy, databáze, reporty, komunikace myslitelnými a nemyslitelnými protokoly.
Včetně spoulupráce s unikátním hardwarem - tedy potřebujete snadnou tvorbu ovladačů.
Dneska, v roce 2014 si říkáte - to všechno linux přece umí. Jenže před 20, 15, 10 lety to linux neuměl. Rozhodně ne snadno.
Proto začaly všechny firmy tvořit své šílené vizualizační balíky na windows. A ony windows fungují dobře, pokud splníte určité podmínky (počítač je dedikovaný pro vizualizační aplikaci, kromě té se tam instaluje jenom omezené množství podpůrného SW, nedělají se zbrklé aktualizace, je ve vnitřní síti od internetu oddělen přísným firewallem/proxy).
Licenční politika microsoftu nebrání ničemu co potřebujete a cena za licence windows je malý zlomek ceny ostatních potřebných licencí a zanedbatelný zlomek celkové ceny projektu.
Dneska už vizualizační balíky existují i na linuxu, ale velcí hráči se pořád drží windowsů jako hlavní platformy. Tohle odvětví má obrovskou setrvačnost. Tohle nejsou mobilní telefony, kde se vám u 2 roky starého modelu vysmějí, že náhradní díly nejsou a na tu starou verzi OS už nové aplikace taky nikdo nedělá. Tohle je automatizace, kde slušné firmy dodávají náhradní díly na 20 let starý hardware a pokud vás netlačí jiné vlivy, tak upgrade řídícího systému z důvodů morální zastaralosti děláte klidně i až po 30 letech.
Takže zatímco dříve byly windosy fakticky jediná možnost, tak dneska jsou nadále populární proto, že mají dlouhodobou podporu ze strany výrobce. Máte verzi vlastní aplikace X na vizualizačním balíku verze Y na windowsech verze Z - a víte kde jste a co máte dělat. Kdybyste to měli na linuxu, tak se vám může stát, že 10 let stará desktopová distribuce už není podporovaná, nebo už ani výrobce té distribuce neexistuje.
... ale na Linuxu máte zdrojáky k té nepodporované verzi, takže když je problém, dá se to nějak opravit. Představte si ale, že to PC odejde v době, kdy už budou widle jenom s Metrem, kvůli jedné instalaci bude výrobce PLC certifikovat ovladače a přepisovat klikadlo...
To bylo prezentováno i jako jeden z důvodů pro Debian na ISS...
Ve světě reálné ekonomiky a reálného provozu se dá pomocí zdrojáků OS opravit nějaká blbůstka.
Blbůstka, kterou si na windows opravíte taky - prostě jinak.
ISS je učebnicový příklad provozu, který se neodehrává v normální ekonomické realitě.
Skutečný problém je například to, že potřebujete aby vám na PC fungoval nějaký konkrétní programovací framwerok (třeba .NET, nebo Java) a nějaká konkrétní databáze.
Windows mají dlouhou podporu, takže i ostatní výrobci drží dlouhou podporu na windowsy. Pokud vám ta databáze, kteoru potřebujete, nepůjde nainstalovat na 10 let staré distribuci, protože tam bude hora nepodporovaných závislostí, tak si to teoreticky můžete spravit sám - máte zdrojáky. Prakticky to ale nikdo nedělá, protože je to ekonomický nesmysl.
Windows s dlouhou podporou znamená, že je můžete dlouhodobě nasazovat v dané verzi a dělat velké úpravy v existujících projektech. Neznamená to, že bude někdo psát ovladače do historických windows kvůli jedné instalaci (navíc tohle by řešil OPC server, ale to je úplně fuk, beru že jste to dal jenom jako příklad).
Když mám řídící systém na nepodporovaném systému, tak mám prostě omezené možnosti, jaké úpravy mohu dělat. Mám vyřešeno, jak to přenést na záložní PC (včetně klikadla). Čím déle mám ale podporovanou verzi OS, tím déle mohu dělat zásadní úpravy.
Co mně brání nasadit Linux s dlouhou podporou - 10 - 12 let v podobě RHEL nebo CentOS? V případě RHEL to může být i déle....
Mimochodem, vím dobře, kolik problémů je díky přechodu na W7 v případě starších nástrojů pro práci s CAN, testováním apod. u firem, které dělají pro automobilky.....
Jo, dneska mají dlouhou podporu i některé desktopové distribuce, dříve to bylo jenom pro serverové verze a ještě předtím vůbec. Ale jak jsem psal - dneska to funguje i na linuxu - jenom že na windows to zůstává jako hlavní proud.
U té podpory jde spíš o to jak zajistit spouštění nových věcí na starém OS, než naopak (píšete o spuštění starých věcí na novém OS).
Ale v podstatě jste si odpověděl, proč nepřejít na linux - máte spoustu různých udělátek, které budete na nové windowsy převádět problematicky.
Ale nějak je převedete - nebo přejdete na novou windows verzi od toho výrobce udělátka.
Pokud budete inženýrskou stanici provozovat na linuxu, tak tam z té hromady udělátek nepřevedete bez virtualizace nic a s virtualizací polovinu.
U zbytku zjistítě, že výrobce dodává pouze windows verzi. Spojení výborného HW a šíleného windows-only SW je v automatizaci spíše pravidlem.
A představa, že řeknete - nebudeme používat čerpadla od firmy X a měřáky výkonu od firmy Y a ventily od firmy Z, protože se jejich HW nastavuje jenom ve windows aplikaci - to je úsměvný sen.
Jasné - tohle je věc spíše udržbářského počítače, než inženýrské stanice. Ale většinou to tam musí být taky.
Moc to nechápu.
Stará Windows, nová aplikace - často problém.
Nová Windows, stará aplikace - také často problém.
Linux - v obou případech také často problém, možná trochu častěji, ovšem s možností virtualizovat bez placení a shánění licencí.
Jediné, co beru je ignorantství výrobců hardwaru a nástrojů a díky tomu dodávky softwaru často jen pro Windows. Odstrašujícím případem je třeba Vector Informatics - výborné nástroje, ale jen pro Widle, které se pro to mnohdy ani moc nehodí... A tak se třeba testy automatizují pomocí doinstalovaného Pythonu a nejrůznějších triků a přitom by kolikrát stačil jednoduchý script v Bashi...
Winows mají velmi dlouhou podporu. Například WinXP byly podporované 12 let, a můžete si přikoupit i delší podporu. Windows mají také vynikající zpětnou kompatibilitu, takže budete mít těch problémů relativně málo.
Na Linuxu je situace daleko divočejší: stovky dister, které vychází co pár měsíců, zpětná kompatibilita prakticky neexistuje, ABI pro drivery neexistuje, kernelové moduly je podle autorů jádra nutné uvolňovat pod GPL... Něco z toho sice možná vyřeší použití Red Hat Enterprise Desktopu, ale ten vás vyjde výrazně dráž, než Windows.
Virtualizaci samozřejmě můžete použít i ve Windows. Cena licencí je minimální problém, v ceně projektů naprosto zanedbatelný.
MS opravdu podporoval Windows XP 12 let. To samozřejmě nezaručuje, že výrobce SW bude držet stejnou dobu podpory.
V linku se píše o HAPS USB klíči. Pokud ve společnosti Alladin použili nějaké nedokumentované vlastnosti systému, samozřejmě jim driver může přestat fungovat po jakémkoliv patchi. Aplikace ale s HAPS klíči komunikují pomocí klientské knihovny a driveru. Není nic jednoduššího, než si stáhnout aktuální HASP driver, a případně si projít troubleshooting guide.
http://www2.safenet-inc.com/support/files/SafeNet_Sentinel_EndUser_Guide.pdf
Pokud stavíte řekněme průmyslový provoz, použijete při tom (většinou) aktuální verzi OS a aplikací. Takový SW pak můžete nechat léta prostě fungovat, jako by byl postavený ze železa. Nejvýš provedete nějaké aktualizace, které nic nerozbijí (ale stejně se před jejich aplikací raději zeptáte výrobce aplikace).
Samozřejmě si po letech můžete pořídit řekněme Windows 8 Embedded místo Windows XP Embedded. Jenže Windows 8 vyžadují více paměti, CPU musí umět PAE, NX a SSE2, a drivery konkrétních zařízení nemusí být kompatibilní. K tomu potřebujete aplikační SW ve verzi kompatibilní s Win8, což s sebou může nést další požadavky na HW nebo SW, nutnost migrace nastavení a kódu...
Aby to bylo zajímavější, IT řeší na původním projektu externí dodavatel, a lidé z provozu ani údržby o věci moc nevědí. Upgrade tedy znamená nutnost rozjet projekt, kde nějaký odborník z externí firmy vyhodnotí, jestli lze použít stávající HW, který SW je nutné upgradovat, co se bude migrovat, jaké změny se budou dělat, jak to ovlivní provoz... A výsledkem celého úsilí bude to, že vám všechno bude fungovat úplně stejně, jako před začátkem upgradu.
A pokud to pak ještě potřebuje nějakou certifikaci, tak už jste úplně ... tam.
Krásně to ukazují ty šílené bedny v rekonstruovaných vozech Metra na trase B. Tam jsou reléové obvody zabezpečováku. A proč to dělali v době mikroprocesorů relátky? Protože ta relátka mají certifikaci a získání nové pro mikroprocesory by vyšlo dráž než nákup nových vagónů i s výměnou zabezpečováku.
Na Béčku se ale zabezpečovák neměnil, takže museli někam narvat ty certifikované relátkové obvody.
Něco jiného je pořídit se nový, sériově dělaný zabezpečovák i se všemi certifikacemi (kde se náklady na certifikaci rozpočítají do všech nasazení) a něco jiného je předělat zabezpečovák na koleně a pak chtít certifikaci pro to jedno nasazení, které se už nebude opakovat.
Zabezpečovač se na A i C měnil za provozu, a počítalo se s tím i na B. V rekonstruovaných soupravách na B už měl být nový zabezpečovač. Jenže proběhlo výběrové řízení, pak bylo několik odvolání a bylo jasné, že se nový dodavatel zabezpečovacího zařízení nestihne vysoutěžit. Takže se zvolilo náhradní řešení s "udírnou", kde je provizorně nainstalované staré zabezpečovací zařízení.
V pripade PC v nejakem provozu ktere dela neco souvisejiciho s PLC (at uz celkem cokoli), tak mi v tom brani zejmena to PLC, ktereho podpurny SW typicky pro linux neni. A nejak to dobastlovat nebo vybirat dodavatele podle podpory linuxu je samozrejme ekonomicky nesmysl. Koneckoncu PLC jako takove je zarizeni jehoz hlavnim smyslem je, ze je levne (ve smyslu levnejsi nez navrhovat reseni ktere presne odpovida tomu co je v dane aplikaci potreba).
tady se ale zapomíná, že ty systémy virus napadal pomocí 0-day exploitu... kdo zaručí že nic takového nebude na linuxu?
Změnou OS by se nic nevyřešilo, pouze by se změnila platforma na které se virus šíří...
Snad tu nebude nikdo tvrdit, že za posledních 5 let se neobjevila zveřejněna díra v jádře linuxu umožňující něco podobného jako chyba v IE která umožnila "infekci" ...
namátkou nedávno:
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-2523
Realita je taková, že si firma koupí řešení, platí si údržbu a o nic se nestará. Jeden uživatel je proškolen ve vyšších funkcích systému, řadový uživatel nemá ponětí o tom, co se děje mimo jeho píseček.
To, co popisujete, znamená mít vlastní lidi na vývoj. Nebo snad předpokládáte, že vyvěsíte poptávku a všichni se budou moci přetrhnout, aby se za pár korun rochnili v nějakém řešení na míru o kterém nic neví?
Na ISS si kazdy dodavatel subsystemu da, co on povazuje za vhodne (tym myslim vhodnost aplikacie). Bezia tam vsetky mozne OS, od Windows, LInux, VxWorks, RTOS, etc.
Prave vyvijame system na spracovanie videa a merani zo senzorov, system som postavil na custom Linux distribucii.
V rozhovoru pro Der Spiegel potvrdil byvaly reditel Mossadu Meir Dagan, ze se ucastnili vyvoje Stuxnetu.
To neni az tak prekvapive (dnes), nicmene v clanku je vysvetleno jak se rozchazely politiky Netanyahu a Dagana - Netanyahu prosazoval letecky utok, Dagan se chtel vyhnout lokalni valce a otevrenemu konfliktu.