Zobrazovanie inak neexistujúcich reklám, odcudzenie prihlasovacích údajov z formulárov či dokonca ťaženie kryptomien popri čítaní online správ. Aj takto môže vyzerať XSS (cross site scripting) útok. Aby ste ho dokázali identifikovať, v nasledujúcom blogu sa dočítate, ako presne vyzerá a ako sa rozdeľuje. Neskôr, v pokračovaní, vám predstavíme možnosti, ako sa brániť.

 

Čo je XSS?

XSS útok neprebieha ako vo filmoch, kde sa hacker dostane do vášho počítača alebo servera a ukradne vaše dáta, obrázky či citlivé dokumenty. XSS útoky sú primárne cielené na používateľov webových aplikácii a portálov. 

Medzi menej závažné škody, ktoré môže úspešný XSS útok napáchať, patrí napríklad zobrazenie reklám na stránkach, kde reklamy nie sú vôbec zapnuté. O čosi horšie sú už následky útokov, kde sú prihlasovacie údaje z formulárov zaslané priamo do rúk útočníka (takémuto útoku čelil napríklad aj E-bay). Časté je tiež zneužitie stránok a aplikácii na ťaženie kryptomien, s ktorým sa koncom minulého roka musel popasovať i výrobca sieťových diskov QNAP. 

Dôvodom častých útokov je napríklad populárnosť Single Page Applications (SPA) – aplikácii s kódom tvoreným z veľkej časti dynamickým JS, s ktorým sa útočníkom jednoducho manipuluje. 

XSS útoky skryté za pluginy a appky - Bart Digital Products

zdroj: https://unsplash.com/photos/ZjX-z2Q5zrk

 

Rovnako týmto útokom napomáha aj aktuálna vojnová situácia na Ukrajine a prebiehajúci boj v digitálnom priestore. Obľúbené sú najmä DDoS (Distributed Denial of Service) útoky. Ich cieľom je maximálne zahltit server požadovanej nepriateľskej stránky či aplikácie a teda ju zhodiť a zabrániť používateľom v prístupe na ňu. O tejto téme nedávno písal kolega Dominik, jeho text si môžete prečítať TU..

DDoS útoky nezriedka používajú aj tzv. etickí hackeri (neškodia, ale testujú a odhaľujú chyby, zraniteľnosti, a pomáhajú tak stránkam chrániť sa), ako obranná skupina Anonymous, ktorá podhadzuje virtuálne polená pod kódy stránok a aplikácii Ruskej vláde, aby zabránila v šírení dezinformácií.

 

Nenápadní zlodeji

Pri sofistikovanom XSS útoku si spočiatku žiaden problém nevšimnete. Plugin, aplikácia či web môže pracovať správne a spoľahlivo. V určitý moment alebo pri určitej situácii, napríklad pri prihlasovaní sa do bankového účtu či na sociálne siete, sa však aktivuje malá časť kódu nahrádzajúca pôvodný kód a zmení či rozšíri tak jeho funkciu. Trebárs vyplňovacie políčko na PIN  je rozšírené aj o funkciu na automatické zasielanie údajov na externý server, ktorý však nemá žiadnu spojitosť s originálnym zabezpečeným serverom aplikácie. Práve naopak, je priamo spojený s hackerom.

XSS útoky skryté za pluginy a appky - Bart Digital Products

zdroj: https://portswigger.net/web-security/cross-site-scripting 

 

Odporúčame preto inštalovať si do počítačov či mobilov len overené a vám známe aplikácie a navštevovať len oficiálne weby. Rovnako opatrne je potrebné pristupovať k rôznym pluginom a vylepšeniam do prehliadačov. Ja osobne som na pozore aj pri mobilných apkách, ktoré sa silou mocou snažia otvoriť obsah v ich integrácii prehliadača. Takéto správanie je prinajmenšom podozrivé.

 

Ako sa stať hackerom?

Hlavnou úlohou XSS útokov je vloženie a sfunkčnenie cudzieho kódu. Ono na tom nie je nič ťažké, stačí iba spustiť stránku vo svojom obľúbenom prehliadači, otvoriť nad ňou developerskú konzolu (DevTools), dopátrať k nejakému funkčnému JavaScriptu (JS) a dopísať požadované zmeny. 

