Google před pár dny zveřejnil kritickou chybu ve Windows, což se pochopitelně setkalo s nevolí Microsoftu, který si stěžoval, že nedostal dost času na opravu. Podobné mediální hádky nejsou ničím novým a opakují se poměrně pravidelně.
Google se v takových případech hájí, že pod hrozbou rychlého zveřejnění alespoň motivuje autory sjednat nápravu, zatímco ti naopak argumentují, že pod tlakem nasekají leda další chyby a problém nedokážou dostatečně prostudovat.
Pravda bude asi někde uprostřed, mějme totiž pro inženýry z Redmondu pochopení. Windows je dnes jedním z nejkomplikovanějších a nejrozsáhlejších kusů programového kódu na světě. Přesnou statistiku neznáme, ale považte, že jen prohlížeč Chrome obsahuje na milion všemožných drobných i složitých funkcí. Kolik pak jich tedy asi obsahují Windows XP, Windows 7 a Windows 10 dohromady?
Je to ohromné soukolí kódu, kdy nedomyšlený zásah na jednom místě může vyvolat problém na místě jiném. A hlavně, i programátoři jsou jen lidi a dělají docela vtipné chyby. V jednom z letošních testovacích sestavení Windows 10 tak například přestaly fungovat některé síťové subsystémy. Jak se to stalo? Jeden z vývojářů udělal překlep v jedné z interních IP adres – doslova omylem prohodil dvě čísla a rázem vše přestalo fungovat. Přišlo se na to až v okamžiku, kdy se nový testovací build zvesela instaloval tisícům betatesterů.
Je ironií osudu, že jsou to zpravidla tyto banální chyby a překlepy, které nakonec napáchají ty největší a nejdražší škody.
Mars Climate Orbiter
Zářným příkladem je třeba nešťastná vesmírná mise Mars Climate Orbiter a její družice, která měla na sklonku minulého století studovat marťanské počasí a pátrat v jeho řídké atmosféře po vodě a oxidu uhličitém.
Sonda v hodnotě stovek milionů dolarů shořela jako papír, programátoři se totiž nedohodli na jednotkách (Foto: NASA, ilustrační snímek)
Sonda k Marsu přilétla 23. září 1999, zažehla motory a… A pak už ji nikdo nikdy neviděl, spektakulárně totiž shořela v atmosféře. Z mise s rozpočtem bezmála 328 milionů amerických dolarů nezůstalo naprosto nic jen proto, že jeden tým softwarových inženýrů vyvíjející firmware sondy počítal s imperiálními jednotkami, zatímco druhý s jednotkami SI. Nějak si to zapomněli říci. Výsledkem byla chybná trajektorie letu, která družici namísto na oběžnou dráhu ve výšce okolo 226 kilometrů nad povrchem zanesla do hustších vrstev atmosféry, kde se ve výšce 85 kilometrů proměnila v dozajisté efektní meteor.
Therac-25
Co může způsobit vážná chyba ve Windows? Horší stabilitu systému, hackerský útok, snazší instalaci malwaru – povětšinou tedy újmu, která bolí, která může stát tisíce a miliony dolarů, ale zpravidla ušetří lidské životy. Jenže chyby nedělají pouze redmondští – chyby prostě občas děláme všichni. Dokonce i konstruktéři v laboratořích Atomic Energy of Canada Limited.
Lékařský zářič Therac-25 občas zazářil až příliš
Ta slovíčka „atomic energy“ znějí zlověstně a také by měla, AECL dal totiž světu během své více než šedesátileté historie hromadu specializovaných zařízení včetně zdravotnických zářičů pro radioterapii Therac-25.
Therac-25 dlouhé roky léčil, než se přišlo na to, že čas od času také někoho zabil. Jak to bylo možné? Kvůli softwarovým chybám v posloupnosti instrukcí – tzv. souběhovým chybám, kdy se instrukce kvůli špatnému návrhu zpracuje ve špatném pořadí. Ve Windows by to asi nevadilo – přinejhorším by vás překvapil BSOD a restart PC by vše vyřešil, nicméně v případě theraku se chybička projevila až stonásobně vyšší dávkou ozáření pacienta. Ups…
Vyšetřovatelé zmapovali celkem šest případů masivního ozáření a několika úmrtí, ačkoliv obětí mohlo být ve skutečnosti mnohem více, protože nebylo vždy možné určit, jestli pacienta v pokročilém stádiu rakoviny skutečně zabil nádor, anebo špatně napsaný firmware.
Nutno podotknout, že Therac-25 nebyl zdaleka jediný, obdobný případ s chybným softwarovým výpočtem radiační dávky se totiž odehrál i v roce 2000 v Panama City.
Boeing CH-47 Chinook
Je tomu už 22 let, a přesto se dodnes znalci dohadují, kdo tu katastrofu tehdy vlastně způsobil. Řeč je o pádu velkokapacitního vrtulníku CH-47 Chinook 2. června 1994. Britská vojenská helikoptéra se zřítila při letu nad Skotskem s 29 pasažéry na palubě. Katastrofu nikdo nepřežil, a přestože se zpočátku zdálo, že se jedná o chybu pilota, vyšetřování později ukázalo, že se chinooku spíše zhroutil palubní počítač. Ostatně u letounů by to nebylo poprvé, už o rok dříve se totiž kvůli softwarové chybě zřítil třeba švédský JAS-39 Gripen.
Místo katastrofy z roku 1994
Pentium FDIV bug
Ačkoliv Intel zaměstnává celou armádu matematiků, Thomase R. Nicelyho v lásce asi příliš nemá. Matematik z Lynchburg College v roce 1994 totiž objevil chybu v rané generaci procesorů Pentium, jejichž koprocesor pro výpočty s desetinou čárkou čas od času vykazoval anomálii a při dělení vracel špatný výsledek (proto FDIV bug = floating-point division bug).
Intel Pentium z jara roku 1993
Intel si byl jistý, že se jedná o natolik exotický problém, že se s ní drtivá většina zákazníků nikdy nesetká, a tak se nechal lišácky slyšet, že procesor vymění jen těm, kteří dokážou, že opravdu selhal. To však tehdejší zákazníky rozpálilo natolik (ostatně počítače i procesory byly mnohem dražší než dnes), že nakonec museli v Intelu vše přehodnotit a vyměnili procesory všem zájemcům. Exotická chyba nakonec přišla legendárního výrobce čipů na 475 milionů dolarů.
CVE-2000-0979
Pokud jste začali používat síťové služby a internet až v tomto století, buďte rádi, starší verze Windows byly totiž plné opravdu závažných chyb. Jedna z nich přežívala v raných verzích Windows celých pět let, specialisté ji totiž zdokumentovali až v roce 2000.
Sdílené složky ve Windows 9x. Heslo netřeba...
Zranitelnost se týkala systému sdílených složek a tiskáren v síti ve Windows 95, 98 a Windows Me. Sdílené složky fungují ve Windows dodnes, nicméně tehdejší systém ověřování hesla k přístupu k takové složce byl naprosto tristní. Případný útočník se totiž do složky kvůli špatnému návrhu dostal i bez znalosti celého hesla – stačilo uhodnout jeho první písmeno, což bylo vzhledem k délce abecedy otázkou okamžiku.
Konkrétní škody, které tato chyba napáchala, známé nejsou. Je to ale asi nejhloupější chyba zabezpečení dat v historii Windows a možnost zneužití byla enormní.
Neexistující ozónová díra
Kvůli děravému softwaru se lidstvo s několikaletým zpožděním dozvědělo o mohutné ozónové díře nad Antarktidou. Chemici předpověděli problémy s ozónem již v 70. letech, kdy se přišlo na to, že freony a další tehdy běžně používané průmyslové látky mohou narušovat jeho vrstvu v atmosféře, která významně pohlcuje škodlivé ultrafialové záření.
Americká vláda proto v roce 1978 dala zelenou družici Nimbus-7 vybavené spektrometrem TOMS, který měl mapovat vrstvy ozónu v atmosféře. Nimbus-7 celé roky snímal zemský povrch a lidstvo si mohlo oddechnout, podle dat se totiž nic kritického neodehrávalo.
Družice Nimbus-7 a její mapování ozónové díry nad Antarktidou. Vědci ji kvůli chybě v softwaru objevili až po dlouhých letech.
Teprve v roce 1985 a na základě zpětné analýzy dat přišel britský tým výzkumníků na pravý opak. Okolo pólů a přilehlých oblastí bylo naopak ozónu extrémně nízké množství. Jak je možné, že to sonda neodhalila? Jednoduše proto, že autory jejího firmwaru vůbec nenapadlo, že by ozónu mohlo být v atmosféře až tak malé množství. Prostě senzor naprogramovali tak, aby takto nízké hodnoty považoval za chybu a ignoroval. Nakonec se ukázalo, že to nebyla chyba, ale skutečnost.
Jak vidno, softwarové chyby, zranitelnosti, překlepy a nedodělky jsou staré jako první počítače a přes veškerou snahu tu s námi budou i nadále. Ačkoliv se totiž testování softwaru za poslední desetiletí výrazně zlepšilo a obor IT už není žádným nováčkem, stejně tak se zvýšila složitost samotného softwaru.
Chyby tedy budeme nejspíše dělat tak dlouho, dokud budeme sami psát programový kód. Možná za nás ale podobné problémy vyřeší neuronové sítě budoucnosti, které po nás naše překelpy zkontorlují a orpaví. Ať už na Živě.cz, nebo v programovém kódu firmwaru některé marťanské sondy zítřka.
Tento článek je součástí balíčku PREMIUM+
Odemkněte si exkluzivní obsah a videa bez reklam na devíti webech.
Vyzkoušet za 1 Kč
Nebo samostatné Živě Premium