facebook LinkedIN LinkedIN - follow
Hlavní partner sekce
Partneři sekce
Tematické sekce
 
Branžové sekce

Přihlaste se k odběru zpravodaje SystemNEWS na LinkedIn, který každý týden přináší výběr článků z oblasti podnikové informatiky

Přehledy
 
Partneři webu
IT SYSTEMS 12/2008 , IT Security

Sedm z deseti webů je zranitelných

XSS – skriptování napříč servery

Tomáš Přibyl


Skriptování napříč servery je velmi rozšířený a nebezpečný typ útoku, který je ale i v našich zeměpisných šířkách známější pod původním anglickým označením cross-site scripting nebo zkratkou XSS.


Seznamte se: XSS

Ač by se jako logičtější zdálo používání zkratky CSS (a dříve tomu tak skutečně bylo), pro časté záměny s kaskádovými styly CSS se dnes používá pouze a jen zkratka XSS. Jedná se přitom o metodu útoku, kdy dochází k narušení konzistence webových stránek využitím chyb. Nejčastěji nedostatečným filtrováním na vstupu, díky čemuž může agresor poměrně jednoduše vložit do regulérní stránky svůj vlastní kód.
To je pro něj výhodné, protože se tak „zaštítí“ nějakou regulérní stránkou. Jinými slovy: pro útočníka je skutečným požehnáním, když svůj skript dokáže vložit do webu nějaké relativně důvěryhodné bankovní instituce nebo renomovaného zpravodajského serveru. Ostatně statistiky suše konstatují, že dnes se přes osmdesát procent útoků děje právě pomocí skriptů umístěných (nejrůznějším způsobem, XSS je pouze jedna z metod) do jinak korektních stránek.
Kromě vkládání škodlivých kódů (kde jsou navíc možnosti XSS relativně omezené) může touto metodou být prováděna změna vzhledu i obsahu webů, jejich funkčnosti, může docházet k získávání citlivých údajů či obcházení bezpečnostních prvků.
Pokud bychom se měli podívat na úspěšné útoky provedené tímto způsobem, pak historicky nejhorší statistiku má americký web iPowerWeb, z jehož více než sedmi set tisíc stránek byla počátkem loňského roku více než třetina infikována! Server proto musel přistoupit k masivní očistě a dnes jeho jméno nenajdete ani mezi dvě stě padesáti nejinfikovanějšími weby na světě.
Postižený tímto útokem byl i nově zvolený americký prezident Barack Obama, když nezjištění útočníci modifikovali odkazy na jeho kandidátských webových stránkách – a návštěvníci byli automaticky přesměrováváni na web Hillary Clintonové (v době, kdy usilovala o nominaci demokratické strany právě proti Obamovi). Což byl ještě relativně korektní typ zneužití chyby, protože XSS umožňuje velmi snadno třeba i měnit obsah webu – což by třeba právě u citlivých politických témat mohlo vyvolat nemalé vášně. V minulosti byly například zaznamenané modifikace stránek CNN.com, FBI.gov, Time.com, Yahoo, Apple Computer, Microsoft, Zdnet či Wired.

XSS třikrát jinak

Jako většina útoků proti webovým stránkám představuje XSS injektáž (vložení) kódu tam, kde to programátor stránek nepředpokládal. Rozlišujeme přitom tři základní typy útoků.
První se označuje jako „lokální“ či „DOM based“. Jeho podstatou je neošetření přenesení proměnné z URL do javaskriptu. Kód je zkrátka součástí URL odkazu a webová stránka jej zpracuje jako svoji součást. Takto mohou být napadené i statické stránky. Důležitá je přitom úprava URL odkazu: vlastní stránka totiž není zasažena, umožňuje jen zpracování nekorektního URL odkazu. Pokud se má někdo stát obětí tohoto typu, musí mu být nekorektní odkaz podstrčený.
Druhý útok je označovaný jako „reflexed“ a je prvnímu podobný s tím rozdílem, že se týká výhradně generovaných stránek (např. PHP). V kódu URL při něm je odkaz, který se stává součástí stránky (typicky jako nadpis). Jde tedy o kód v URL, který není jakkoliv upravován nebo filtrován.
Oba tyto útoky jsou společně označované též jako „non-persistent“, přičemž předpokládají podsunutí nebo úpravu URL odkazu. Následující typ útoku XSS je ale nejnebezpečnější, protože provádí úpravu přímo v kontextu stránky. Jedná se o útok označovaný jako „persistent“, „stored“ nebo „second-order“ a týká se opět jen stránek generovaných z databáze. Skript (nejčastěji Java, ale třeba i VBScript, ActiveX, HTML kód nebo Flash – což se ostatně týká i předchozích útoků) vložíte do stránky jako součást komentáře. Tento komentář je následně i se skriptem uložený do databáze a poté se zobrazuje každému návštěvníkovi. Jedná se o typický problém různých diskusních fór, návštěvnických knih, internetových obchodů apod.

Možnosti využití XSS

