Čo je škodlivý kód. Čo je škodlivý kód Umiestnite silné heslá na serverový softvér

Škodlivý kód je kód, ktorý zasahuje do normálneho fungovania webovej stránky. Môže byť vložený do tém, databáz, súborov a doplnkov.


Viac videí na našom kanáli - naučte sa internetový marketing so SEMANTICOU

Výsledkom pôsobenia škodlivého kódu môže byť odstránenie niektorého užitočného obsahu, prípadne jeho zverejnenie na zdroji tretej strany. Týmto spôsobom môžu útočníci organizovať krádeže obsahu. Zvlášť sklamaním je, ak bol tomuto vplyvu vystavený mladý zdroj s autorskými článkami. Môžete mať dojem, že to bol on, kto ukradol obsah zo staršieho zdroja.

Škodlivý kód je tiež možné umiestniť do bezplatnej témy skryté odkazy na stránky tretích strán prístupné vyhľadávacím nástrojom. Tieto odkazy nebudú vždy škodlivé, ale zaručene tým utrpí váha hlavnej stránky.

Všeobecným účelom všetkých škodlivých kódov je narušiť webové stránky.

Navonok je škodlivý kód chaotický súbor znakov. V skutočnosti tento nezmysel skrýva zašifrovaný kód obsahujúci postupnosť príkazov.

Ako sa škodlivý kód dostane na stránku

Existujú dva spôsoby, ako sa škodlivý kód môže dostať na stránku.

1. Sťahovanie súborov a pluginov z pochybných a nespoľahlivých zdrojov. Šifrované odkazy najčastejšie prenikajú na stránku takýmito spôsobmi. Explicitný kód sa týmto spôsobom dostane na stránku len zriedka.

2. nasleduje prienik. Tento spôsob sa považuje za nebezpečnejší, pretože hacknutie webovej stránky umožňuje preniesť nielen „jednorazový“ kód, ale aj celé štruktúry s prvkami škodlivého programu (malvéru).

Takýto kód je veľmi ťažké zničiť, pretože. po odstránení sa dá obnoviť.

Kontrola webových stránok na prítomnosť škodlivého kódu

Malo by sa pamätať na to, že tieto zákerné konštrukcie sa môžu objaviť nielen v aktívnej téme, ale aj v akomkoľvek zdrojovom súbore. Existuje niekoľko spôsobov, ako ich nájsť:

  • Manuálne. Ak to chcete urobiť, musíte porovnať obsah všetkých aktuálnych súborov s neinfikovanými verziami zálohy. Všetko, čo je iné, musí byť odstránené.
  • S bezpečnostnými doplnkami. Najmä WordPress ponúka doplnok Wordfence Security. Má možnosť skenovať súbory stránok na obsah cudzieho kódu.
  • S pomocou podpory hostingu. Vlastník stránky má právo kontaktovať ich so žiadosťou o skenovanie zdroja pomocou ich antivírusu. Výsledkom je, že poskytnú správu o prítomnosti infikovaných súborov. Tieto súbory je možné vyčistiť od nadbytočných konštrukcií pomocou bežného textového editora.
  • Cez SSH prístup na stránku. Samotné vyhľadávanie sa vykonáva pomocou príkazov:

nájsť /aktuálny adresár stránky -type f -name "*" -exek -"eval" () \; > ./eval.log

nájsť /aktuálny adresár stránky -type f -name "*" -exek-"base64" () \; > ./base64.log

nájsť /aktuálny adresár stránky -type f -name "*" -exek -"file_get_contents" () \; > ./file_get_contents.log

V dôsledku ich vykonania sa získajú informácie o podozrivých súboroch. Zoznam týchto súborov sa zapíše do protokolu uloženého v aktuálnom adresári.

  • Kontrola stránky na prítomnosť škodlivého kódu pomocou funkcie eval. Táto funkcia php spúšťa akýkoľvek, dokonca aj šifrovaný kód. Ako jeden z argumentov je typ kódovania daný ako vstup pre túto funkciu (zvyčajne base64_decode alebo str_rot13). Práve vďaka použitiu populárnych kódovaní vyzerá škodlivý kód ako nezmyselná sada latinských znakov.

Otvorte editor stránky.

Skopírujte obsah súboru functions.php do schránky.

Vložte ho do ľubovoľného textový editor(notebook).

Nájdite príkaz eval.

  • Pred odstránením škodlivého kódu analyzujte, aké parametre funkcia očakáva ako vstup. Pretože parametre sú prijímané v zašifrovanej podobe, je potrebné ich dešifrovať pomocou dekodekov. Po rozpoznaní vstupného parametra môžete rozhodnúť o jeho budúcom umiestnení v texte súboru functions.php.

Odstránenie škodlivého kódu

Po zistení škodlivého kódu ho jednoducho treba vymazať ako bežný riadok v textovom súbore.

Ochrana pred škodlivým kódom

Aby sa zabránilo výskytu škodlivého kódu na stránke, je potrebné dodržiavať množstvo preventívnych opatrení.

Používajte iba osvedčený softvér:

  • Sťahujte distribúcie iba z dôveryhodných zdrojov.
  • Včas spustite aktualizáciu serverového softvéru.
  • Vykonávajte pravidelné audity zabezpečenia servera.
  • Odstráňte zastarané ladiace skripty.

Nastavte silné heslá na serverovom softvéri:

  • Vymyslite 12-znakovú štruktúru, ktorá obsahuje čísla a písmená s rôznymi veľkými a malými písmenami.
  • Vytvorte si vlastné jedinečné heslo pre každú službu.
  • Zmeňte svoje heslá každé 3 mesiace.

Prevezmite kontrolu nad vstupom používateľa:

  • Vo vstupných poliach nastavte značkovacie filtre HTML, ktorých obsah bude zahrnutý do kódu stránky.
  • Zorganizujte overenie vstupných údajov na strane servera, či sú v súlade s povoleným intervalom.
  • Použite WAF. Web Application Firewall je výkonný nástroj na ochranu vašich stránok pred útokmi hackerov.

Obmedzte prístupové práva k svojmu zdroju.

Zablokujte alebo obmedzte prístup k nástrojom na správu vášho webového nástroja a jeho databáz. Okrem toho zablokujte prístup k súborom nastavení a záložným kópiám pracovného kódu.

Takéto prenikanie škodlivého kódu je najviac náchylné na stránky, na ktorých je implementovaná možnosť sťahovať používateľské súbory.

1. Zorganizujte ochranu pred robotmi. Na tieto účely je veľa CMS vybavených špeciálnymi zásuvnými modulmi;

2. Nastavte overenie používateľského vstupu:

  • Zabráňte vloženiu kódu JavaScript do konštrukcie t>.
  • Udržujte zoznam bezpečných značiek HTML a odfiltrujte konštrukcie, ktoré nie sú zahrnuté v tomto zozname.
  • Analyzujte odkazy odoslané používateľmi.
  • Na toto existujú špeciálne služby, ako je napríklad Safe Browsing API. Umožňuje vám skontrolovať bezpečnosť dokumentu podľa adresy URL.

Ako zabrániť náhodnému umiestneniu škodlivého kódu.

  • Starostlivo sledujte softvér, ktorý používate:

Knižnice a rozšírenia CMS sťahujte iba z dôveryhodných zdrojov a najlepšie z oficiálnych stránok.

Preštudujte si kód neštandardných rozšírení, ktoré sa chystáte umiestniť na motor svojej stránky.

  • Umiestňujte reklamy veľmi opatrne:

