| Název: | Bezpečnost software v počítačové komunikaci |
| Autor: | Tomáš Jurák |
| Publikováno: | Data Security Management 5/2002 |
Bezpečnostní chyby v programech, používaných v počítačové komunikaci, představují noční můru snad každého odpovědného pracovníka v IT. Objevují se každou chvíli a nevynechají žádný operační systém ani aplikaci. Při sledování seznamů nových bezpečnostních děr nabude člověk snadno dojmu, že postiženo a zneužito může být všechno, co jen lze na počítači provozovat. Bohužel i v datové komunikaci platí, že každý líc (= užitečný program, systém) má i svůj rub (hrozba zneužití). Je situace opravdu tak zlá, jak se zdá? Nebo jsou ohlašovaná bezpečnostní rizika zbytečně nafouknutá? Pokusíme se na tyto otázky odpovědět.
Mezi nejznámější hříšníky v seznamech napadnutelných programů patří namátkou MS IIS, Apache, BIND, sendmail, MS Internet Explorer (+ Office) a další. O jejich chybách bylo již na stránkách DSM psáno dříve. Pokusíme se nyní nastínit možnosti napadnutí aplikací a dat na nejkritičtějším místě informačních systémů - na serverech. Rozdělíme-li nebezpečí, skrývající se ve zranitelných programech do skupin, dostaneme následující rizika:
- kompletní převzetí vlády nad serverem,
- spuštění libovolného programu na napadeném stroji,
- přístup k datovým souborům,
- vyřazení stroje z činnosti (denial of service, DoS)
Dopad na majitele napadeného serveru je závislý na mnoha okolnostech. Například při převzetí vlády nad serverem nemusí ještě dojít přímo ke škodám u napadené organizace, neboť útočník může stroj využít jen jako základnu k dalším útokům bez narušení jeho funkce. Pro organizaci, která je takto zneužita, je ovšem při dohledávání viníka obtížně vysvětlitelné, že její server byl pouze zneužit a organizace nemá s útoky nic společného. Vede to samozřejmě ke ztrátě reputace firmy, případně až k jejímu odstavení od sítě Internet poskytovatelem připojení.
Proberme si nyní jednotlivé případy, které mohou nastat.
Kompletní převzetí vlády nad serverem
Útočníkovi se podaří získat plný přístup k napadenému stroji. K tomu mu pomohou chyby například FTP serverů nebo jiného software - záleží na konkrétní verzi, platformě a konfiguraci. Hacker může libovolně modifikovat nastavení serveru, jeho procesy, logy apod. Jde-li o www server, nejčastěji modifikuje vystavené stránky. Zpravidla na nich vystaví své politické nebo jiné názory, což samo o sobě není nijak škodlivé a navíc je taková akce brzy odhalena. Horší situace nastane, pokud se stránek zmocní například konkurence a nenápadně začne zobrazovat dezinformace, nepravdivá fakta či zkreslené ceny. Zasažená firma by po dlouhou dobu nemusela vůbec vědět, že se něco takového děje a utrpět tak značné ztráty, v krajním případě by mohla i zkrachovat. Zde se již dostáváme k závažnému problému s přímým finančním dopadem. Pro firmy, nabízející své služby pouze přes Internet, se tak stává problematika zabezpečení veřejně dostupných serverů životně důležitou. Ve stejné situaci, byť ne s přímým finančním dopadem, jsou stránky státních institucí, kde se však jedná spíše o prestiž a důvěru občanů.
Spuštění libovolného programu na napadeném stroji
Získání této možnosti umožní záškodníkovi provádět buď příkazy operačního systému, nebo spouštět vlastní vložené skripty. Tím pádem má otevřené dveře k dalším akcím, zejména k modifikaci datových či konfiguračních souborů, které následně směřují k získání neomezeného přístupu k celému stroji. Kupříkladu po vyvolání chyby s přetečením zásobníku (buffer overflow) na www serveru lze posílat operačnímu systému serveru příkazy, které má vykonat. A i když tyto povely mají v systému pouze omezená práva webového serveru, stačí ke změně obsahu stránek. Velký význam má nejen v uvedeném příkladu správná a maximálně "utažená" konfigurace systémového prostředí. Z hlediska následků jsou útoky uvedeného typu jen o málo méně nebezpečné, než předchozí případ. Z typicky zneužívaných programů či služeb jmenujme PhP, FTP servery, SNMP démony, databázové servery a další.
Přístup k datovým souborům
Útočníkovi se podaří přenést k sobě obsah souborů, umístěných na vzdáleném počítači. Může se jednat o běžné systémové soubory, konfigurace, uložené databáze, seznamy uživatelů a podobně. Tuto "službu" prokazují nejrůznější programy, například některé verze PhP, FTP servery, databázové procesy a další. V mnoha případech jsou v souborech uloženy v otevřené podobě informace o uživatelských účtech a heslech. Získání důležitých souborů buď otevírá cesty k dalšímu průniku do systému a jeho ovládnutí, nebo je konečným cílem útoku. Z nedávné doby známe případy ukradení databází kreditních karet. Tady už přímo vidíme potenciální riziko velkých finančních ztrát. Nemusí však jít pouze o kreditní karty. Pro mnoho firem má nevyčíslitelnou cenu seznam zákazníků, znalostní databáze, osobní data nebo jiné těžko získatelné informace.
Vyřazení stroje z činnosti
Útok typu DoS se může jevit méně závažným, ale přesto dokáže způsobit značné škody. Zkuste na deset minut odpojit vaši firmu od Internetu a hned poznáte, co to znamená. Pracovník v terénu se nebude moci spojit s firemní sítí, zákazníci nedostanou žádané údaje, přestanou fungovat vzdálené pobočky a uživatelé nebudou moci využívat Internetu. Příčina? Napadení směrovače nebo některého ze serverů v demilitarizované zóně. Následky mohou být stejně značné, jako v minulých případech. Na vině může být třeba některý z proxy serverů, firewallů, autentizačních služeb, web serverů a dalších programů, náchylných k DoS.
Všechny uvedené typy útoků mají z velké části společné příčiny (kromě těch, co vedou hackera k činu): neaktuální verze programového vybavení bez aplikovaných záplat a jejich nesprávnou konfiguraci. Zbytek připadá na nové útoky, jimž se nelze vždy bránit. Bezpečné nastavení aplikací a celého prostředí je námět na velmi rozsáhlé téma; zde se věnujme jen samotným softwarovým aplikacím.
Stále nové požadavky trhu vedou vývojáře ke zkracování produkčních cyklů programů. Ty jsou navíc vybavovány záplavou nových funkcí, z nichž mnohé uživatel nikdy nevyužije. A co hůř, o nichž často ani neví. Potom zůstávají v systému otevřené porty, spuštěné služby, implicitní nebo prázdná hesla. V paměti je zaveden kód, marně čekající na zavolání funkce. Potenciálnímu útočníkovi potom stačí pouze zkoušet různé testovací metody a dříve či později zjistí, který systém má jakou slabinu a využije ji. Jak se můžeme bránit?
Obrana proti chybám v software
Jak již bylo naznačeno, obrana je možná. Nikdy však nebude dokonalá, neboť záškodníci jsou vždy o krok napřed a nalézají stále nové a nové možnosti, jak využít skrytých skulin.
V první řadě je třeba omezit na naprosto nezbytné minimum množství aplikací, běžících na (veřejně) dostupných serverech. To znamená ponechat pouze holý operační systém se službami, nutnými k jeho běžnému provozu - jako je logování, správa diskového prostoru, systémový časovač apod. Odstranit tedy všechny zbytečné procesy, které se nainstalovaly spolu s operačním systémem. Bývá jich mnoho bez ohledu na to, jaký systém používáte. Například v linuxech jsou to všechny r-příkazy, NFS, sendmail, apmd a mnoho dalších. Pro Windows je typickým příkladem IIS a služby pro vzdálený přístup a sdílení systémových zdrojů (NetBIOS, Remote Access, Computer Browser). Návody k zabezpečení jednotlivých systémů lze najít například na adresách, uvedených v Pozn.2.
Dále je záhodno najít nejnovější patche a hotfixy, dostupné k danému operačnímu systému a instalovat je. Nyní můžete zavést vlastní aplikační prostředí, opět však pouze doporučené verze, nebo verze s aplikovanými záplatami. Ke každému slušnému software existuje popis známých bezpečnostních a jiných nedostatků, umístěný nejčastěji v souborech "Release notes". Pozor na důležitou věc - ne každý patch zachovává plnou kompatibilitu s původním produktem, takže se může stát, že daný produkt zabezpečíte tak, že nebude provozuschopný. Proto je nezbytné po každém upgrade důkladně ověřit funkčnost celého systému.
Jinou strategií obrany je nasazovat pokud možno takové produkty, jež dosud nebyly kompromitovány, nebo které nejsou příliš rozšířeny. Čím více produktů jednohé značky se používá, tím větší pozornost přitahují, neboť jejich napadení slibuje větší žeň. K uplatnění uvedené strategie obrany je nutné změnit navyklé stereotypy typu "pošta=sendmail" a pátrat po jiných možnostech řešení. Ne vždy je to možné, zejména u specializovaných komerčních produktů, ale pro běžnější aplikace se vyplatí investovat trochu úsilí a prostředků na vyzkoušení něčeho nového. Uvedený příměr se sendmailem je typickou ukázkou toho, proč existuje tolik zranitelných systémů. Mnoho aplikací, používaných v počítačové komunikaci, pochází z dávných dob rozvoje sítí, kdy bezpečnost přenosů stála na pokraji zájmu vývojářů. Od těch dob se tyto nástroje staly standardem a rozšířily se po celém světě. S nárůstem nových požadavků do nich byly implementovány nové funkce, které s sebou nesly další rizika. Bezpečnostní úpravy aplikací se sice dělaly, ale na jejich původních základech a filosofie návrhu se nezměnila. K radikálnímu zlepšení je třeba napsat zcela nový produkt. Mezi takové patří například qmail či djbdns od D.J.Bernsteina, který nabízí finanční odměnu tomu, kdo přemůže jeho produkty. Zatím ji vyplatit nemusel.
V okamžiku, kdy máme nainstalovaný a zabezpečený svůj systém, nastává teprve ta pravá práce, kterou naneštěstí mnoho správců zanedbává. Od této chvíle je třeba pátrat po informacích o objevených skulinách. Znamená to sledovat diskusní skupiny a stránky organizací, zaměřené na počítačovou bezpečnost (viz Pozn.1). Po zjištění, že námi provozovaná verze software je na našem operačním systému a v naší konfiguraci napadnutelná, musíme podniknout kroky k zajištění bezpečnosti. Někdy stačí problému zamezit úpravou konfigurace, jindy nezbývá než čekat na reakci od výrobce programu, který vydá příslušný patch. Do té doby lze v závislosti na konkrétním případě zajistit bezpečnost i za cenu jistého omezení funkčnosti nebo komfortu obsluhy aplikace (například nedávný problém s SSH, při kterém mohl běžný uživatel na vzdáleném systému zadávat příkazy s právy roota, bylo možné omezit úpravou konfiguračního souboru).
Další možnost pasívní obrany spočívá v jednoduché, nicméně významné zásadě - nespouštet aplikace pod administrátorským účtem. Dojde-li k úmyslnému zhroucení programu, nezíská útočník plnou vládu nad systémem, ale pouze omezené možnosti uživatelského účtu.
Také nastavení bezpečnostní politiky na firewallu, chránící server, je důležité. Musí být povolena jen nezbytná komunikace serveru s okolím, aby se zabránilo případnému postupu z napadeného stroje dále do vnitřních sítí. Pokaždé, je-li to možné, definujeme přesnou zdrojovou i cílovou adresu a port.
Ochrané pomůcky
Velmi častým útokem je vyvolání pádu aplikace pomocí přetečení zásobníku - buffer overflow. Vetřelec poté získá úplný nebo částečný přístup k napadenému operačnímu systému. Jelikož operační systémy samotné nedokáží této situaci zabránit, nezbývá než nasadit specializované aplikace, označované jako IPS (Intrusion Prevention Systems). Například firma Entercept nabízí software, který se zavede do operačního systému mezi aplikaci a jádro, a který prověřuje všechna softwarová volání do OS a jádra. Zjistí-li, že volání odpovídá některému známému útoku (GetAdmin, MDAC) nebo má podezřelé či nepřípustné parametry, nastaveným způsobem zasáhne. Výhodou je účinnost i proti novým, dosud nezveřejněným útokům.
Dobrým ukazatelem zabezpečení provozovaných systémů jsou nástroje pro detekci známých vad, označované jako bezpečnostní skenery. Z těch známějších uveďme třeba komerční Cisco Secure Scanner či volně dostupný nmap. Tyto nástroje disponují databází s velkým množstvím známých útoků, které aplikují na testované cíle v naší síti. Poté podají popis výsledků s podrobným popisem, jaké napadnutelné služby na daném stroji běží a představují tedy riziko.
Doplňkem pro zvýšení bezpečnosti je i nasazení systémů pro detekci narušení (IDS). Jsou to většinou sondy, naslouchající provozu na síti a hledající v procházejících paketech známé nebo podezřelé sekvence, charakterizující nekalou činnost. IDS představují ochranu i pro jinak zranitelné aplikace.
Závěr
Nastínili jsme hrozby, vyplývající ze zneužití děravých programů. A to jsme se zmiňovali jen o oblasti serverové; další nebezpečí číhají ve slabinách klientských programů (červi, využívající hrubé nedostatky poštovních klientů, útoky ze zlomyslných webových serverů na internetové prohlížeče apod). Do oblasti chyb v software musíme zahrnout též operační systémy komunikačních prvků, zejména směrovačů, jejichž slabin je také hodně a které s sebou nesou stejné riziko zneužití. V úvahu musíme brát i velmi pravděpodobný útok na servery ve vnitřní síti, podniknutý vlastními zaměstnanci. Všechna tato varování nelze podceňovat a spoléhat na to, že nám se snad nic nestane. A obvyklé rčení "my jsme zabezpečeni, máme firewall" dnes již zdaleka neplatí. Cena za obranu ovšem není nízká a bude se stále zvyšovat. Neustálé sledování novinek z oblasti bezpečnosti, testování a aplikování nových verzí programů, nasazení a provoz systémů IDS a IPS stejně jako dodržování celkové bezpečnostní politiky organizace stojí nemalé peníze. Na druhou stranu náklady na zabezpečení jsou vždy nižší, než skutečné ztráty, způsobené napadením. To je třeba si uvědomit a jednat dříve, než bude pozdě.
Pozn. 1 - Www stránky s tematikou bezpečnosti:
www.cert.org
seznam útoků, informace o řešení
www.insecure.org
přehled útoků, zajímavé statistiky
packetstormsecurity.packetstorm.org
nejnovější útoky
www.securityfocus.com
informace, rady
www.cyberbase7.com
novinky, nástroje
Pozn. 2 - Návody k zabezpečení jednotlivých systémů:
www.sans.org/top20.htm
přehled nejtypičtějších slabin a jak na ně
www.ibm.com/linux/Securing_Linux_Servers_xSP_hilf_external.pdf
zabezpečení linuxových serverů
www.labmice.net/Security/securewin2000.htm
rozcestník k zabezpečení Windows
Pozn. 3 - Bezpečnostní software:
www.insecure.org
nmap (zdarma)
www.nessus.org
nessus (zdarma)
www.iss.net
IDS
www.cisco.com/go/security
IDS, IPS,...
www.entercept.com
IDS agent