Možno si teraz myslíte, že ak ste v devTool-e vložili váš JS, hurá, stali ste sa hackerom. Takto to žiaľ nefunguje. Tým, že pokazíte interpretáciu stránky vo vašom prehliadači, nikoho nehacknete. Je potrebné ešte dostať chybu na webový prehliadač na počítači vašej obete. To je možné spustením skriptu, či dokonca podhodením spustenia celého bloku kódu, o ktorom prehliadač nevie, že nejde o originálny kód s pôvodným zámerom. 

XSS útoky skryté za pluginy a appky - Bart Digital Products

Zdroj: https://www.quora.com/What-is-cross-site-scripting 

 

Napríklad: používateľ zadá na webovej stránke obsah do textarea. Vývojár webovej stránky však nesprávne alebo vôbec neošetril daný obsah a použije ho nasetovanim atribútu `innerHTML`. Obsah sa teda stáva súčasťou kódu stránky a zobrazuje sa všetkým jej používateľom. V prípade, že je obsahom skript, stránka ho nevníma ako text, ale ako príkaz, ktorý vykoná.

Takáto chyba bola na začiatku fungovania webu úplne bežná a preto sa v komentároch k blogom či na fórach často objavovali práve škodlivé kódy vyvolávajúce externé funkcie, ktoré mohli napríklad trackovať pozíciu myšky na stránke či dokonca odchytávať všetky vaše stlačenia kláves a takto zistiť akékoľvek heslá.

Útokom využívajúcim práve vyvolanie funkcií z externých zdrojov, sa dá brániť napríklad nastavením správneho `same-origin policy`. Ten vymedzuje domény a adresy, z ktorých je možné sťahovať externý obsah (obrázky, js, css, atď.) Tento postup však nie je vždy efektívny, najmä ak sa jedná o jednoduchšie a menšie script injecty, bez potreby externe doťahovaných kódov – tie sa jednoducho stanú súčasťou webu, vykonajú sa a následne spôsobia problémy. Základom je teda správna identifikácia možných rizík. 

 

Základné (trošku old-school) rozdelenie XSS útokov

Reflected XSS (AKA Non-Persistent alebo Type I)

XSS útoky skryté za pluginy a appky - Bart Digital Products

Zdroj: https://www.securitydrops.com/360-xss/

 

Ide o pomerne jednoduchý spôsob, ako vykonať XSS útok. Škodlivý kód sa pri ňom zasiela v podobe odpovede na HTTP request, najčastejšie pri vyhľadávaní, chybových správach alebo iných odpovediach, ktoré vracajú použiteľné dáta pre web či aplikáciu.

XSS útoky skryté za pluginy a appky - Bart Digital Products

 

Stored XSS (AKA Persistent or Type II)

XSS útoky skryté za pluginy a appky - Bart Digital Products

Zdroj: https://avinetworks.com/glossary/cross-site-scripting/ 

 

Útok často odoslaný v podobe automatického e-mailu informujúceho trebárs o odpovedi na váš komentár. Dáta sú v tomto prípade uložené na nezabezpečenom úložisku a distribuované k jednému alebo viacerým prijímateľom, u ktorých sa škodlivý kód vykoná.

XSS útoky skryté za pluginy a appky - Bart Digital Products

 

DOM Based XSS (AKA Type-0)

XSS útoky skryté za pluginy a appky - Bart Digital Products

Zdroj: https://brutelogic.com.br/blog/dom-based-xss-the-3-sinks/

 

Tento typ útoku reprezentuje práve príklad už popísaný vyššie. Prijatý obsah pri ňom určitým spôsobom modifikuje DOM štruktúru našej stránky. Štruktúra (DOM = Document Object Model) je písaná HTML jazykom (v dnešnej dobe je najmodernejšia HTML5) a predstavuje zhluk tagov – symbolov, nesúcich informáciu o tom, ako je stránka poskladaná, a ako má fungovať. Ak sa teda jej súčasťou stane škodlivý kód, každé načítanie stránky tento kód spustí a poškodí používateľa. Nahrávanie škodlivého obsahu priamo do DOM prostredníctvo `innerHTML` bez správneho ošetrenia a sanitizácie môže byť katastrofálne.

XSS útoky skryté za pluginy a appky - Bart Digital Products

Toto základné rozdelenie je však dnes už zastaralé, pretože formy útokov sa dajú navzájom kombinovať. Zároveň je teda čím ďalej tým náročnejšie sa voči nim brániť. V ďalšom blogu sa preto pozrieme práve na moderné rozdelenie XSS útokov a praktické kroky, ako voči nim bojovať.

 

Viac o XSS útokoch a ich modernejšom rozdelení
sa dočítate tu