Uverejňujte na svojej stránke reklamy, ktoré ponúkajú iba spoľahliví inzerenti.

Skúste na svoju stránku zahrnúť statický obsah.

pozor pridružené programy so skrytými blokmi.

Distribúcia škodlivého softvéru prostredníctvom webových stránok

Costin Rayu, Kaspersky Lab

Úvod. Počítačová kriminalita: trendy a vývoj

Za posledných pár rokov sa internet stal nebezpečným miestom. Pôvodne vytvorený pre relatívne malý počet používateľov vysoko prekonal očakávania svojich tvorcov. Dnes je na svete viac ako 1,5 miliardy používateľov internetu a ich počet neustále rastie, pretože technológia sa stáva dostupnejšou.

Tento trend si všimli aj kriminalisti a veľmi rýchlo pochopili, že páchanie trestných činov pomocou internetu (dnes nazývané kyberzločin) má množstvo významných výhod.

Po prvé, počítačová kriminalita nie je príliš riskantná: pretože nemá žiadne geopolitické bariéry, je pre orgány činné v trestnom konaní ťažké chytiť zločincov. Vedenie medzinárodných vyšetrovaní a súdnych sporov navyše stojí veľa peňazí, takže takéto opatrenia sa zvyčajne vykonávajú iba v špeciálnych prípadoch. Po druhé, počítačová kriminalita je jednoduchá: na internete je obrovské množstvo „návodov“ na hackovanie počítačov a písanie vírusov a nie sú potrebné žiadne špeciálne znalosti ani skúsenosti. Toto sú dva hlavné faktory, vďaka ktorým sa počítačová kriminalita stala multimiliardovým odvetvím, ktoré je skutočne uzavretým ekosystémom.

Spoločnosti v oblasti informačnej bezpečnosti aj výrobcovia softvéru neustále bojujú proti počítačovej kriminalite. Ich cieľom je poskytnúť používateľom internetu spoľahlivú ochranu a vytvoriť bezpečný softvér. Útočníci zas neustále menia taktiku, aby čelili prijímaným protiopatreniam, čo viedlo k dvom odlišným trendom.

Po prvé, malvér je nasadený pomocou zero-day zraniteľností, t.j. Chyby, pre ktoré ešte neboli vytvorené záplaty. Pomocou takýchto zraniteľností aj takých počítačové systémy na ktorom všetky Najnovšie aktualizácie, ale neexistujú žiadne špeciálne ochranné riešenia. Zraniteľnosť nultého dňa je cennou komoditou (ich použitie môže potenciálne viesť k vážnym následkom), na čiernom trhu sa predávajú za desiatky tisíc dolárov.

Po druhé, vidíme prudký nárast počtu škodlivých programov navrhnutých špeciálne na odcudzenie citlivých informácií s cieľom ich predaja na čiernom trhu: čísla kreditných kariet, bankové údaje, heslá pre prístup na stránky ako eBay alebo PayPal a dokonca aj online. heslá. -hry, napríklad do World of Warcraft.

Jedným zo zjavných dôvodov nárastu počítačovej kriminality je jej ziskovosť, ktorá bude vždy hnacou silou vytvárania nových technológií počítačovej kriminality.

Okrem vývoja, ktorý sa uskutočňuje pre potreby kyberzločincov, zaznamenávame ďalší trend – šírenie malvéru prostredníctvom World Wide Web. Po epidémiách na začiatku tohto desaťročia spôsobených e-mailovými červami, ako je Melissa, mnohé bezpečnostné spoločnosti zamerali svoje úsilie na vývoj riešení, ktoré by mohli neutralizovať škodlivé prílohy. To niekedy viedlo k tomu, že zo správ boli odstránené všetky spustiteľné prílohy.

Nedávno sa však hlavným zdrojom šírenia malvéru stal web. Škodlivý softvér je umiestnený na webové stránky a potom buď oklamaný používateľov, aby ho manuálne spustili, alebo sa automaticky spúšťa pomocou exploitov na infikovaných počítačoch.

My v Kaspersky Lab to sledujeme s rastúcim znepokojením.

Štatistiky

Posledné tri roky sme monitorovali takzvané čisté webové stránky (100 000 až 300 000), aby sme určili, kedy sa z nich stali distribučné body škodlivého softvéru. Počet monitorovaných stránok neustále rástol, pretože boli zaregistrované nové domény.

Tabuľka zobrazuje zaznamenanú maximálnu mieru infikovanosti webových stránok sledovaných počas roka. Prudký nárast podielu infikovaných stránok je zrejmý: ak v roku 2006 bola infikovaná asi každá stránka z dvadsiatich tisíc, tak v roku 2009 už bola infikovaná každá stránka zo stopäťdesiatich. Percento stránok, ktoré sú infikované, kolíše okolo tohto posledného čísla, čo môže znamenať, že bol dosiahnutý bod nasýtenia: všetky webové stránky, ktoré mohli byť infikované, boli infikované. Ich počet však stúpa alebo klesá, keď sa objavia nové zraniteľnosti alebo sa objavia nové nástroje, ktoré útočníkom umožňujú infikovať nové webové stránky.

Nasledujúce dve tabuľky zobrazujú údaje o najčastejšie sa vyskytujúcom malvéri na webových stránkach v rokoch 2008 a 2009.

Top 10 malvéru – 2008

Top 10 malvéru – 2009

V roku 2008 bol trojan Trojan-Clicker.JS.Agent.h nájdený vo veľkom počte prípadov. Nasleduje Trojan-Downloader.JS.Iframe.oj s maržou pod 1 %.


Stránka infikovaná Trojan-Clicker.JS.Agent.h

Dekódovaný Trojan-Clicker.JS.Agent.h

Trojan-Clicker.JS.Agent.h je typickým príkladom mechanizmu, ktorý bol použitý v roku 2008 a stále sa používa (v roku 2009) na vstrekovanie škodlivého kódu. Na stránku sa pridá malý kúsok kódu JavaScript, ktorý je zvyčajne zahmlený, aby sa sťažila analýza. V kóde zobrazenom na obrázku vyššie zahmlievanie jednoducho pozostáva z nahradenia znakov ASCII, ktoré tvoria škodlivý kód, ich hex kódmi. Po dešifrovaní je kód zvyčajne prvok iframe, ktorý vedie na stránku, kde sa nachádzajú exploity. Adresa IP, na ktorú odkaz ukazuje, sa môže zmeniť, pretože exploity sú hosťované na mnohých rôznych lokalitách. Domovská stránka škodlivého webu zvyčajne obsahuje exploity pre IE, Firefox a Opera. Podobne funguje aj druhý najčastejšie používaný malvér Trojan-Downloader.JS.Iframe.oj.

V roku 2009 sa vyskytli dva zaujímavé prípady, kedy bol malvér distribuovaný prostredníctvom webových stránok. V prvom prípade hovoríme o malvéri Net-Worm.JS.Aspxor.a, ktorý bol prvýkrát objavený v júli 2008 a v roku 2009 sa rozšíril. Tento malvér s špeciálna pomôcka nájde zraniteľné miesta SQL na webových stránkach, prostredníctvom ktorých vkladá škodlivé prvky iframe.

Ďalším zaujímavým prípadom je malvér Gumblar. Názov dostal podľa čínskej domény, ktorú používal na distribúciu exploitov. Reťazec „gumblar“ v zahmlenom JavaScripte vhodený na webovú stránku je neklamným znakom toho, že stránka je infikovaná.


Príklad vloženia kódu Gumblar do webovej stránky

