Hlavní navigace

Kde se berou bezpečnostní mezery?

12. 5. 2004
Doba čtení: 4 minuty

Sdílet

Nebezpečí útoku hackerů, nebezpečí zničení komunikací a všudypřítomné červy a viry, které počítač napadly přímo nebo přes emailového klienta. Tak vypadá bezpečnostní situace v současné IT infrastruktuře a to, co ji umožňuje, se jmenuje bezpečnostní mezery softwaru. Kde se v něm berou? Jak je vůbec možné, že existují?

Pro pochopení této otázky musíme poněkud odhlédnout od jednoduchého technokratického přístupu k IT, ačkoliv ten to nejspíše vůbec neponese rád. Jestliže jsou osobní počítače konstruovány jako univerzální zařízení od doby, kdy se začaly vyrábět, pak masivní nástup Internetu a z toho plynoucí sesíťování dříve samostatných přístrojů tento princip z jedné strany podtrhnulo, z druhé naopak nabouralo. Některé funkce, které byly podstatné pro samostatně existující zařízení, se staly buďto nadbytečnými, nebo jejich důležitost v důsledku propojení do složitých systémů ztratila na významu. Naopak jiné vlastnosti deklarující „univerzálnost“ se staly ještě podstatnějšími.

Při konstrukci systému, který má plnit úlohu relativně univerzálního klienta nebo serveru v propojeném prostředí, je třeba vycházet z teze, že dopředu nevíme „co po tom vlastně všechno budeme chtít“. Jinými slovy, vnitřní struktura systému musí být dostatečně flexibilní, aby jej bylo možné donutit provozovat i takové aplikace k takovým účelům, které v době vzniku systému ještě neexistovaly.

Snaha vytvořit jednotné aplikační rozhraní (API), které by integrovalo jak systémové, tak i síťové, optimalizační a prezentační funkce, vyhořela v okamžiku, kdy se ukázalo, že vývoj síťové infrastruktury v prostředí velkých systémů, a zejména Internetu, nelze kvalifikovaně předvídat. A tak je současný typický klient – obyčejné PC – doslova prošpikováno různými API a protokoly, které se podílejí na jeho fungování v míře omezené buďto účelem (TCP/IP), platformou (Win32), prostředím (Javascript), případně kombinací několika z těchto prvků. Typický stav přitom je, že nevyužíváme pouze jedno z těchto rozhraní, ale v rámci jedné konkrétní aplikace mnoho různých. Tato API a protokoly jsou přitom v rámci aplikace ve vzájemné interakci, což je ostatně dáno jejich samotnou povahou.

Interakce vytváří možnost variability využití. Různá rozhraní si můžeme zkrátka představit jako ozubená kolečka, která do sebe zapadají v mnoha různých kombinacích. A ne všechny z nich lze předvídat. Zde se otevírá největší prostor pro bezpečnostní mezery softwaru – a všechna z nich plynoucí rizika a nedostatky.

Zatímco v desítkách tisíc vzájemných kombinací různých funkcí vykonávají tato rozhraní pozitivní činnost, v několika specifických mohou selhat. Děje se tak především u nesmírně vzácných kombinací nastavení různých prvků. Běžné chyby – jako přetečení nebo naprosté vyprázdnění kritické vyrovnávací paměti, nechtěné dělení nulou, vyvolání nekryté systémové výjimky apod. – jsou obvykle výsledkem ne skutečné chyby v aplikaci nebo v systému, ale velmi nešťastnou kombinací několika, jinak naprosto běžně se vyskytujících faktorů, která je možná, ale která nebyla testována, v horším případě testována byla, ale byla označena za nemožnou (pravděpodobnost nižší než 1:1 mil.).

Komplikovaný kód

Složitý systém, aplikace, která v sobě agreguje množství různých vlastností, protokolů a API, je tedy hlavním zdrojem nechtěných bezpečnostních závad. Kromě nechtěné náhody vyvolané obtížnou orientací ve všech možnostech nabízených komplikovaným systémem „koleček“ ale existují další původci bezpečnostních problémů.

Mezi ty nejčastější patří například ladící kód. Tedy taková část aplikace, která za normálních okolností v ní není vůbec přítomna a používá se pouze při vývoji nebo testování. Mnoho současných systémů obsahuje ladící kód i ve verzi, která je veřejně dostupná, a ten je v ní pouze deaktivován. Jeho aktivace pak může umožnit provádět s aplikací (systémem, počítačem) i takové věci, které by jinak neměly být možné.

Homogenní prostředí chybám svědčí

Samotná bezpečnostní chyba, i pokud je objevena, ještě vůbec nemusí být zdrojem problému, jestliže ji není jak využít. Tedy v případě, kdy zneužití nekorektně fungující části systému brání další komponenty, které fungují zcela správně, případně v nich nebyl nalezen analogický problém. Protože je ale prostředí globálního IT poměrně velmi homogenní, stačí jedna dostatečně zobecnitelná kombinace nedostatků a problém celosvětového významu je na cestě. Typickou ukázkou je aktuální řádění červa Sasser. Totéž homogenní prostředí ale přispívá k relativně spolehlivému a stálému fungování informačních systémů. Bohužel tak, jak je možné zneužít jeho chybu, je možné zneužít i chybu jeho zabezpečení (a k tomuto jevu v poslední době dochází).

BRAND24

Lepení chybám nesvědčí

Opravování bezpečnostních mezer formou „záplat“ tak, jak je provozováno v případě produktů Microsoftu, ale i dalších firem, sice přináší rychlé řešení jednotlivých problémů, může však mít velmi nevítané vedlejší efekty. Těmi je jednak snižování kompatibility, jednak riziko vytváření nových rizik, která bez aplikací záplat neexistovala. Příkladem toho je opět nedávná vadná záplata pro systémy Windows 2000 či spekulace o kompatibilitě aplikací se SP2 pro Windows XP.

Nelze si vybrat

Problém bezpečnostních mezer není, jak jsem se pokusil tímto článkem nastínit, ani zdaleka jen problémem techniky jako i logiky a tak trochu filozofie. Vzniknul překotným vývojem, a proto je nepravděpodobné, že by se jej podařilo rychle opravit bez radikální výměny koncepce, na níž funguje IT. Nelze si tedy vybrat, zda se vystavit riziku záplatování, nebo ponechat rizika známá (obojí je iracionální). Lze pouze důvěřovat tvůrcům softwaru, že při hledání a řešení bezpečnostních záplat nejen programují, ale i přemýšlejí.

Aktualizujete pravidelně svůj software?

Byl pro vás článek přínosný?

Autor článku

Autor je sociolog, odborný publicista, poradce, a lektor.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).