Malé chyby, velké škody…
Programátorské chyby mohou udělat i z dobrých programů hrozbu pro váš počítač. Následky chyb mohou být hrozivé – od zhroucení systému až po odcizení dat. Víte, jak problémům předejít?
MARKUS MANDAU
„Za žádných okolností nejsme zodpovědni za to, že je uživatel tak hloupý a klikne na odkaz v e-mailu,“ říká na rovinu to, co si myslí většina programátorů, vývojář softwaru OpenCart pro online nakupování Daniel Kerr. Z hlediska bezpečnosti je prý uživatel větším potenciálním rizikem než většina chyb v programech. Ano, pravda je, že celá řada útoků nefunguje bez přímé pomoci uživatele, který často bývá tím nejslabším článkem řetězce. Fakt ale také je, že na počátku těchto problémů vždy stojí programátorská chyba.
My jsme pro vás ve spolupráci s největšími globálními hráči na poli softwaru (jako jsou Microsoft, Oracle nebo Symantec) a s dalšími 40 firmami připravili žebříček nejčastějších a nejhorších programátorských chyb (r strana 48). Pokud porovnáme tuto tabulku se seznamem aktuálních zranitelností programů (viz dole), najdete některé nebezpečné chyby i ve svých oblíbených programech. V této oblasti je důležitá především informovanost – pokud uživatel o potenciálních problémech ví, může je řešit a nebezpečí snížit nebo zcela odstranit (r rámeček na straně 49).
Infikované webové aplikace
U programů, které nejsou spuštěny v počítači uživatele, jsou na vrcholu seznamu nejhorších chyb problémy označované jako Cross-site scripting (XSS) a SQL injection. V obou případech se musí uživatel spolehnout na to, že programový kód na serveru je správný, neboť kód se spouští v "cizím" prostředí a nelze ho (z pozice uživatele) zkontrolovat. "SQL injection" je metoda napadání databázové části softwaru, při které se přes špatně zabezpečený vstup pomocí formuláře nebo cookie provede SQL dotaz útočníka. V případě XSS jsou "zdrojem útoku" infikované odkazy, do kterých jsou vloženy skripty útočníka – svou vinu zde ale nesou i obvykle špatně zabezpečené vstupy na straně webu.
Oba zmiňované problémy jsou staré a známé, což ovšem neznamená, že na ně už nenarazíte – například před několika měsíci se objevil problém s XSS dokonce u Gmailu. Na vině byl flash nástroj pro nahrávání souborů s názvem "uploaderapi2. swf" (více informací najdete například na www.nosec.org/2010/0331/479.html). Ke zneužití této chyby stačilo jen kliknout na nakažený odkaz, když je uživatel přihlášen ke svému účtu na Google Mailu. Obvykle jde o poslední přihlášení, protože útočník se obvykle nespokojí jen se získaným přístupem k účtu, ale obvykle změní heslo a celý učet si "zabere" pro své potřeby.
Uživatelé budou vždy hloupí
Flash a XSS patří mezi nejvíce podceňovaná nebezpečí. Na počátku tohoto roku hacker s přezdívkou "MustLive" objevil zranitelnost souboru "tagcloud.swf", který najdete například v blogovacím softwaru WordPress. Pokud zadáte řetězec "tagcloud.swf", zjistíte že na tuto zranitelnost lze narazit na desítkách milionů stránek. Riziko se ještě zvyšuje, podaří-li se útočníkům obejít ochranná opatření (XSS filtr) v prohlížeči. Typickou ukázkou může být aféra z konce loňského roku, kdy byla v XSS filtru Internet Exploreru nalezena zranitelnost, která umožňovala XSS útoky i u bezpečných webů. Jak autoři objevu (server SecurityFocus.com), tak i například Google doporučovali filtr v prohlížeči vypnout. Ovšem čisté "XSS svědomí" nemá ani Google: před dvěma roky se podobně nebezpečná XSS zranitelnost objevila i v aplikaci Google Dokumenty…
Jak se můžete bránit: Rozhodně nespoléhejte na programátory XSS filtrů ani na profesionalitu autorů webu. Než se vydáte na podezřelé stránky, vypněte podporu skriptu ve svém prohlížeči. Pokud používáte Firefox, doporučujeme použít doplněk NoScript. Návštěvu podezřelých webů je také lepší absolvovat po zadání adresy do příslušného pole v prohlížeči, nikoliv klikáním na externí odkaz.
Ukradené webové účty
Vysoko na stupnici nebezpečnosti jsou i útoky, které mírně modifikují princip XSS, jako například přijetí zmanipulovaného požadavku uživatele Cross-site Request Forgery (CSRF). Podobně jako XSS je uživatel nalákán ke kliknutí na nebezpečný link (například pomocí zkráceného URL). Tímto způsobem se do prohlížeče dostanou spustitelné kódy a uživatel se dostane až na webovou stránku, na kterou chce hacker zaútočit.
Na mnoha internetových stránkách je pro registraci nutná pouze první "autentizace" (prověření uživatele). Jakmile uživatel pomocí zatržítka zvolí možnost "zůstat trvale přihlášen" (na zahraničních webech například "Keep me signed in"), jsou přihlašovací data uložena spolu se "session ID" do cookie. Pomocí CSRF může útočník tyto informace získat, přihlásit se jako uživatel a jeho jménem provádět téměř cokoliv.
Pomocí CSRF byly například masivně zneužívány účty u internetové půjčovny DVD Netflix – k zasílání disků na jiné adresy, pochopitelně na náklady nic netušících majitelů účtů. Do nedávné doby byl k CSRF útoku náchylný i známý videoportál Vimeo, i když s relativně mírnými následky: útočníci mohli pouze nahrávat videa a psát komentáře nebo měnit osobní údaje u účtu oběti.
CO MŮŽETE DĚLAT
U Firefoxu lze jako ochranu doporučit plug-in CsFire (- strana 49). Ti, kteří nesurfují prostřednictvím Firefoxu, by pravidelně měli odstraňovat cookies, aby zabránili automatickému přihlášení.
Mrtvé programy
Bezpečnostní expert Peter van Eeckhoutte popisuje jím vytvořené přetečení bufferu u nástroje "Easy RM to MP3 Converter" jako jednoduchou záležitost. "Hack" opravdu nebyl nic složitého: k pádu přivedl program jednoduchý MP3 playlist v M3U formátu s necelými 30 tisíci záznamy. Jakmile dojde k přetečení bufferu a pokud je útočník úspěšný, mohou být neautorizované kódy zapsány do jiných oblastí paměti. V případě tohoto převodníku (a jeho "hacku" pomocí M3U s třiceti tisíci položkami) získal van Eeckhoutte přístup do paměti a dokázal spustit systémovou službu Telnet a kontaktovat externí počítač.
Software napsaný v počítačových jazycích, jako je C nebo C++, je náchylný především k takovým útokům, které vedou k přímému přístupu k hardwaru. Obrana pak závisí především na správě paměti, která je implementována v CPU. Do této problematické kategorie spadají téměř všechny tradiční programy – od Firefoxu přes Nero až po Photoshop. Programátor by měl monitorovat dodržování správného ukládání dat, což by ale znamenalo úpravu kódu u každé funkce a následkem by byly nejen vyšší náklady, ale také značně vyšší hardwarové nároky.
Katastrofa v počítači: Chyba v bezpečnostním programu
Nástroje spuštěné v Javě a platformě .NET jsou k těmto problémům víceméně imunní, protože prostředí monitoruje správu systémových zdrojů. Nicméně mnohem větším problém je, když se objeví chyby přímo v programovacím "prostředí". Například v Javě bylo v letošním roce již objeveno dvacet zranitelností.
CO MŮŽETE DĚLAT
Udržujte svůj software aktualizovaný – ideálně pomocí speciálního nástroje (viz rámeček vpravo), abyste byli schopni chyby v programech co nejrychleji opravit, a tak zavřít vrátka potenciálním útočníkům. Windows XP to hackerům zbytečně usnadňují. Když je program v XP spuštěn s právy administrátora, kód napadený "přetečením bufferu" získá tato práva také. Je ale nutné podotknout, že pokud používáte Vistu nebo Windows 7 (a máte aktivní UAC – řízení uživatelských účtů), jste zcela v bezpečí.
„Přetečené“ webové prohlížeče
Pro některé typy přetečení bufferu mají prohlížeče zabudovanou ochranu, která má kontrolovat správnost zadávaných adres. K přetečení bufferu také může dojít kvůli celé řadě programátorských chyb, které mají za následek špatný management paměťových zdrojů. Například v relativně nové Opeře 10.50 se objevilo přetečení bufferu při výpočtech s celými čísly (viz bod 17 v tabulce vlevo dole). K havárii zde dojde, pokud se v http hlavičce (v hodnotě "content length") objeví příliš velké číslo. Abychom byli konkrétní: pokud má číslo více než dvacet míst, Opera havaruje při pokusu o načtení požadovaných zmanipulovaných stránek. K pádu dojde, protože výpočet požadované velikosti paměti (chyba 18) není korektní. Podle vývojářů Opery ale škodu způsobí jedině hodnota vyšší než 263 – důvodem je chyba v konverzi, která vede k překročení indexu. To útočníkovi umožní kopírovat libovolnou část paměti využívané Operou na jiné místo.
Nedávno Google zaplatil 1 300 amerických dolarů za objevení přetečení bufferu při výpočtech s celými čísly, což je nejvyšší částka, kterou koncern zaplatil v rámci iniciativy "Chromium security". V browseru Chrome vedla k přetečení bufferu příliš vysoká hodnota pro WebGL engine, který využívá grafickou kartu pro počítačové operace.
CO MŮŽETE DĚLAT
Možnosti uživatele jsou poněkud omezené, protože chyba se týká přímo zpracování http kódů, které nelze ovlivnit vypnutím či zapnutím funkcí prohlížeče. Nejrozumnějším tahem je v tomto případě zaměření pozornosti na prohlížeče, které jsou méně náchylné k podobným "paměťovým chybám". A konkrétní údaje? Za poslední tři měsíce bylo ve Firefoxu nalezeno deset mezer, což ve srovnání s jednou chybou v Opeře není zrovna optimistické číslo. Dobrou volbou může být rovněž Google Chrome s pouhými třemi nalezenými zranitelnostmi.
Zničen antivirovým skenem
Po instalaci antivirového programu obvykle dochází ke spuštění jeho automatického "updatu" a také k načtení nejnovějších signatur. To je proces, který vyžaduje obrovskou "důvěru" a je vždy spouštěn s administrátorskými právy. Pokud se v této fázi objeví chyba, může dojít k nejhoršímu: systém se nejen zhroutí, ale může být i poškozen – jak nechtěně předvedli specialisté nejmenované renomované bezpečnostní firmy v dubnu tohoto roku.
Vadný soubor se signaturou způsobil problémy s Windows, protože systémový soubor svchost.exe označil za virus, který ihned "eliminoval". Příčinou byla programátorská chyba a absence kontroly kvality: nebyla provedena ani standardní kontrola kódu, ani nebyla signatura otestována ve Windows XP s balíčkem Service Pack 3.
Postižení uživatelé museli spustit Windows v "safe modu" a nahrát do systému opravenou signaturu pomocí USB klíče. Tento problém lze zařadit mezi 25 nejhorších programátorských "kiksů": programátoři této bezpečnostní firmy se dopustili chyb č. 7, 8, 9, 16 a 22.
Tento "problém" však není v oblasti bezpečnostního softwaru žádnou výjimkou – s podobnými problémy se již musela potýkat většina bezpečnostních programů. Za zmínku také stojí rozhraní ActiveX od Microsoftu, ve kterém bylo v nedávné době nalezeno 13 zranitelností. Není proto překvapivé, že se problémy s ActiveX moduly (u on-line virových skenerů) nevyhnuly ani dalším bezpečnostním firmám. Ať už šlo o možnost stažení aktualizací bez ověření zdroje, nebo o přetečení vyrovnávací paměti – oba případy ukazují na potenciální rizikovost platformy ActiveX.
CO MŮŽETE DĚLAT
Nic. Jedinou věcí, která vás dokáže ochránit před chybami v bezpečnostním softwaru, je nepoužívat ho – riziko, které podstoupíte při jeho absenci, je však mnohem větší. Nezbývá tedy nic jiného než bezpečnostním firmám důvěřovat a před ztrátou dat se chránit alternativními metodami – například zálohováním.
AUTOR@CHIP.CZ
Tyto nástroje vám pomohou s problematickým SW
Před většinou programátorských chyb se můžete chránit pomocí celé řady opatření. Téměř všechny potřebné nástroje lze nalézt na Chip DVD.
AKTUALIZACE BROWSERU
Ústředním bodem útoku škodlivých kódů je prohlížeč, a proto je důležité ho maximálně zabezpečit. Z toho důvodu vám doporučujeme Firefox, který lze pomocí doplňků nastavit tak, že uživatele ochrání před většinou nebezpečných útoků využívajících známé softwarové zranitelnosti. Jako dva doplňky, které by měly tvořit základ vaší ochrany prohlížeče, lze označit NoScript, který chrání před technikou Cross-site scripting (a dalšími útoky využívajícími skripty), a CsFire, který odhaluje Cross-domain útoky.
AKTUALIZACE SOFTWARU
Jakmile programátoři objeví zranitelnost softwaru, snaží se ji obvykle okamžitě řešit – buď aktualizací, nebo (pokud to software neumožňuje) novou verzí programu. Jen málokdo ale pravidelně navštěvuje weby výrobců softwaru, aby kontroloval, zda není k dispozici nová verze programu nebo důležitá záplata. A právě k tomuto účelu slouží Secunia Personal Software Inspector, který tuto činnost provádí za vás a upozorňuje vás na nové verze a aktualizace.
IZOLACE SOFTWARU
V některých případech může trvat až příliš dlouho, než je záplata k dispozici, a do té doby je používaný program zranitelný a potenciálně nebezpečný. Právě zde přichází na pomoc Sandboxie: umožní spuštění programu ve speciálním prostředí, které je izolované od operačního systému. Proto lze Sandboxie skvěle využít například pro testování programů.
Foto: Problematický filtr: Filtr na ochranu před hrozbou "Cross-Site scripting" v Internet Exploreru je náchylný k chybám. Můžete ho deaktivovat v "Možnostech Internetu".
Foto: CsFire: Doplněk do Firefoxu ještě o něco lépe zabezpečí vaše surfování.
Foto: Software Inspector: Tento nástroj kontroluje, zda je váš software aktuální.
Foto: Programovaná havárie: Pomocí přetečení bufferu při operaci s celými čísly v PHP skriptu dojde v Opeře k havárii.