Po deobfuskácii vyzerá škodlivý kód Gumblar takto:


Gumblar dekódovaný kód

Doména „gumblar.cn“ bola uzavretá, čo však kyberzločincom nezabránilo pokračovať v škodlivých útokoch z nových domén.

Spôsoby infekcie a spôsoby distribúcie

V súčasnosti existujú tri hlavné spôsoby infikovania webových stránok škodlivým softvérom.

Prvou populárnou metódou je využitie zraniteľností samotnej webovej stránky. Napríklad zavedenie SQL kódu, ktorý umožňuje pridávať na stránky webu škodlivý kód. Útočné nástroje ako ASPXor Trojan demonštrujú, ako táto metóda funguje: možno ich použiť na hromadné skenovanie a vloženie škodlivého kódu na tisíce IP adries súčasne. Stopy takýchto útokov možno často vidieť v protokoloch prístupu webového servera.

Druhá metóda zahŕňa infikovanie počítača vývojára webovej stránky škodlivým softvérom, ktorý monitoruje vytváranie a načítavanie súborov HTML a následne do týchto súborov vkladá škodlivý kód.

Ďalšou metódou je infikovanie trójskeho koňa, ktorý kradne heslá (napríklad Ransom.Win32.Agent.ey) na počítači vývojára webovej stránky alebo inej osoby s prístupom k hostiteľskému účtu. Takýto trójsky kôň zvyčajne komunikuje so serverom cez HTTP, aby preniesol heslá pre FTP účty, ktoré zhromažďuje z obľúbených ftp klientov, ako sú FileZilla a CuteFtp. Komponent škodlivého softvéru umiestnený na serveri zapisuje prijaté informácie do databázy SQL dáta. Potom špeciálny program, ktorý sa tiež nachádza na serveri, vykoná procedúru prihlásenia sa do všetkých FTP účtov, extrahuje indexovú stránku, pridá tam kód infikovaný trójskymi koňmi a načíta stránku späť.

Keďže v druhom prípade sa útočníci dozvedia informácie o účte poskytovateľa hostingu, často dochádza k opätovnej infekcii stránok: vývojári webových stránok si infekciu všimnú sami alebo sa o nej dozvedia od návštevníkov stránky, vyčistia stránku od škodlivého kódu a nasledujúci deň stránka je znovu infikovaná.


Príklad opätovnej infekcie webovej stránky (*.*.148.240)

Ďalšou bežnou situáciou je situácia, keď sa informácie o rovnakej zraniteľnosti alebo údaje o hostiteľskom účte súčasne dostanú do rúk rôznych kybernetických skupín, medzi ktorými sa začína boj: každá skupina sa snaží infikovať webovú stránku vlastným malvérom. Tu je príklad takejto situácie:


Príklad viacnásobnej infekcie webovej stránky (*.*.176.6) rôznym škodlivým softvérom

Dňa 6. 11. 2009 bola webová stránka, ktorú sme monitorovali, čistá. Dňa 07.05.2009 je Trojan-Clicker.JS.Agent.gk infikovaný škodlivým softvérom. Dňa 15.07.2009 bola stránka infikovaná ďalším škodlivým softvérom Trojan-Downloader.JS.Iframe.bin. O desať dní neskôr je stránka infikovaná iným programom.

Táto situácia je pomerne bežná: webové stránky môžu byť súčasne infikované rôznym škodlivým softvérom, ktorého kód je umiestnený jeden po druhom. Stáva sa to vtedy, keď sa prístupové údaje dostanú do rúk rôznych kybernetických skupín.

Nasleduje postupnosť akcií, ktoré je potrebné vykonať, ak je webová lokalita infikovaná škodlivým kódom:

  • Nastavte, kto má prístup k hostiteľskému serveru. Začnite kontrolovať ich počítače pomocou programu na zabezpečenie internetu s aktualizovanou databázou. Odstráňte všetok zistený malvér
  • Nastavte nové silné heslo hostingu. Silné heslo by malo pozostávať zo symbolov, čísel a špeciálnych znakov, aby bolo ťažšie uhádnuť
  • Nahraďte všetky infikované súbory čistými kópiami
  • Nájdite všetky zálohy, ktoré môžu obsahovať infikované súbory a dezinfikujte ich

Naše skúsenosti ukazujú, že infikované webové stránky sú po liečbe často znovu infikované. Na druhej strane sa to väčšinou stane len raz: ak sa po prvej infekcii môže správca webu obmedziť na pomerne povrchné úkony, pri druhej infekcii zvyčajne prijme vážnejšie opatrenia na zaistenie bezpečnosti stránky.

Evolúcia: hosťovanie malvéru na „čistých“ webových stránkach

