Menu
CHIP Speedtest

Malé chyby, velké škody…

10.08.2010 07:44 | Redakce Chip
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?

„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 on-line 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. Pokud porovnáme tuto tabulku se seznamem aktuálních zranitelností programů, 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.

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“.
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“.

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.

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. Ti, kteří nesurfují prostřednictvím Firefoxu, by pravidelně měli odstraňovat cookies, aby zabránili automatickému přihlášení.

Nejhorší programátorské chyby
Nejhorší programátorské chyby

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 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.

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 nahoře). 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 with Service Pack 3.

Tyto nástroje vám pomohou s problematickým softwarem
Před většinou programátorských chyb se můžete chránit pomocí celé řady opatření.

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ů.

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.

Zajímavosti ze světa IT v e-mailu

Stačí odeslat svoji e-mailovou adresu


Odesláním formuláře souhlasíte se zpracováním svých osobních údajů a užitím pro marketingové účely vydavatelství Burda Praha, spol. s.r.o.

Předplatné / nákup chipu Digitální edice chipu Aktuální vydání