Je pravdou, že třeba JavaScript je jazyk zpracovávaný prohlížečem a nemůže pracovat s obsahem disku napadeného stroje, takže se může zdát jeho nebezpečnost jako přehnaná. Jenže třeba právě skripty Java lze šikovně kombinovat se skriptovacím jazykem na straně serveru (ASP, PHP, ...). A pak může docházet k odcizování souborů cookies (včetně autentizačních) k příslušné dané stránce či může docházet k modifikacím textů. Připomínáme, že odcizování cookies (cookie stealing) je jednou ze základních možností, jak se dostat k administrátorským účtům.
Dále nesmíme zapomínat, že v případě editace stránek má prioritu CSS styl (řeč je skutečně o kaskádách, nikoliv o starším označením XSS). Pokud je v kódu přítomný, bude zobrazený nad původní stránkou. Což znamená, že jeho použitím lze vytvořit úplně nový obsah stránky.
A to není vše, web lze dynamicky „rozpohybovat“ díky možnostem jazyka JavaScript, takže nová stránka je zobrazena hned po načtení stránky (onLoad), při odeslání stránky (onSubmit), při kliknutí (onClick), při přejetí myší (onMouseOver) nebo třeba při výskytu chyby (onError).
Útočník dále může pomocí XSS získat přístup k dokumentu (DOM objektu) na cílovém serveru, který může libovolně měnit. Může přesměrovávat návštěvníky na jiné stránky, aniž by cokoliv tušili. Může otevírat nová okna, spouštět ActiveX objekty nebo způsobit „pád“ systému návštěvnického počítače (útok denial of service). Může se dostávat na jiné weby, typicky intranety. A pochopitelně může spouštět škodlivé kódy (nebo k tomu alespoň vytvářet vhodné podmínky).

Obrana a ochrana

Ochrana před XSS může probíhat na straně serveru nebo na straně uživatele. Na straně serveru jde o důsledné filtrování nebezpečných prvků nebo jejich převedení na neškodnou podobu. V PHP pro to existuje funkce htmlspecialchars(), v MySQL zase mysql_real_string_escape(). Filtrování je o něco náročnější, protože útok může nabývat mnoha různých podob (např. v případě non-persistent útoků dochází k převodu kódu do HEX podoby nebo jiného skrytí – prohlížeč pak kód přeloží správně, ale jednoduchý filtr nebo oko vidí jen směsici nic neříkajících znaků). Ochrana na straně uživatele se děje vypnutím Java-skriptů, ale mnoho dnešních webových stránek bez této technologie nebude zobrazeno korektně, takže „z vaničky vyléváme i dítě“.
Proto musí ležet ochrana (a zodpovědnost) především na straně serverů, kdy správci musí vycházet z logiky, že jakýkoliv vstup je nebezpečný a musí být ošetřený. Protože vycházet z logiky, že jsou nebezpečné jen některé vstupy, znamená, že v tak dynamické oblasti, jako je ICT bezpečnost, budeme zcela jistě již zítra nemile překvapeni.
Počítejte proto opravdu se všemi vstupy. Jedná se například o parametry adres (čísla článků, vložené texty – prostě vše, co je v URI) či formulářové prvky (opět všechny! – tedy viditelné i skryté). U formulářových prvků upozorňujeme na obzvláště důkladnou filtraci: nespoléhejte jen na to, co máte na svém webu, ale počítejte také s eventualitou, že si útočník může připravit svůj vlastní formulář a následně ho použít!
Kromě toho existuje ještě několik vstupů, které se pro XSS prakticky nepoužívají, ale když už by se vám někdo opravdu chtěl dostat na kobylku, mohl by se o to právě přes ně pokusit. Jsou to třeba označení typu a vlastností prohlížeče, cookies, prakticky jakékoliv parametry v HTTP komunikaci (hlavičce) a ve Web 2.0 aplikacích i vstupy jako XML/RSS apod.
Dle průzkumu americké společnosti WhiteHat Security je sedm z deseti webů zneužitelných pomocí XSS – a proto tento typ útoku poznačila jako „hrozbu číslo jedna“. Dle bezpečnostních specialistů by přitom nebezpečí XSS mělo dále narůstat – třeba pro vývoj sofistikovaných phishingových útoků nebo ataků odolných proti stávajícím ochranným prvkům.

Obr. 1: PC farma CERN
Obr. 1: PC farma CERN

Chcete získat časopis IT Systems s tímto a mnoha dalšími články z oblasti informačních systémů a řízení podnikové informatiky? Objednejte si předplatné nebo konkrétní vydání časopisu IT Systems z našeho archivu.

Inzerce

Modernizace IS je příležitost přehodnotit způsob práce

IT Systems 4/2025V aktuálním vydání IT Systems bych chtěl upozornit především na přílohu věnovanou kybernetické bezpečnosti. Jde o problematiku, které se věnujeme prakticky v každém vydání. Neustále se totiž vyvíjí a rozšiřuje. Tematická příloha Cyber Security je příležitostí podívat se podrobněji, jakým kybernetickým hrozbám dnes musíme čelit a jak se před nimi můžeme chránit. Kromě kybernetické bezpečnosti jsme se zaměřili také na digitalizaci průmyslu.