Pred niekoľkými rokmi, keď kyberzločinci začali aktívne využívať web na hosťovanie malvéru, zvyčajne fungovali prostredníctvom takzvaného nepriestrelného hostingu alebo hostingu, kde platili ukradnutými kreditnými kartami. Spoločnosti zaoberajúce sa internetovým zabezpečením, ktoré si všimli tento trend, spojili svoje sily v boji proti bezohľadným poskytovateľom hostingu, ktorí umožňujú hosťovanie škodlivých zdrojov (ako je americký poskytovateľ hostingu McColo a estónsky poskytovateľ EstDomains. stránky nachádzajúce sa napríklad v Číne, kde je vypnutie stránky stále zložité, došlo k dôležitému posunu smerom k hosťovaniu malvéru na „čistých“ a celkom dôveryhodných doménach.

Akcia a reakcia

Ako sme už povedali, jedným z najdôležitejších aspektov neustáleho boja medzi kyberzločincami a dodávateľmi antivírusov je schopnosť rýchlo reagovať na to, čo robí nepriateľ. Obe strany neustále menia svoju taktiku boja a uvádzajú do prevádzky nové technológie, snažiac sa čeliť nepriateľovi.

Väčšina webových prehliadačov (Firefox 3.5, Chrome 2.0 a internet Explorer 8.0) majú teraz vstavanú ochranu vo forme filtra URL. Tento filter bráni používateľovi v prístupe na škodlivé stránky, ktoré obsahujú zneužitie známych alebo neznámych zraniteľností alebo ktoré využívajú techniky sociálneho inžinierstva na odcudzenie osobných údajov.

Napríklad Firefox a Chrome používajú Google Safe Browsing API, bezplatná služba od spoločnosti Google na filtrovanie adries URL. V čase písania tohto článku obsahoval zoznam Google Safe Browsing API približne 300 000 známych škodlivých webových stránok a viac ako 20 000 phishingových webových stránok.

Rozhranie Google Safe Browsing API využíva inteligentnejší prístup k filtrovaniu adries URL: namiesto odosielania každej adresy URL do externého zdroja na overenie, ako to robí filter na neoprávnené získavanie údajov v prehliadači Internet Explorer 8, Bezpečné prehliadanie Google kontroluje adresy URL podľa ich kontrolných súčtov vypočítaných algoritmom MD5. Aby bola táto metóda filtrovania účinná, zoznam kontrolné súčtyškodlivé adresy sa musia pravidelne aktualizovať; aktualizácie sa odporúča vykonávať každých 30 minút. Nevýhodou tejto metódy je, že počet škodlivých webových stránok je väčší ako počet záznamov v zozname. Kvôli optimalizácii veľkosti zoznamu (v súčasnosti asi 12 MB) sú zahrnuté iba najčastejšie sa vyskytujúce škodlivé stránky. To znamená, že aj keď používate aplikácie podporujúce tieto technológie, váš počítač je stále vystavený riziku infekcie pri návšteve škodlivých stránok, ktoré nie sú zahrnuté v zozname. Vo všeobecnosti rozšírené používanie technológií na bezpečnú navigáciu ukazuje, že vývojári webových prehliadačov zaznamenali nový trend šírenia malvéru prostredníctvom webových stránok a začali konať. V skutočnosti sa webové prehliadače s podporou zabezpečenia už stávajú štandardom.

Záver

Za posledné tri roky došlo k prudkému nárastu počtu legitímnych webových stránok infikovaných škodlivým softvérom. Dnes je počet infikovaných stránok na internete stokrát väčší ako pred tromi rokmi. Často navštevované stránky sú pre kyberzločincov atraktívne, pretože dokážu v krátkom čase infikovať veľké množstvo počítačov.

Webmasteri môžu ponúknuť niekoľko jednoduché tipy ako zabezpečiť webové stránky:

  • Chráňte hostingové účty pomocou silných hesiel
  • Na nahrávanie súborov na servery používajte namiesto FTP protokoly SCP/SSH/SFTP – týmto spôsobom sa ochránite pred odosielaním hesiel cez internet vo forme čistého textu
  • Nainštalujte antivírusový produkt a spustite kontrolu počítača
  • Nechajte si ich pár do zásoby zálohy miesto, aby ste ho mohli obnoviť v prípade infekcie.

Pri surfovaní na internete existuje niekoľko faktorov, ktoré zvyšujú riziko infikovania škodlivým kódom z webovej lokality: používanie pirátskeho softvéru, ignorovanie aktualizácií opravujúcich zraniteľné miesta v softvéri, ktorý používate, absencia antivírusového riešenia v počítači a všeobecné neznalosť alebo neúplné pochopenie internetových hrozieb.

Pirátsky softvér zohráva významnú úlohu pri distribúcii škodlivého softvéru. Pirátske kópie Microsoft Windows zvyčajne nepodporujú automatické aktualizácie, vydaný spoločnosťou Microsoft, ktorý dáva počítačovým zločincom príležitosť využiť neopravené zraniteľnosti v týchto produktoch.

Navyše starý Internetové verzie Prieskumník, stále najpopulárnejší prehliadač, má veľké množstvo zraniteľností. Vo väčšine prípadov Internet Explorer 6.0 bez nainštalované aktualizácie nechránené pred škodlivým vplyvom akejkoľvek škodlivej webovej stránky. Z tohto dôvodu je mimoriadne dôležité vyhnúť sa používaniu pirátskeho softvéru, najmä pirátskych kópií systému Windows.

Ďalším rizikovým faktorom je práca na počítači bez nainštalovaného antivírusového programu. Aj keď má samotný systém nainštalované najnovšie aktualizácie, škodlivý kód doň môže preniknúť cez zero-day zraniteľnosti v softvéri tretích strán. Aktualizácie antivírusové programy sa zvyčajne vydávajú oveľa častejšie ako záplaty pre softvérové ​​produkty a poskytujú bezpečnosť systému v čase, keď ešte neboli opravené zraniteľné miesta v softvéri tretích strán.

Aj keď je dôležité inštalovať aktualizácie softvéru na udržanie požadovanej úrovne bezpečnosti, dôležitú úlohu zohráva aj ľudský faktor. Používateľ môže napríklad chcieť sledovať „zaujímavé video“ stiahnuté z webu, pričom nevie, že namiesto videa bol nasadený malvér. Tento trik sa často používa na škodlivých stránkach v prípade, že exploity nepreniknú do operačného systému. Tento príklad ukazuje, prečo by si používatelia mali byť vedomí nebezpečenstva internetových hrozieb, najmä tých, ktoré súvisia so sociálnymi sieťami (Web 2.0), ktoré sú v poslednom čase aktívne napádané kyberzločincami.

  • Nesťahujte pirátsky softvér
  • Aktualizujte všetok softvér včas: operačný systém, webové prehliadače, prehliadače PDF, prehrávače atď.
  • Nainštalujte a vždy používajte antivírusový produkt ako napr Kaspersky Internet Bezpečnosť 2010
  • Stanovte si pravidlo, že vaši zamestnanci strávia každý mesiac niekoľko hodín na bezpečnostných webových stránkach, ako je www.viruslist.com, kde sa môžu dozvedieť o online hrozbách a o tom, ako sa chrániť.

Nakoniec si pamätajte: predchádzať infekcii je jednoduchšie ako ju vyliečiť. Prijmite bezpečnostné opatrenia!

Kategória: .

Tento článok je zameraný na používateľov a vlastníkov internetu informačné zdroje. Účelom článku je popísať spôsoby infikovania webových stránok škodlivým kódom, možné dôsledky tohto javu a spôsoby boja proti malvéru.

Čo je to za škodlivý kód, odkiaľ pochádza a nakoľko je nebezpečný?

Škodlivý kód je odkaz na zdroj obsahujúci malvér. Najbežnejším je dnes buď falošný antivírus (Fake Antivirus), alebo substitučný modul na zadávanie vyhľadávacích dopytov, prípadne softvér na rozosielanie spamu. V niektorých prípadoch môže malvér kombinovať funkcie odcudzenia dôverných údajov z počítača používateľa, napríklad to môžu byť heslá z administračných rozhraní pre správu webových stránok, heslá pre ftp, účty pre online služby.

1) Škodlivý odkaz vedie k systému distribúcie návštevnosti (TDS). Systém distribúcie návštevnosti vám umožňuje presmerovať návštevníka v závislosti od krajiny, operačný systém, prehliadač, použitý jazyk a ďalšie podrobnosti o rôznych zdrojoch. Tieto zdroje zase obsahujú malvér špeciálne pre toto publikum alebo tento zraniteľný softvér. Navyše, ak kliknete na škodlivý odkaz z prehliadača alebo verzie operačného systému, ktorú útočník nezamýšľal, uvidíte buď len prázdnu obrazovku, alebo napríklad vyhľadávací nástroj Stránka Google. To trochu sťažuje detekciu škodlivého softvéru. Pri dôkladnej analýze však môžete pochopiť logiku systému a chrániť sa pred infekciou.
2) Škodlivý odkaz vedie k „spoilerom“ populárnych prehliadačov a softvérových produktov. „Sploits“ sú špeciálne vytvorené kódy, ktoré využívajú zraniteľné miesta v softvéri na tiché sťahovanie a spúšťanie malvéru v počítači používateľa. V tomto prípade je softvér používateľa určený a v prípade jeho zraniteľnosti dochádza k infekcii.

Aby sa skryla prítomnosť škodlivého kódu na webovej stránke, je šifrovaná, existujú však prípady otvoreného kódu.

Príklad zašifrovaného škodlivého odkazu:

Urobme si malú analýzu štruktúry škodlivého odkazu:
doménové meno— bestlotron.cn
skript- in.cgi (systém distribúcie dopravy SUTRA)
schémy— cocacola51

V poslednej dobe sú najčastejšie škodlivé odkazy presmerované na systém distribúcie návštevnosti. V tomto prípade môže útočník po získaní prístupu na webovú stránku a umiestnení škodlivého odkazu na systém distribúcie návštevnosti na svoj zdroj kontrolovať návštevnosť z tejto webovej stránky. Schéma „cocacola51“, ktorá je uvedená v príklade, môže obsahovať viac ako jeden malvér. Systém distribúcie návštevnosti je teda len prostredníkom medzi návštevníkom napadnutej webovej stránky a škodlivým softvérom útočníka.

