Přejít k hlavnímu obsahu

760 bezpečnostních děr

NA DVD
Nástroj na kontrolu automatických aktualizací Secunia Personal Software Inspector a další bezpečnostní nástroje najdete na Chip DVD pod indexem Bezpečnostní díry.

760 bezpečnostních děr

Firefox, iTunes, Flash Player – i populární programy mohou být nebezpečné. Pokud chcete všechna bezpečnostní rizika omezit nebo úplně eliminovat, budete potřebovat příliš mnoho času. Alternativou může být použití specializovaného bezpečnostního nástroje…
CLAUDIO MÜLLER, PETR KRATOCHVÍL

Když v srpnu letošního roku upozornila slovinská bezpečnostní firma Acros na závažnou "DLL zranitelnost" (http://www.securityfocus.com/archive/1/513190), okamžitě se objevila otázka, zda šlo o díru v systému Windows, nebo jen o problém ve vybraných aplikacích. Kdo byl tedy vinen: Microsoft, nebo Apple, Adobe, Mozilla a spol.? Postižena totiž byla celá řada populárních a hojně rozšířených programů: od iTunes, Firefoxu, Photoshopu, VLC media playeru či desítky dalších drobných nástrojů až po velké programové balíky typu Microsoft Office. Paradoxem je, že zmiňovaná zranitelnost není zdaleka nová. Už před dvanácti lety upozornila americká NSA (National Security Agency) na potenciální rizikovost funkce "LoadLibrary" při hledání DLL souborů.
Jak útočníci tuto zranitelnost zneužili, to můžete vidět na grafice na straně 44. Ačkoliv má Microsoft na svém portálu pro vývojáře MSDN (Microsoft Developer Network) dlouhou dobu zveřejněnu informaci, jak Windows načítají DLL soubory, celá řada vývojářů tento postup ignorovala. Překvapivé ale je, že se tento nedostatek objevuje i v programech Microsoftu. Zkrátka příliš "pohodlní" vývojáři mohou uživatelům způsobit problémy téměř u jakéhokoliv programu či platformy. To potvrzuje i firma Secunia, zabývající se (mimo jiné) i dokumentováním známých softwarových mezer. Podle jejích údajů se na počítači běžného uživatele s padesáti nejpoužívanějšími programy letos zdvojnásobí počet zaznamenaných zranitelností na 760 (viz graf vpravo). A jak na tento nepříznivý trend může reagovat uživatel? Existuje několik metod, jak se bránit před potenciálně rizikovými aplikacemi – my vám ukážeme tu nejsnadnější a na DVD přidáme programy, které vám s tím pomohou. Poradíme vám, jak minimalizovat následky programátorských chyb…

Windows jako menší zlo

Poměrně dlouhou dobu měly operační systémy společnosti Microsoft nálepku bezpečnostního rizika – podle názorů uživatelů měla Windows příliš mnoho mezer a rychlost jejich záplatování nebyla nejvyšší. Na nějaké mezery lze sice narazit i dnes, jejich počet je ale již několik let relativně nízký a doba čekání na záplatu patří podle statistik k nejkratším. Totéž platí pro další programy Microsoftu, jako jsou Internet Explorer nebo kancelářské programy z balíku Office. Ačkoliv i tyto programy zůstanou v hledáčku hackerů, ti se v poslední době zaměřují na podobně rozšířené, ale častokrát podstatně hůře zabezpečené verze programů od firem Adobe, Mozilla, Apple nebo Google. O tom, že situace je skutečně vážná, svědčí i další statistiky společnosti Secunia. Ta za první polovinu roku 2010 evidovala v padesáti nejoblíbenějších programech téměř stejný počet zranitelností jako za celý rok 2009. A co je příčinou tohoto trendu?
Především jen málo uživatelů si uvědomuje, jak kritické z hlediska bezpečnosti mohou tyto aplikace být. To ve spojení s jejich rozšířením (například Adobe Reader a Adobe Flash jsou nainstalovány na více než 90 procentech počítačů) tvoří lákavý cíl pro hackery hledající citlivá data na discích počítačů.
Dalším důvodem je, že naprostá většina aktualizací aplikací neprobíhá ve Windows Update, ale v samotných programech. Některé z nich dokonce ani nenabízí automatické aktualizace, uživatel si musí "hlídat" opravy a nové verze sám. A zejména to usnadňuje útočníkům infikování uživatelských počítačů malwarem.
Společnost Secunia se obává, že bude trvat roky, než se tyto problémy vyřeší a situace v oblasti zabezpečení aplikací se zlepší. Dočasným řešením může být použití programu Personal Software Inspektor (najdete ho i na Chip DVD), který kontroluje zranitelnosti nainstalovaných aplikací a hledá pro ně záplaty. Význam tohoto programu potvrzuje i informace antivirové firmy Kaspersky. Podle její databáze je v současné době známo přibližně 8,5 milionu exploitů (škodlivého softwaru, který používá známé bezpečnostní mezery).
Většinu uživatelů určitě napadne, proč nás ještě stále ohrožují softwarové mezery. Vývojáři by se měli více snažit jak při psaní programů, tak i při jejich testování! Realita je však mnohem komplikovanější. Každá aplikace se skládá z milionů řádků kódu, v programu je nutné provést nespočet akcí a navíc je nutné software přizpůsobit operačnímu systému. "Neexistuje žádný zkušební postup k nalezení chyb a nedostatků," říká Jonathan Nightingale, vedoucí vývojář prohlížeče Firefox.
Aby Mozilla odstranila co nejvíce chyb, používá víceúrovňovou kontrolu kvality: nechybí manuální analýza zdrojového kódu, automatizované testy, kontroly prostřednictvím interních a externích bezpečnostních expertů. Svůj díl práce odvede i uživatelská komunita, když v předběžných verzích (nightly builds) hledá chyby. Naštěstí pro koncového uživatele nacházejí softwaroví výrobci stále větší podporu a pomoc při detekci chyb. Mezi "hackery" bez kriminálních úmyslů (viz například americká společnost Rent-AHacker) patří například instituce CERT, TippingPoint DVLabs nebo Acros, které se snaží hledat mezery v DLL souborech. Tento trend se snaží využívat i softwarové firmy, které (ve snaze motivovat) často nabízejí za odhalení chyb a bezpečnostních problémů nemalé finanční částky. Například Google nebo Mozilla pravidelně vyplácejí nálezcům odměny v řádu stovek až tisíců dolarů. Všichni zmiňovaní experti individuálně analyzují software a v případě nalezené zranitelnosti nejprve informují výrobce programu (aby měl čas na opravu mezery) a teprve s odstupem několika týdnů či měsíců nález zveřejní na internetu.
Poněkud paradoxní situace ale nastává, pokud se po uplynutí dohodnuté časové lhůty neobjeví žádná oprava programu – zranitelnost je totiž obvykle publikována se všemi technickými detaily (Full Disclosure), a během několika málo hodin se objeví malware (označovaný jako exploit), který ji zneužívá. Tyto exploity útočí na zranitelný program především prostřednictvím internetových stránek a pokouší se převzít kontrolu nad počítačem uživatele nebo z něj alespoň ukrást data (viz rámeček na straně 46). Ještě nebezpečnější jsou tzv. "zero-day-holes" (aktuální zranitelnosti), které objeví hackeři sami ještě dříve, než se o nich dozví výrobce softwaru.
Určitě nikoho nepřekvapí, že například 99 procent obětí takovéhoto typu útoku tvoří uživatelé Adobe Flash Playeru. Jedinou jistotou tak zůstává použití kvalitního bezpečnostního balíku, který buď přímo blokuje nebezpečné webové stránky, nebo alespoň zabrání proniknutí malwaru do počítače.

Mlčet o chybách, nebo je publikovat?

Každá známá bezpečnostní díra, ať už "Zero Day", nebo normální, ohrožuje miliony uživatelů počítačů. Proto se názory na otázku "Zveřejňovat informace o zranitelnostech?" mezi odborníky rozchází. Výrobci softwaru požadují co nejvíce času, aby mohli analyzovat mezery a s nimi související kód a neohrozili své uživatele uživatelů. Dokonce ani Kaspersky si nemyslí nic dobrého o "službě světu", jak někdy nálezci zranitelností ospravedlňují jejich zveřejnění. Příliš brzké zveřejnění zvyšuje riziko pro miliony uživatelů, protože malwaru využívajícího zranitelností přibývá s narůstajícím časem téměř geometrickou řadou. Jiní odborníci, jako například HD Moore, zakladatel Open Source bezpečnostní komunity Metasploit, má jiný názor: je prý irelevantní, zda mají vývojáři 30 dní, nebo 120 dní času. Záplata stejně obvykle není připravena včas. Agresivní politika zveřejňování také vytváří větší tlak na vývojáře a nutí je k pravidelnému informování veřejnosti. Díky tomu prý uživatel alespoň ví, na co si má dávat pozor, nebo zda by nebylo lepší program nepoužívat, dokud nebude zveřejněna záplata.

Nabídka zabezpečení ignorována

Paradoxem zůstává, že celá řada chyb se v programech zbytečně objeví jen proto, že jeho tvůrci nevyužili bezpečnostní funkce nabízené systémem Windows. Například pro ochranu proti přetečení zásobníku, jeden z nejběžnějších útoků na software, Windows nabízí funkce DEP a ASLR (viz rámeček "Nevyužitá ochrana systému Windows" na straně 45). DEP zaručuje, že žádný nebezpečný kód neběží v paměti a ASLR poskytuje spolehlivý úložný prostor pro softwarové komponenty. Některé programy, jako například Winamp, Quicktime nebo runtime prostředí Java, tyto techniky stále nepodporují (viz http://secunia.com/gfx/pdf/DEP_ASLR_2010_paper.pdf). A skutečností je, že například až do nedávné doby Firefox nepoužíval obě funkce, protože to trvalo dlouho, než se podařilo realizovat ASLR v každém programu knihovny. Pokud chcete vědět, které programy používají tento bezpečnější způsob práce, nainstalujte si Process Explorer od Microsoftu. Ten ukazuje, které procesy (z programů běžících na vašem počítači) tyto funkce podporují.
Microsoft také nabízí několik variant pomoci vývojářům třetí strany tak, aby mohli vyvíjet bezpečný software. Například velké společnosti, jako jsou Adobe či IBM, zaměstnávají vlastní vývojáře na Microsoft Campusu v Redmondu. Kromě toho Microsoft spolupracuje s přibližně dvaceti programy pro vývojáře a poskytovatele služeb, zaměřenými na zvýšení bezpečnosti v aplikacích. Firma Adobe se před nedávnem zúčastnila iniciativy MAPP (Microsoft Active Protections Program), ve které si Microsoft a další firmy vyměňovaly informace o nových bezpečnostních mezerách. Menší výrobci, pro které by byly náklady na účast v těchto projektech příliš nákladné, mohou alespoň bezplatně využít "SDL průvodce" na adrese www.microsoft.com/security/SDL (Security Development Lifecycle). Ten nabízí vývojářům tipy, jak mohou software programovat bezpečněji. K tomuto účelu slouží popis několika kroků procesu rozvoje a ukázka, které bezpečnostní aspekty by měly být při vývoji softwaru dodrženy. Pomoci odhalit chyby a bezpečnostní mezery v průběhu vývoje by mohl také například bezplatný nástroj Crash Analyzer (z webu www.microsoft.com), který se pokouší úmyslně způsobit zhroucení programu. Na vývojářské platformě MSDN nabízí Microsoft programátorům podrobné instrukce, příklady a důležité informace, které jim mohou pomoci vyladit jejich software pro Windows – například jak bezpečněji načíst DLL knihovny. Skutečnost, že ve velkém množství programů dochází právě k bezpečnostním problémům při načítání zmiňovaných knihoven, naznačuje, že vývojáři tyto informační zdroje příliš nevyužívají.

Software bez záplat?

Jsou tedy za hrozby kvůli mezerám v softwaru zodpovědní pouze programátoři firem "třetích stran"?
Ne tak docela – i v produktech společnosti Microsoft lze nalézt chyby, kterým bylo možné předejít. Například již zmiňovanou DLL zranitelnost lze najít dokonce i v aplikaci Microsoft PowerPoint. A ani Internet Explorer nepatří mezi "nejvíce bezpečné programy". Například na začátku září byla zveřejněna zranitelnost v IE8, související s problémem známým již od roku 2008. Zatímco ostatní výrobci prohlížečů opravili tuto mezeru již dávno předtím, uživatelé IE8 jsou stále v ohrožení.
Zranitelnost se objevila proto, že vývojáři prohlížeče nevěnovali pozornost pravidlům pro zobrazení CSS prvků, což ve finále vedlo až k možnosti "únosu" poslední relace prohlížeče útočníky. Až do redakční uzávěrky nebyla tato zranitelnost stále opravena. Studie IBM potvrzuje, že Microsoft celou řadu chyb neopraví (viz odkazy níže). Podle této studie bylo v první polovině roku 2010 dokonce celých 23 procent známých mezer stále nezáplatovaných. Toto číslo Microsoft odmítl komentovat, ale potvrzuje, že neustále kontroluje, které zranitelnosti jsou méně nebezpečné a které není nutné opravovat. Microsoft, stejně jako ostatní výrobci softwaru, vyvíjí aktualizace zabezpečení většinou spolu s těmi, kdo mezery objevují. "Napsat záplatu je ve většině případů nejmenší problém," říká vývojář Firefoxu Nightingale. Mnohem důležitější je, aby oprava nevytvářela další nové problémy. Aby bylo zajištěno, že nové verze programu poběží stabilně a bezpečně, používá Mozilla testery z komunity, kteří záplatu vyzkouší ještě před globální aktualizací – poté je oprava zveřejněna pro všechny uživatele. Pro méně kritické chyby jsou aktualizace poskytovány během šesti až osmi týdnů, pro závažné nedostatky Mozilla poskytuje záplaty dokonce během jednoho týdne. Ne vždy se však všechno povede…

Aktualizace může odhalit nová rizika

Jak to vypadá, když se záplata uvolní příliš brzy a objeví se nové problémy, to mohli uživatelé vidět například u aktualizace Firefoxu na verzi 3.6.9, která měla opravit DLL mezeru a několik dalších drobností. Tato verze ale byla tak nestabilní, že Mozilla musela aktualizaci stáhnout a po dalším vyladění zveřejnit až verzi 3.6.10, kde již Firefox fungoval bez problémů.
Zajímavou taktikou některých větších výrobců jsou tzv. patchdays, tedy dny, kdy jsou zveřejněny aktualizace. To dává vývojářům více času k doladění záplat a naopak uživatelům usnadní vyhnout se falešným aktualizacím. Nevýhoda: Kritické díry zůstávají otevřené útočníkům až do příslušného dne, a to je pro uživatele špatná zpráva. Například společnost Microsoft vydává aktualizace každé druhé úterý v měsíci, a to především kvůli ohledu na systémové administrátory ve firmách. Pokud by se aktualizace objevovaly každých pár dní, úsilí a výdaje na IT oddělení by narostly do nezměrných výšin. Pouze pro zvlášť nebezpečné útoky vydává Microsoft takzvané "out-of-band záplaty" mimo standardní termín aktualizací. Za aktualizační mechanismus však musíme Microsoft pochválit a vypnutí automatických aktualizací vřele nedoporučujeme. "WindowsUpdate" stahuje data a instaluje je automaticky na pozadí, aniž by uživatele obtěžoval. Dokonce i Mozilla používá ve Firefoxu velmi dobré automatické aktualizace. Naopak u Adobe musí uživatel aktualizovat sám.
                                                        "Neexistuje žádný lék, který dokáže opravit všechny bezpečnostní mezery" 
Jonathan Nightingale, vedoucí vývojář prohlížeče Firefox
Uživatelé už netrpělivě čekají, kdy konečně Flash Player nabídne automatické aktualizace, místo toho aby byl uživatel nucen pětkrát kliknout a ve finále si nainstaloval novou verzi. Nejen že to ruší od práce, ale v některých případech není aktualizace zahájena vůbec. A i nepříliš zvídavého uživatele napadne celá řada dalších otázek: Proč člověk musí pokaždé akceptovat "podmínky používání", proč je nutné ukončení instalace potvrdit kliknutím na tlačítko "Dokončit"? Není to tak dávno, co podobné aktualizační peklo nabízel prohlížeč Opera. Automatické aktualizační mechanismy jsou zkrátka u softwaru stále výjimkou, příliš často se musí uživatel o záplatování starat sám. Proto lze doporučit mnohem jednodušší cestu s aktualizačním nástrojem od společnosti Secunia (viz strana 38), který automaticky nainstaluje záplaty pro všechny vaše aplikace.

Konec hrůzy na dohled?

Obrovské množství potenciálních hrozeb číhajících v softwaru – hrůza bez konce? Pravděpodobně ano. Nicméně pokud budete postupovat podle našich tipů, bude váš počítač mnohem bezpečnější. A máme i několik dalších dobrých zpráv. Očekáváme, že výrobci budou muset v blízké budoucnosti nabídnout rychlejší "reakce" na nově objevené díry a dodávat aktualizace mnohem rychleji.
Důvod: Někteří bezpečnostní experti oznámili, že budou zveřejňovat známá slabá místa dříve. Například bezpečnostní tým Googlu si stanovil lhůtu 60 dnů, US-CERT (počítačové oddělení amerického ministerstva vnitřní bezpečnosti) dokonce jen 45 dní. To bude vyžadovat od výrobců softwaru podstatně lepší "patch management".
Jako první vlaštovku lze označit Adobe, díky jeho integraci do procesů v aktualizaci Windows – bohužel ale jen pro firmy. Soukromí uživatelé musí stále jen doufat, že se automatické aktualizace stanou samozřejmostí ve všech důležitých aplikacích. Optimálním řešením by ale byl jeden aktualizační proces – například v rámci Windows Update. Microsoft tuto možnost zcela neodmítl, zatím ale neexistují žádné konkrétní plány pro realizaci.
Poněkud horkým tématem však stále zůstává informační politika. Například zatímco Mozilla a také Microsoft jsou ochotny o DLL zranitelnosti otevřeně diskutovat, Adobe odmítá poskytnout konkrétní informace potvrzující DLL mezeru nebo její příčiny. A přitom jsou právě v této oblasti důležité detailní informace, aby si uživatelé uvědomili rozsah nebezpečí a nepodléhali falešnému pocitu bezpečí. Ve většině aplikací už sice byla DLL mezera opravena, ale specialisté z firmy Acros zjistili, že se podobný problém objevuje i při načítání EXE souborů. Ačkoliv hrozba zneužití je poměrně vysoká, aktuální "DLL záplata" proti této hrozbě ochranu nenabízí. Vývojáři tedy mají i do budoucna práci zaručenu…
AUTOR@CHIP.CZ


Nebezpečný software
Mozilla Firefox                   96 děr
Apple Safari                      84 děr
Sun Java                          70 děr
Google Chrome                  70 děr
Adobe Reader                    69 děr
Adobe Acrobat                  69 děr
Adobe Flash Player             51 děr
Adobe Air                         51 děr
Microsoft Internet Explorer  49 děr
Apple iTunes                     48 děr
Microsoft Excel Viewer        37 děr
ThunMderobziirllda              36 děr


Rekord v oblasti zranitelností
Typický uživatel počítače byl v tomto roce vystaven více bezpečnostním zranitelnostem než kdykoliv předtím. Například u programů od firem Adobe, Mozilla a Apple se objevilo přibližně čtyřikrát více mezer než u aplikací Microsoftu. Asi 60 procent těchto chyb patří k velmi závažným a mohou být zneužity pro útoky škodlivého softwaru.

BEZPEČNOSTNÍ MEZERY*
2005 - 2007    přibližně 180 děr
2009                 426 děr
2010                 760 děr

* NA POČÍTAČI S WIN XP A PADESÁTI NEJOBLÍBENĚJŠÍMI APLIKACEMI
ZDROJ: SECUNIA



Bezpečnější programy: bez otevřených mezer
Většina programů nedokáže automaticky instalovat aktualizace. Pokud chcete co nejlépe chránit svůj počítač, měli byste se řídit následujícími třemi radami:
AUTOMATICKÁ AKTUALIZACE
V pravidelných intervalech kontrolujte, zda nejsou pro váš software k dispozici aktualizace. Pokud tuto činnost nechcete dělat manuálně, použijte nástroj na jejich kontrolu, například již zmiňovaný Personal Software Inspector (PSI) od společnosti Secunia, který nainstaluje aktualizace automaticky, jakmile jsou k dispozici.
MANUÁLNÍ AKTUALIZACE
U programů, které s tímto (nebo s podobným) softwarem nespolupracují, naleznete alespoň odkaz vedoucí přímo k souboru s aktualizací. Ten si co nejdříve nainstalujte.
PODEZŘELÉ ODKAZY
Nikdy neinstalujte záplaty z neznámých nebo podezřelých webů. Mohlo by jít naopak o malware využívající zranitelnosti ve svoleném softwaru.


Takto hackeri zneužívají DLL mezeru ve Windows
DLL jsou programové knihovny, ke kterým některé programy často přistupují. Pokud program neinformuje systém o přesném místě uložení knihovny, Windows se pokusí hledat na vybraných místech. A tam může být umístěn malware...
Neopravené mezery
Výrobci uzavírají díry v programech častokrát pozdě, někdy zůstanou zcela otevřené.


Nevyužitá ochrana systému Windows
Integrované bezpečnostní funkce dokáží zabránit útokům jako buffer overflow – ovšem pouze v případě, že software využívá funkce Windows.
Útoky na vadný software jsou často zaměřeny na "úložné prostory" ve kterých běží aplikace a jejich kódy. Windows funkce DEP a Asir by těmto útokům měly zabránit, nicméně podle společnosti Secunia zdaleka ne všechny programy tyto techniky podporují. Uživatelé mohou tyto funkce aktivovat i později pomocí nástroje EMET (www.microsoft.com/downloads).
PŘÍSTUP DO PAMĚTI
Technologii DEP (Data Execution Prevention) podporují Windows již od verze XP SP2. S její pomocí procesor identifikuje určité oblasti paměti jako "Ne spustitelné". Pokud se útočník v této oblasti přesto pokusí spustit kód, CPU odešle zprávu systému a poté je program ukončen.
SPOLEHLIVÁ DISTRIBUCE PAMĚTI
Od operačního systému Vista používají Windows funkci ASLR (Address Space Layout Randomization – znáhodnění adresního prostoru), která alokuje prostor v paměti tak, že útočníci neví, kde bude program spuštěn. Tato technika zabraňuje využití oblíbené chyby "přetečení paměti" a ve spojení s technologií DEP brání spuštění škodlivého kódu.

Foto: Nápověda: Nástroj Microsoftu EMET dokáže aktivovat funkce DEP a ASLR u všech programů.


Nejčastější útoky zneužívající bezpečnostní díry
1 PŘÍSTUP K SYSTÉMU
Útočníci díky zranitelnosti získají přístupová práva posledního přihlášeného uživatele tak mohou a spustit kód pro instalaci malwaru.
2 CROSS-SITE SCRIPTING (XSS)
XSS útoků změní obsah stránky v poslední relaci prohlížeče přihlášeného uživatele, díky čemuž může získat přihlašovací data uživatele nebo jiné osobní údaje.
3 KRÁDEŽE INFORMACÍ
Hackeři mohou prostřednictvím těchto děr získávat a číst citlivá data jako jsou přihlašovací údaje, čísla bankovních karet nebo konkrétní dokumenty.
4 MANIPULACE S DATY
Počítačoví zloději dokáží díky zranitelnostem číst nebo i měnit data v databázích a to i bez plného přístupu do systému.
5 DOS ÚTOKY
Útoky , které potřebují mnoho zdrojů (např. paměť nebo šířku pásma v síti), aby mohly způsobit pád aplikace nebo celého systému.
6 BEZPEČNOSTNÍ BYPASS
Útočníci dokáží obejít bezpečnostní funkce softwaru, jako například kódovací protokoly nebo certifikáty.