Druhý príklad jasne demonštruje zašifrovaný škodlivý odkaz. Na šifrovanie sa spravidla používajú jednoduché algoritmy a takmer v 99% sa takéto odkazy dajú ľahko dešifrovať.

Po dešifrovaní dostaneme nasledujúci kód:

Teraz už môžeme pozorovať adresu lokality aj skript systému distribúcie návštevnosti, ktorý je nám známy z prvého príkladu so schémou 3.

Odkiaľ pochádza tento kód na webových stránkach a prečo môže byť nebezpečný?
Webové stránky sa už spravidla nehackujú manuálne. Všetko bolo zautomatizované. Pre tieto účely hackeri napísali veľa, napr aplikačné programy, a serverové aplikácie. Najbežnejším procesom automatizovaného zavádzania škodlivých odkazov na webové stránky je krádež ftp hesiel a ďalšie spracovanie týchto údajov špecializovanou aplikáciou Iframer. Úloha Iframeru je jednoduchá - pripojiť sa k zdrojom pomocou zoznamu ftp účtov, nájsť súbory podľa danej masky, spravidla sú to súbory indexových stránok webových stránok a vložiť do nich hotový škodlivý kód. Preto po odstránení kódu dochádza k opätovnému infikovaniu mnohých webových stránok, a to aj pri zmene všetkých prístupových hesiel, vrátane tých pre ftp. Dôvodom môže byť prítomnosť vírusu, ktorý kradne heslá na počítači, z ktorého je webová stránka spravovaná.

Sú prípady, keď majitelia webových stránok, na ktorých sa škodlivý kód vyskytuje, tento problém nemyslia vážne. Súhlasím, poškodenie samotného zdroja daný kód nespôsobuje. Trpia iba návštevníci infikovaných webových stránok. Ale sú tu aj iné aspekty, na ktoré chcem upozorniť.

Webová stránka, ktorá je hostiteľom škodlivého kódu, skôr či neskôr skončí v najrôznejších databázach obchodníkov s infekciou – zoznam stránok škodlivého softvéru, ako aj vyhľadávače ako Google alebo Yandex, môžu infikovanú webovú stránku označiť za potenciálne nebezpečnú. Bude mimoriadne ťažké odstrániť váš zdroj z takejto základne, keď sa tam dostane. Taktiež je možné, že skôr či neskôr dostanete „zneužitie“ – sťažnosť od návštevníkov webu. V tomto prípade existuje možnosť zablokovania názvu domény webovej stránky a zablokovania jej IP adresy. Vyskytli sa prípady, keď boli kvôli jednej infikovanej webovej lokalite zablokované celé podsiete.

Ako sa chrániť pred výskytom škodlivých kódov na vašich zdrojoch? Na to je potrebné splniť niekoľko požiadaviek na informačnú bezpečnosť:

1) Na pracovný počítač, z ktorého je web spravovaný, nainštalujte antivírusový softvér, najlepšie licencovaný s denne aktualizovanými databázami.
2) Nainštalujte a nakonfigurujte POŽARNE DVERE aby bola všetka prevádzka pri práci so sieťou kontrolovaná a v prípade prístupu k podozrivým hostiteľom bola možnosť jej zablokovania.
3) Používajte zložité heslá pre administratívne rozhrania a prístup k službám ftp a ssh.
4) Neukladajte si heslá v Total Commander, Far a ďalších správcovi súborov. Spravidla takmer všetky trójske kone už vedia, ako tieto údaje zachytiť a poslať ich útočníkovi.
5) Neotvárajte ani nespúšťajte súbory prijaté e-mailom alebo stiahnuté z internetu bez toho, aby ste ich najskôr skontrolovali antivírusovým softvérom.
6) Aktualizujte softvér nainštalovaný v počítači. Včasná inštalácia záplat pre operačné systémy a aktualizácia aplikačného softvéru. Programy, ktoré denne používate, môžu niekedy slúžiť ako diera v systéme, do ktorej sa môže dostať malvér. Najmä Adobe Acrobatčitateľ, Flash Player, programy z balíka MS Office a pod.

Ak dodržíte všetky vyššie popísané ochranné opatrenia, no na svojom zdroji nájdete škodlivý kód, na vine môže byť aj poskytovateľ hostingu, respektíve nastavenia servera, ktorý je hostiteľom vášho zdroja. V takom prípade sa musíte obrátiť na podpornú službu poskytovateľa hostingu a požiadať ho o identifikáciu a odstránenie príčiny incidentu.

Ako viete, v septembri 2005 bola dekrétom prezidenta krajiny v Uzbekistane zriadená služba reakcie na počítačové incidenty UZ-CERT. Špecialisti Služby okrem svojich hlavných povinností vykonávajú aj prácu pri odhaľovaní škodlivých kódov na stránkach v zóne národnej domény. Na tieto účely bolo napísaných množstvo aplikačných programov na automatizáciu hlavných bodov, no, samozrejme, dôležitú úlohu zohráva aj manuálne prezeranie webových stránok, ktoré sú podozrivé z infekcie. Niekedy úspešne zamaskovaný škodlivý kód, ktorý prešiel „obfuskáciou“ – zmenou štruktúry kódu, nie je možné odhaliť automatickými prostriedkami. Informácie o všetkých zistených infikovaných webových stránkach sú zverejnené na webových stránkach Služby, ako aj v sekcii UZ-CERT na uForum.uz. Vlastníci infikovaných zdrojov dostávajú upozornenia, rady a pomoc na odstránenie hrozieb a ďalšiu ochranu svojich systémov. Úprimne dúfame, že táto práca bude prínosom pre používateľov internetu a pomôže vyhnúť sa masovej infekcii osobných počítačov škodlivým softvérom.

V Odnoklassniki

A je to komplexná učebnica skriptovania medzi stránkami.

Prvá časť: Prehľad

čo je XSS?

Skriptovanie medzi stránkami ( Angličtina Skriptovanie medzi stránkami) je útok s vložením kódu, ktorý umožňuje útočníkovi spustiť škodlivý JavaScript v prehliadači iného používateľa.

Útočník neútočí na svoju obeť priamo. Namiesto toho využíva zraniteľnosť webovej stránky, ktorú obeť navštevuje, a vkladá škodlivý kód JavaScript. V prehliadači obete sa škodlivý JavaScript javí ako legitímna súčasť webovej stránky a samotná webová stránka pôsobí ako priamy komplic útočníka.

Vloženie škodlivého kódu JavaScript

Jediný spôsob, ako môže útočník spustiť škodlivý JavaScript v prehliadači obete, je vložiť ho na jednu zo stránok, ktoré si obeť načíta z webovej lokality. Je to možné, ak webová stránka umožňuje používateľom zadávať údaje na ich stránky a útočník môže vložiť reťazec, ktorý bude rozpoznaný ako súčasť kódu v prehliadači obete.

Nižšie uvedený príklad ukazuje jednoduchý serverový skript, ktorý sa používa na zobrazenie najnovšieho komentára na stránke:

tlačiť" "
vytlačiť "Posledný komentár:"
vytlačiť databázu.najnovší komentár
tlačiť""

Skript predpokladá, že komentár pozostáva iba z textu. Keďže je však povolený priamy vstup používateľa, útočník môže zanechať tento komentár: "" . Každý používateľ, ktorý navštívi stránku, teraz dostane nasledujúcu odpoveď:


Posledný komentár:

Keď prehliadač používateľa načíta stránku, vykoná všetko vrátane JavaScriptu obsiahnutého v značkách. . To naznačuje, že samotná prítomnosť skriptu vloženého útočníkom je problémom bez ohľadu na to, aký konkrétny kód skriptu sa v skutočnosti vykonáva.

Druhá časť: XSS Attack

Účastníci útoku XSS

Predtým, ako podrobne popíšeme, ako útok XSS funguje, musíme definovať aktérov zapojených do útoku XSS. Vo všeobecnosti sú v útoku XSS traja aktéri: webové stránky, obeťou, a cracker.

  • webové stránky vykresľuje HTML stránky pre používateľov, ktorí o ne požiadajú. V našich príkladoch sa nachádza na adrese http://website/ .
    • Databáza webových stránok je databáza, ktorá ukladá niektoré údaje zadané používateľmi na stránkach lokality.
  • Obeť- toto je bežný používateľ webová lokalita, ktorá si od nej vyžaduje stránky pomocou svojho prehliadača.
  • Útočenie je útočník, ktorý má v úmysle zaútočiť na obeť zneužitím zraniteľnosti XSS na stránke.
    • Crack Server je webový server pod kontrolou útočníka s jediným cieľom ukradnúť dôverné informácie obete. V našich príkladoch sa nachádza na adrese http://attacker/ .

Príklad skriptu útoku

Tento skript vytvorí požiadavku HTTP na inú adresu URL, ktorá presmeruje prehliadač používateľa na server útočníka. Adresa URL obsahuje súbor cookie obete ako parameter požiadavky. Keď požiadavka HTTP dorazí na server útočníka, útočník môže tieto súbory cookie z požiadavky extrahovať. Keď útočník získa súbory cookie, môže ich použiť na odcudzenie identity obete a spustiť následný útok.

Odteraz sa bude volať vyššie uvedený kód HTML zlomyseľný reťazec alebo škodlivý skript. Je dôležité pochopiť, že samotný reťazec je škodlivý iba vtedy, ak je v prehliadači obete v konečnom dôsledku vykreslený ako HTML, čo sa môže stať iba vtedy, ak je na webovej lokalite zraniteľnosť XSS.

Ako funguje tento príklad útoku

Nasledujúci diagram ukazuje príklad útoku útočníka:

  1. Útočník použije jeden z formulárov webovej stránky na vloženie škodlivého reťazca do databázy webovej stránky.
  2. Obeť požaduje stránku z webovej lokality.
  3. Stránka zahrnie do odpovede škodlivý reťazec z databázy a odošle ho obeti.
  4. Prehliadač obete spustí v rámci odpovede škodlivý skript a odošle súbor cookie obete na server útočníka.

Typy XSS

Cieľom XSS útoku je vždy spustiť škodlivý JavaScript skript v prehliadači obete. Na dosiahnutie tohto cieľa existuje niekoľko zásadne odlišných spôsobov. XSS útoky sú často rozdelené do troch typov:

  • Uložené (trvalé) XSS, kde škodlivý reťazec pochádza z databázy webovej stránky.
  • Odrazený (nepretrvávajúci) XSS, kde je škodlivý reťazec generovaný z požiadavky obete.
  • Modely XSS DOM, kde sa zraniteľnosť vyskytuje v kóde na strane klienta, nie v kóde na strane servera.

Predchádzajúci príklad ukazuje uložený XSS útok. Teraz popíšeme dva ďalšie typy XSS útokov: odrazené XSS a DOM XSS útoky.

Odrazené XSS

V odrazenom XSS útoku je škodlivý reťazec súčasťou požiadavky obete na webovú stránku. Stránka prijme a vloží tento škodlivý reťazec do odpovede, ktorú pošle späť používateľovi. Nižšie uvedená schéma znázorňuje tento scenár:

  1. Obeť oklame útočníka, aby odoslal webovej stránke žiadosť o adresu URL.
  2. Stránka obsahuje škodlivý reťazec zo žiadosti o adresu URL v odpovedi obeti.
  3. Prehliadač obete spustí škodlivý skript obsiahnutý v odpovedi a odošle súbor cookie obete na server útočníka.

Ako úspešne vykonať odrazený XSS útok?

Odrazený útok XSS sa môže zdať neškodný, pretože od obete vyžaduje, aby v jej mene odoslala požiadavku obsahujúcu škodlivý reťazec. Keďže na seba nikto dobrovoľne nezaútočí, zdá sa, že neexistuje spôsob, ako útok skutočne vykonať.

Ako sa ukázalo, existujú najmenej dva bežné spôsoby, ako prinútiť obeť, aby proti sebe spustila odrazený XSS útok:

  • Ak je používateľom konkrétna osoba, útočník môže poslať obeti škodlivú adresu URL (napríklad pomocou Email alebo messenger) a oklamať ho, aby otvoril odkaz na návštevu webovej stránky.
  • Ak je cieľom veľká skupina používateľov, útočník môže zverejniť odkaz na škodlivú URL (napríklad na vlastnej webovej stránke resp. sociálna sieť) a počkajte na návštevníkov, ktorí budú nasledovať odkaz.

Obe tieto metódy sú podobné a obe môžu byť úspešnejšie so službami skracovania adries URL, ktoré maskujú škodlivý reťazec pred používateľmi, ktorí by ho mohli identifikovať.

XSS v DOM

XSS v DOM je variantom uloženého aj odrazeného XSS útoku. V tomto XSS útoku prehliadač obete nespracuje škodlivý reťazec, kým sa nespustí skutočný JavaScript webovej stránky. Nižšie uvedený diagram znázorňuje tento scenár pre odrazený útok XSS:

  1. Útočník vytvorí adresu URL obsahujúcu škodlivý reťazec a odošle ju obeti.
  2. Obeť oklame útočníka, aby odoslal webovej stránke žiadosť o adresu URL.
  3. Stránka prijme požiadavku, ale v odpovedi nezahrnie škodlivý reťazec.
  4. Prehliadač obete spustí legitímny skript obsiahnutý v odpovedi, čo spôsobí vloženie škodlivého skriptu na stránku.
  5. Prehliadač obete spustí škodlivý skript vložený na stránku a odošle súbor cookie obete na server útočníka.
Aký je rozdiel medzi XSS v modeli DOM?

V predchádzajúcich príkladoch uložených a odrazených útokov XSS server vloží na stránku škodlivý skript, ktorý sa potom odošle ako odpoveď obeti. Keď prehliadač obete dostane odpoveď, predpokladá, že škodlivý skript je súčasťou legitímneho obsahu stránky a automaticky ho spustí počas načítania stránky, rovnako ako ktorýkoľvek iný skript.

V príklade útoku DOM XSS nie je škodlivý skript vložený ako súčasť stránky; jediný skript, ktorý sa automaticky spustí počas načítania stránky, je legitímna časť stránky. Problém je v tom, že tento legitímny skript priamo používa vstup používateľa na pridanie HTML na stránku. Pretože je škodlivý reťazec vložený do stránky pomocou innerHTML , je analyzovaný ako HTML, čo spôsobí spustenie škodlivého skriptu.

Tento rozdiel je malý, ale veľmi dôležitý:

  • V tradičnom XSS sa pri načítaní stránky spustí škodlivý JavaScript ako súčasť kódu HTML odoslaného serverom.
  • V prípade XSS v DOM sa škodlivý JavaScript spustí po načítaní stránky, čo vedie k tomu, že stránka s legitímnym JavaScriptom pristupuje k vstupu používateľa (obsahujúceho škodlivý reťazec) nezabezpečeným spôsobom.
Ako funguje XSS v DOM?

V predchádzajúcom príklade nie je potrebný JavaScript; server dokáže vygenerovať celý HTML sám. Ak by kód na strane servera neobsahoval chyby zabezpečenia, webová lokalita by nebola ovplyvnená zraniteľnosťou XSS.

Ako sa však webové aplikácie stávajú vyspelejšími, čoraz viac stránok HTML sa generuje pomocou JavaScriptu na strane klienta a nie na strane servera. Obsah by sa mal kedykoľvek zmeniť bez obnovenia celej stránky, je to možné pomocou JavaScriptu. Ide najmä o prípad, keď sa stránka obnoví po požiadavke AJAX.

To znamená, že zraniteľné miesta XSS môžu byť prítomné nielen na serverovej strane kódu vašej lokality, ale aj na klientskej strane kódu JavaScript vašej lokality. Preto aj pri úplne zabezpečenom kóde na strane servera nemusí klientsky kód bezpečne zahŕňať vstup používateľa pri aktualizácii modelu DOM po načítaní stránky. Ak sa tak stane, kód na strane klienta umožní útok XSS bez zavinenia kódu na strane servera.

XSS založený na DOM nemusí byť pre server viditeľný

Existuje špeciálny prípad XSS útoku v DOM, v ktorom sa škodlivý reťazec nikdy neodošle na webový server: k tomu dôjde, keď je škodlivý reťazec obsiahnutý vo fragmente identifikátora adresy URL (čokoľvek za symbolom #). Prehliadače neposielajú túto časť adresy URL na server, takže web k nej nemôže pristupovať pomocou kódu na strane servera. Kód na strane klienta má však k nemu prístup, a preto je možný útok XSS prostredníctvom nezabezpečeného spracovania.

Tento prípad nie je obmedzený na ID fragmentu. Existuje ďalší používateľský vstup, ktorý je pre server neviditeľný, ako napríklad nové funkcie HTML5, ako napríklad LocalStorage a IndexedDB.

Tretia časť:
Prevencia XSS

XSS metódy prevencie

Pripomeňme, že XSS je útok na vstreknutie kódu: vstup používateľa je chybne interpretovaný ako škodlivý kód. Aby sa zabránilo tomuto typu vkladania kódu, je potrebná bezpečná manipulácia so vstupom. Pre webového vývojára existujú dva základné princípy rôznymi spôsobmi vykonať bezpečné spracovanie vstupu:

  • Kódovanie je metóda, ktorá umožňuje spracovať vstup používateľa iba ako údaje a neumožňuje prehliadaču spracovať ho ako kód.
  • Validácia je spôsob, ako filtrovať vstup používateľa tak, aby ho prehliadač interpretoval ako kód bez škodlivých príkazov.

Aj keď ide o zásadne odlišné metódy prevencie XSS, zdieľajú niekoľko spoločných čŕt, ktoré je dôležité pochopiť pri použití ktorejkoľvek z nich:

Kontextové bezpečné zaobchádzanie so vstupom by sa malo vykonávať odlišne v závislosti od toho, kde na stránke sa používa vstup používateľa. prichádzajúce/odchádzajúce Spracovanie zabezpečeného vstupu možno vykonať buď vtedy, keď vaša lokalita prijme vstup (prichádzajúca návštevnosť), alebo tesne predtým, ako lokalita vloží vstup používateľa do obsahu stránky (odchádzajúca). Spracovanie zabezpečeného vstupu klient/server môže byť vykonané buď na strane klienta alebo na strane servera, pričom každá možnosť je potrebná za iných okolností.

Predtým, ako podrobne vysvetlíme, ako funguje kódovanie a overenie, opíšeme každý z týchto bodov.

Spracovanie používateľského vstupu v kontextoch

Na webovej stránke existuje veľa kontextov, v ktorých možno použiť vstup používateľa. Pre každý z nich musia byť dodržané špeciálne pravidlá, aby sa užívateľský vstup nemohol „vytrhnúť“ z jeho kontextu a nebol interpretovaný ako škodlivý kód. Nasledujú najbežnejšie kontexty:

Aký je význam kontextov?

Vo všetkých opísaných kontextoch sa môže vyskytnúť zraniteľnosť XSS, ak bol vstup používateľa vložený pred prvým kódovaním alebo overením. Útočník môže vložiť škodlivý kód jednoducho vložením uzatváracieho oddeľovača pre tento kontext, za ktorým nasleduje škodlivý kód.

Napríklad, ak v určitom bode webová lokalita obsahuje vstup používateľa priamo do HTML atribút, útočník by mohol vložiť škodlivý skript tak, že by svoj vstup začal citáciou, ako je uvedené nižšie:

Tomu sa dalo predísť jednoduchým odstránením všetkých úvodzoviek v používateľskom vstupe a všetko by bolo v poriadku, ale iba v tomto kontexte. Ak bol vstup vložený v inom kontexte, uzatvárací oddeľovač bude iný a bude možné vstrekovanie. Z tohto dôvodu musí byť bezpečná manipulácia so vstupmi vždy prispôsobená kontextu, do ktorého bude používateľský vstup vložený.

Spracovanie prichádzajúcich/odchádzajúcich používateľských vstupov

Inštinktívne by sa zdalo, že XSS by sa dalo zabrániť zakódovaním alebo overením všetkých používateľských vstupov hneď, ako ich naša stránka dostane. Týmto spôsobom budú všetky škodlivé reťazce už neutralizované vždy, keď budú zahrnuté na stránke, a skripty generovania HTML sa nebudú musieť starať o bezpečné spracovanie vstupov používateľa.

Problém je v tom, že ako už bolo popísané vyššie, vstup používateľa možno vložiť do viacerých kontextov na stránke. A nie ľahká cesta určiť, kedy používateľský vstup prichádza do kontextu – ako sa nakoniec vloží, a ten istý používateľský vstup je často potrebné vložiť do rôznych kontextov. Spoliehaním sa na spracovanie prichádzajúcich vstupov, aby sme zabránili XSS, vytvárame veľmi krehké riešenie, ktoré bude náchylné na chyby. (Príkladom takéhoto riešenia sú zastarané „magické úvodzovky“ PHP.)

Namiesto toho by vašou hlavnou obrannou líniou proti XSS malo byť spracovanie výstupných vstupov, pretože môže brať do úvahy špecifický kontext toho, aký vstup používateľa bude vložený. Do určitej miery možno na pridanie sekundárnej vrstvy ochrany použiť prichádzajúce overenie, ale o tom neskôr.

Kde je možné bezpečne spracovať vstup používateľa

Vo väčšine moderných webových aplikácií sa vstupy používateľov spracovávajú na strane servera aj na strane klienta. Na ochranu pred všetkými typmi XSS sa musí vykonať bezpečná manipulácia so vstupom v kóde na strane servera aj v kóde na strane klienta.

  • Na ochranu pred tradičným XSS sa musí zabezpečená manipulácia so vstupmi vykonávať v kóde na strane servera. Toto sa vykonáva pomocou jazyka podporovaného serverom.
  • Na ochranu pred XSS útokom v DOM, kde server nikdy neprijme škodlivý reťazec (napríklad útok fragmentom identifikátora opísaný vyššie), musí byť zabezpečené spracovanie vstupu vykonané v kóde na strane klienta. To sa robí pomocou JavaScriptu.

Teraz, keď sme vysvetlili, prečo na kontexte záleží, prečo je dôležité rozlišovať medzi spracovaním prichádzajúcich a odchádzajúcich vstupov a prečo musí byť zabezpečené spracovanie vstupov vykonané na oboch stranách, na strane klienta aj na strane servera, môžeme pokračovať vo vysvetľovaní, ako sa v skutočnosti vykonávajú dva typy spracovania zabezpečeného vstupu (kódovanie a validácia).

Kódovanie

Kódovanie je východiskom zo situácie, kedy je potrebné, aby prehliadač interpretoval vstup používateľa len ako dáta, nie kód. Najpopulárnejším typom kódovania pri vývoji webu je HTML escapement, ktorý konvertuje znaky ako napr < a > v < a > resp.

Nasledujúci pseudokód je príkladom toho, ako možno zakódovať vstup používateľa (vstup používateľa) pomocou kódu HTML a potom vložiť na stránku pomocou skriptu na strane servera:

tlačiť" "
vytlačiť "Posledný komentár:"
print encodeHtml(userInput)
tlačiť""

Ak používateľ zadá nasledujúci riadok, výsledný kód HTML bude vyzerať takto:


Posledný komentár:

Pretože boli zakódované všetky znaky so špeciálnym významom, prehliadač nebude analyzovať žiadnu časť používateľského vstupu, ako napríklad HTML.

Kódovanie na strane klienta a servera

Pri vykonávaní kódovania na strane klienta sa vždy používa JavaScript, ktorý má vstavané funkcie kódujúce údaje pre rôzne kontexty.

Pri kódovaní v kóde na strane servera sa spoliehate na funkcie dostupné vo vašom jazyku alebo rámci. Vďaka veľkému počtu dostupných jazykov a rámcov je to tutoriál nebude pokrývať detaily kódovania v žiadnom konkrétnom serverovom jazyku alebo rámci. Funkcie kódovania JavaScript používané na strane klienta sa však používajú aj pri písaní kódu na strane servera.

Kódovanie na strane klienta

Pri kódovaní vstupu používateľa na strane klienta pomocou JavaScriptu existuje niekoľko vstavaných metód a vlastností, ktoré automaticky kódujú všetky údaje v štýle citlivom na kontext:

Posledný kontext uvedený vyššie (hodnoty v JavaScripte) nie je zahrnutý v tomto zozname, pretože JavaScript neposkytuje vstavaný spôsob kódovania údajov, ktoré budú zahrnuté v zdrojovom kóde JavaScriptu.

Obmedzenia kódovania

Dokonca aj pri kódovaní je možné v niektorých kontextoch použiť škodlivé reťazce. Prvým príkladom je, keď sa na poskytnutie adresy URL použije vstup používateľa, ako napríklad v príklade nižšie:

document.querySelector("a").href = userInput

Hoci zadaná hodnota vo vlastnosti href prvku ju automaticky zakóduje tak, že sa nestane ničím iným ako hodnotou atribútu, to samo osebe nezabráni útočníkovi vložiť adresu URL začínajúcu na „javascript:“. Po kliknutí na odkaz sa bez ohľadu na konštrukciu spustí JavaScript vložený do adresy URL.

Kódovanie je tiež efektívne riešenie keď chcete, aby používatelia mohli používať časť HTML na stránke. Príkladom môže byť stránka s užívateľským profilom, kde môže užívateľ použiť vlastný HTML. Ak je tento obyčajný kód HTML zakódovaný, profilová stránka môže pozostávať iba z čistého textu.

V situáciách, ako je táto, musí byť kódovanie doplnené validáciou, na ktorú sa pozrieme ďalej.

Validácia

Validácia je akt filtrovania vstupu používateľa tak, aby sa odstránili všetky jeho škodlivé časti bez toho, aby sa musel odstrániť celý kód v ňom. Jeden z najpoužívanejších typov overovania pri vývoji webových aplikácií vám umožňuje používať niektoré prvky HTML (napr. a ), ale zakazovať ostatným (napr.

So správne definovanou politikou CSP prehliadač nemôže načítať a spustiť súbor malicious‑script.js, pretože http://attacker/ nie je uvedený ako dôveryhodný zdroj. Aj keď stránka nedokázala spoľahlivo spracovať vstupy používateľov, v tomto prípade politika CSP zabránila tomu, aby zraniteľnosť spôsobila akúkoľvek škodu.

Aj keď útočník vloží kód do kódu skriptu a nie odkaz na externý súbor, správne nakonfigurovaná politika CSP tiež zabráni vstrekovaniu do kódu JavaScript, čím zabráni zraniteľnosti a spôsobí akúkoľvek škodu.

Ako povoliť CSP?

Prehliadače štandardne nepoužívajú CSP. Ak chcete na svojej webovej lokalite povoliť SCP, stránky musia obsahovať dodatočnú hlavičku HTTP: Content-Security-Policy. Každá stránka obsahujúca túto hlavičku bude pri načítaní prehliadačom uplatňovať zásady zabezpečenia za predpokladu, že prehliadač podporuje CSP.

Keďže bezpečnostná politika sa odosiela s každou odpoveďou HTTP, server môže individuálne nastaviť politiku pre každú stránku. Rovnakú politiku možno použiť na celú webovú stránku vložením rovnakej hlavičky CSP do každej odpovede.

Hodnota v hlavičke Content-Security-Policy obsahuje reťazec, ktorý určuje jednu alebo viacero bezpečnostných politík, ktoré budú fungovať na vašej lokalite. Syntax tohto riadku bude opísaná ďalej.

Príklady nadpisov v tejto časti používajú zlomy riadkov a odsadenie na uľahčenie čítania; nemali by byť prítomné v skutočnej hlavičke.

Syntax CSP

Syntax hlavičky CSP je nasledovná:

Zásady zabezpečenia obsahu:
smernice zdroj-výraz, zdroj-výraz, ...;
smernice ...;
...

Táto syntax pozostáva z dvoch prvkov:

  • smernicečo sú reťazce označujúce typ zdroja prevzatého z daného zoznamu.
  • Zdrojové výrazy je model, ktorý popisuje jeden alebo viacero serverov, z ktorých je možné sťahovať zdroje.

Pre každú direktívu údaje v zdrojovom výraze určujú, ktoré zdroje možno použiť na načítanie zdrojov daného typu.

smernice

V hlavičke CSP možno použiť nasledujúce smernice:

  • connect-src
  • font-src
  • frame-src
  • img-src
  • media-src
  • objekt-src
  • skript-src
  • štýl-src

Okrem toho je možné použiť špeciálnu direktívu default-src na poskytnutie predvolenej hodnoty pre všetky direktívy, ktoré neboli zahrnuté v hlavičke.

Zdrojový výraz

Syntax na vytvorenie zdrojového výrazu je nasledovná:

protokol:// názov-hostiteľa: číslo-portu

Názov hostiteľa môže začínať znakom * , čo znamená, že bude povolená akákoľvek subdoména poskytnutého názvu hostiteľa. Podobne môže byť číslo portu reprezentované ako * , čo znamená, že všetky porty budú povolené. Okrem toho môže byť vynechaný protokol a číslo portu. V prípade, že nie je zadaný žiadny protokol, pravidlo bude vyžadovať načítanie všetkých zdrojov pomocou protokolu HTTPS.

Okrem vyššie uvedenej syntaxe môže byť zdrojový výraz alternatívne jeden zo štyroch Kľúčové slová s osobitným významom (vrátane úvodzoviek):

"žiadne" zakáže zdroje. "self" rieši zdroje z hostiteľa, kde sa webová stránka nachádza. "unsafe-inline" umožňuje, aby boli zdroje obsiahnuté na stránke vložené