Dödssynder i webbplatsens sÀkerhet: vad vi har lÀrt oss frÄn statistiken frÄn sÄrbarhetsskannern under Äret

För ungefÀr ett Är sedan lanserade vi pÄ DataLine tjÀnst en tjÀnst för att söka och analysera sÄrbarheter i IT-applikationer. Grunden för tjÀnsten Àr den molnbaserade lösningen Qualys, vars funktioner vi redan har berÀttat om. Under ett Ärs arbete med lösningen har vi genomfört 291 skanningar för olika webbplatser och samlat statistik över vanliga sÄrbarheter i webbapplikationer. 

I artikeln nedan visar jag vilka specifika sÀkerhetsluckor som döljer sig bakom olika kritikalitetsnivÄer. LÄt oss titta pÄ vilka sÄrbarheter skannern lyckades upptÀcka sÀrskilt ofta, varför de kan uppstÄ och hur man kan skydda sig. 

Dödssynder i webbplatsens sÀkerhet: vad vi har lÀrt oss frÄn statistiken frÄn sÄrbarhetsskannern under Äret

Qualys delar in alla sÄrbarheter i webbapplikationer i tre kritikalitetsnivÄer: lÄg, medel och hög. Om man ser pÄ fördelningen efter "svÄrighetsgrad" ser det inte sÄ illa ut. Det finns fÄ sÄrbarheter med hög kritikalitet, de flesta Àr icke-kritiska: 

Dödssynder i webbplatsens sÀkerhet: vad vi har lÀrt oss frÄn statistiken frÄn sÄrbarhetsskannern under Äret

Men icke-kritiska betyder inte ofarliga. De kan ocksÄ orsaka allvarlig skada. 

Topp icke-kritiska sÄrbarheter

  1. SÄrbarheter kopplade till blandat innehÄll.

    En sÀkerhetsstandard för webbplatser Àr att överföra data mellan klient och server via protokollet HTTPS, som möjliggör kryptering och skyddar informationen frÄn att bli avlyssnad. 

    Vissa webbplatser anvĂ€nder blandat innehĂ„ll: de överför en del data över det oskyddade protokollet HTTP. Vanligtvis överförs passivt innehĂ„ll – information som endast pĂ„verkar webbplatsens visning: bilder, CSS-stilar. Men ibland överförs Ă€ven aktivt innehĂ„ll: skript som styr webbplatsens beteende. I det hĂ€r fallet kan man med hjĂ€lp av speciell programvara analysera information som kommer frĂ„n servern med aktivt innehĂ„ll, modifiera sina svar i realtid och fĂ„ systemet att fungera pĂ„ ett sĂ€tt som inte var avsett av dess skapare. 

    WebblÀsare i nya versioner varnar anvÀndare för att webbplatser med blandat innehÄll Àr osÀkra och blockerar innehÄll. Webbplatsutvecklare fÄr ocksÄ varningar frÄn webblÀsaren i konsolen. SÄ hÀr ser det ut i Firefox: 

    Dödssynder i webbplatsens sÀkerhet: vad vi har lÀrt oss frÄn statistiken frÄn sÄrbarhetsskannern under Äret

    Vad Ă€r faran: Brottslingar utnyttjar det oskyddade protokollet för att avlyssna anvĂ€ndarinformation, byta ut skript och skicka förfrĂ„gningar till webbplatsen i dess namn. Även om besökaren pĂ„ webbplatsen inte har angett nĂ„gra uppgifter skyddar det inte mot fiske – att samla in konfidentiell information genom bedrĂ€gliga metoder. Till exempel, med hjĂ€lp av ett skript kan man omdirigera anvĂ€ndaren till en osĂ€ker webbplats som maskerar sig som en bekant. I vissa fall kan den skadliga webbplatsen se till och med bĂ€ttre ut Ă€n originalet, och anvĂ€ndaren kan sjĂ€lv fylla i formulĂ€ret och överlĂ€mna kĂ€nsliga uppgifter. 

    Vad webbprogrammerare bör komma ihĂ„g: Även om webbplatsens administratör har installerat och konfigurerat SSL/TLS-certifikatet kan sĂ„rbarheter uppstĂ„ pĂ„ grund av mĂ€nskliga faktorer. Om en av sidorna har angett en absolut lĂ€nk med http istĂ€llet för en relativ, och om vidare ingen omdirigering frĂ„n http till https har konfigurerats. 

    För att upptÀcka blandat innehÄll pÄ webbplatsen kan man anvÀnda webblÀsaren: leta genom sidans kÀllkod, lÀsa meddelanden i utvecklarkonsolen. Men utvecklaren kommer att behöva grÀva djupt i koden. Processen kan pÄskyndas med automatiserade analysverktyg, till exempel: SSL Check, gratisprogrammet Lighthouse eller den betalda programvaran Screaming Frog SEO Spider.

    SĂ„rbarhet kan ocksĂ„ uppstĂ„ pĂ„ grund av problem med legacy-kod – kod som har Ă€rvts. Till exempel, om en del av sidorna genereras av en gammal mall dĂ€r övergĂ„ngen till https inte beaktas.    

  2. Cookies utan flaggorna "HTTPOnly" och "secure".

    Attributet "HTTPOnly" skyddar cookies frÄn att behandlas av skript som angripare anvÀnder för att stjÀla anvÀndardata. Flaggan "secure" tillÄter inte överföring av cookies i klartext. Datautbytet tillÄts endast om sÀkrad protokoll HTTPS anvÀnds för att skicka cookies. 

    BÄda attributen anges i cookie-egenskaper:

    Set-Cookie: Secure; HttpOnly

    Vad Àr faran: Om webbplatsens utvecklare inte angav dessa attribut kan angriparen snappa upp anvÀndarinformation frÄn cookies och anvÀnda den. Om cookies anvÀnds för autentisering och auktorisering kan hen ta över anvÀndarens session och utföra ÄtgÀrder pÄ webbplatsen i dennes namn. 

    Vad webbprogrammerare bör komma ihÄg: I populÀra ramverk anges dessa attribut vanligtvis automatiskt. Men kontrollera alltid webbserverns konfiguration och stÀll in flaggan: Set-Cookie HttpOnly; Secure.

    Observera att attributet "HTTPOnly" gör cookies osynliga Àven för din egen JavaScript.  

  3. Path-Based Vulnerabilities ("vÀgbaserade" sÄrbarheter).

    Skannern rapporterar om en sÄrbarhet nÀr den hittar en offentligt tillgÀnglig fil eller katalog pÄ webbplatsen med potentiellt konfidentiell information. Till exempel upptÀckta enskilda filer med systemkonfiguration eller Ätkomst till hela filsystemet. Denna situation kan uppstÄ om ÄtkomstrÀttigheterna pÄ webbplatsen Àr felaktigt instÀllda.

    Vad Àr faran: Om filsystemet "syns utÄt" kan en angripare fÄ tillgÄng till operativsystemets grÀnssnitt och försöka hitta mappar med lösenord om de lagras i klartext (gör inte sÄ!). Alternativt kan de stjÀla hash-koder för lösenord och försöka gissa lösenordet, samt försöka höja sina privilegier i systemet och avancera djupare in i infrastrukturen.  

    Vad webbprogrammerare bör komma ihÄg: Glöm inte ÄtkomstrÀttigheterna och konfigurera plattformen, webbservern och webbapplikationen sÄ att ingen kan "fly" frÄn webbkatalogen.

  4. FormulÀr för att ange konfidentiell information med aktiverad autofyllfunktion.

    Om en anvÀndare ofta fyller i formulÀr pÄ webbplatser sparar deras webblÀsare denna information med autofyllfunktionen. 

    FormulÀr pÄ webbplatser kan inkludera fÀlt med konfidentiell information, till exempel lösenord eller kreditkortsnummer. För sÄdana fÀlt bör autofyllfunktionen inaktiveras pÄ webbplatsen. 

    Vad Àr faran: Om anvÀndarens webblÀsare sparar konfidentiell information kan en angripare fÄnga upp den senare, till exempel genom phishing. I grund och botten utsÀtter webbdesignern, som glömmer detta detalj, sina anvÀndare. 

    Vad webbprogrammerare bör komma ihĂ„g: I detta fall har vi en klassisk konflikt: bekvĂ€mlighet vs sĂ€kerhet. Om webbdesignern prioriterar anvĂ€ndarkomfort kan de medvetet vĂ€lja autofyllning. Till exempel, om det Ă€r viktigt att följa Web Content Accessibility Guidelines – riktlinjer för tillgĂ€nglighet av innehĂ„ll för anvĂ€ndare med funktionsnedsĂ€ttningar. 

    För de flesta webblÀsare kan autofyll inaktiveras med attributet autocompete="off", till exempel:

     <body>
        <form action="/sv/form/submit/" method="get" autocomplete="off" data-trp-original-action="/form/submit">
          <div>
            <input type="text" placeholder="Förnamn">
          </div>
          <div>
            <input type="text" id="lname" placeholder="Efternamn" autocomplete="on">
          </div>
          <div>
            <input type="number" placeholder="Kreditkortsnummer">
          </div>
          <input type="submit">
        <input type="hidden" name="trp-form-language" value="sv"/></form>
      </body>

    Men för Chrome fungerar det inte. Detta kringgÄs med hjÀlp av JavaScript, en variant av receptet kan hittas hÀr. 

  5. I webbplatsens kod Àr X-Frame-Options-rubriken inte angiven. 

    Denna rubrik pÄverkar taggar som frame, iframe, embed eller object. Genom att anvÀnda den kan du helt förbjuda inbÀddning av din webbplats i ett ramverk. För detta mÄste du ange vÀrdet X-Frame-Options: deny. Alternativt kan du ange X-Frame-Options: sameorigin, vilket gör inbÀddning i iframe tillgÀnglig endast pÄ din egen domÀn.

    Vad Àr faran: Avsaknaden av denna rubrik kan anvÀndas pÄ skadliga webbplatser för clickjacking. För denna attack skapar angriparen en genomskinlig ram ovanför knappar och lurar anvÀndaren. Till exempel placerar bedragare en ram för en sida med sociala medier. AnvÀndaren tror att de klickar pÄ en knapp pÄ denna webbplats. IstÀllet fÄngas klicket och skickar en begÀran frÄn anvÀndaren till sociala medier dÀr det finns en aktiv session. PÄ sÄ sÀtt skickar angriparna skrÀppost i anvÀndarens namn eller manipulerar prenumeranter och gilla-markeringar. 

    Om denna möjlighet inte förhindras kan angriparen placera en knapp för din applikation pÄ en skadlig webbplats. Hen kan vara intresserad av ditt referralsprogram eller dina anvÀndare.  

    Vad webbprogrammerare bör komma ihÄg: En sÄrbarhet kan uppstÄ om X-Frame-Options med ett konfliktvÀrde anges pÄ webbservern eller lastbalanseraren. I detta fall kommer servern och lastbalanseraren helt enkelt att ÄsidosÀtta rubriken, eftersom de har högre prioritet Àn koden för backend-delen.  

    VÀrdena deny och sameorigin för X-Frame-Options-rubriken kommer att störa webvisorens funktioner frÄn Yandex. För att tillÄta anvÀndning av iframe för webvisor mÄste du skriva en separat regel i instÀllningarna. Till exempel kan det för nginx konfigureras sÄ hÀr:

    http{
    ...
     map $http_referer $frame_options {
     "~webvisor.com" "ALLOW-FROM http://webvisor.com";
     default "SAMEORIGIN";
     }
     add_header X-Frame-Options $frame_options;
    ...
    }
    
    

  6. SÄrbarheter PRSSI (Path-relative stylesheet import).  

    Detta Àr en sÄrbarhet i webbplatsens stilar. Den uppstÄr om relativa lÀnkar av typen href="/somefolder/styles.css/" anvÀnds för att referera till stilfiler. En angripare kommer att utnyttja detta om de hittar ett sÀtt att omdirigera anvÀndaren till en skadlig sida. Sidan kommer att infoga den relativa lÀnken i sin URL och imitera en begÀran om stilar. Resultatet blir en begÀran liknande badsite.ru/.../somefolder/styles.css/, som under sken av stil kan utföra skadliga handlingar. 

    Vad Àr faran: En bedragare kan utnyttja denna sÄrbarhet om de hittar en annan sÀkerhetslucka. Som ett resultat kan anvÀndardata frÄn cookies eller tokens stjÀlas.

    Vad webbprogrammerare bör komma ihÄg: SÀtt rubriken X-Content-Type-Options: nosniff. I sÄ fall kommer webblÀsaren att kontrollera innehÄllstypen för stilar. Om typen skiljer sig frÄn text/css kommer webblÀsaren att blockera begÀran.

Kritiska sÄrbarheter

  1. Sidan med fÀlt för lösenord överförs frÄn servern via en osÀker kanal (HTML-formulÀr med lösenordsfÀlt överförs via HTTP).

    Svaret frÄn servern över en okrypterad kanal Àr sÄrbart för man-in-the-middle-attacker. En angripare kan fÄnga upp trafiken och klippa in sig mellan klienten och servern nÀr sidan gÄr frÄn servern till klienten. 

    Vad Àr faran: En bedragare kan manipulera sidan och skicka en formulÀr för konfidentiella uppgifter till anvÀndaren, som sedan gÄr till angriparens server. 

    Vad webbprogrammerare bör komma ihÄg: Vissa webbplatser skickar en engÄngskod via e-post/telefon istÀllet för ett lösenord. I detta fall Àr sÄrbarheten inte sÄ kritisk, men mekanismen kan försvÄra livet för anvÀndarna.

  2. Skickar formulÀr med anvÀndarnamn och lösenord via en osÀker kanal (InloggningsformulÀret skickas inte via HTTPS).

    I detta fall skickas formulÀret med anvÀndarnamn och lösenord till servern via en okrypterad kanal.

    Vad Àr faran: Till skillnad frÄn det föregÄende fallet Àr detta en kritisk sÄrbarhet. Att fÄnga konfidentiella uppgifter Àr enklare, eftersom du inte ens behöver skriva kod för det. 

  3. AnvÀndning av JavaScript-bibliotek med kÀnda sÄrbarheter.

    Under tiden för skanning har jQuery blivit det mest anvĂ€nda biblioteket med ett omfattande utbud av versioner. I varje version finns det Ă„tminstone en, eller fler, kĂ€nda sĂ„rbarheter. Effekten kan variera – beroende pĂ„ sĂ„rbarhetens natur.

    Vad Àr faran: För kÀnda sÄrbarheter finns det exploits, exempelvis:

    Dödssynder i webbplatsens sÀkerhet: vad vi har lÀrt oss frÄn statistiken frÄn sÄrbarhetsskannern under Äret

    Vad webbprogrammerare bör komma ihĂ„g: Återkom regelbundet till cykeln: söka kĂ€nda sĂ„rbarheter – Ă„tgĂ€rda – kontrollera. Om du medvetet anvĂ€nder förĂ„ldrade bibliotek, exempelvis för att stödja gamla webblĂ€sare eller för att spara budgeten, leta efter möjligheter att Ă„tgĂ€rda kĂ€nda sĂ„rbarheter. 

  4. Cross-Site Scripting (XSS). 
    Cross-Site Scripting (XSS), eller mellanwebbskrift, Àr attacker mot webbapplikationer dÀr skadlig kod hamnar i databasen. Om Qualys hittar en sÄdan sÄrbarhet innebÀr det att en potentiell angripare kan ha injicerat eller redan har injicerat sin js-kod i webbplatsens kod för att utföra skadliga handlingar.

    Lagrat XSS (Stored XSS) Àr mer farliga eftersom skriptet injiceras pÄ servern och körs varje gÄng den attackerade sidan öppnas i webblÀsaren.

    Reflekterat XSS (Reflected XSS) Àr enklare att genomföra, eftersom den skadliga skriptet kan injiceras i HTTP-förfrÄgan. Applikationen tar emot HTTP-förfrÄgan, kontrollerar inte data, packar dem och skickar dem omedelbart. Om angriparen fÄngar trafiken och sÀtter in ett skript av typen

    <script>/*+Ń‡Ń‚ĐŸ+Ń‚ĐŸ+ĐżĐ»ĐŸŃ…ĐŸĐ”+*/</script> 

    gÄr en skadlig begÀran frÄn klientens namn.

    Ett tydligt exempel pÄ XSS: js-sniffers som imiterar sidor för att ange CVC, utgÄngsdatum pÄ kort och sÄ vidare. 

    Vad webbprogrammerare bör komma ihÄg: I rubriken Content-Security-Policy anvÀnd attributet script-src för att klientens webblÀsare endast ska ladda och köra kod frÄn en betrodd kÀlla. Till exempel, script-src 'self' lÀgger alla skript frÄn vÄr webbplats pÄ vitlistan. 
    Den bÀsta metoden anses vara Inline-kod: tillÄt endast inline javascript med vÀrdet unsafe-inline. Detta vÀrde tillÄter anvÀndning av inline js/css, men förbjuder inte laddning av js-filer. I kombination med script-src 'self' förbjuder vi körning av externa skript.

    Se till att logga allt med hjÀlp av report-uri och titta pÄ försök att injicera kod pÄ webbplatsen.

  5. SQL-injektioner.
    SÄrbarheten antyder att det finns möjlighet att injicera SQL-kod pÄ webbplatsen, som direkt kontaktar webbplatsens databas. SQL-injektion Àr möjlig om anvÀndardata inte Àr korrekt sÀkerstÀlld: de kontrolleras inte för giltighet och anvÀnds omedelbart i förfrÄgan. Till exempel sker detta om formulÀret pÄ webbplatsen inte kontrollerar att indata överensstÀmmer med datatypen. 

    Vad Àr faran: Om en angripare matar in en SQL-frÄga i ett sÄdant formulÀr kan han förstöra databasen eller avslöja konfidentiell information. 

    Vad webbprogrammerare bör komma ihÄg: Lita inte pÄ det som kommer frÄn webblÀsaren. Skydd bör göras bÄde pÄ klientsidan och pÄ serversidan. 

    PÄ klientsidan, skriv en kontroll av fÀlten med hjÀlp av JavaScript. 

    Inbyggda funktioner i populÀra ramverk hjÀlper ocksÄ till att skydda misstÀnkta tecken pÄ servern. PÄ servern rekommenderas det ocksÄ att anvÀnda parametriserade databasfrÄgor.

    Definiera var interaktionen med databasen sker i webbapplikationen. 

    Interaktionen uppstĂ„r nĂ€r vi hĂ€mtar nĂ„gon information: en förfrĂ„gan med id (Ă€ndring av id), skapande av en ny anvĂ€ndare, ny kommentar – nya poster i databasen. HĂ€r kan SQL-injektioner uppstĂ„. Även nĂ€r vi tar bort en post frĂ„n databasen kan en SQL-injektion vara möjlig.

AllmÀnna rekommendationer

Hitta inte pĂ„ hjulet – anvĂ€nd beprövade ramverk. Vanligtvis Ă€r populĂ€ra ramverk mer sĂ€kra. För .NET Ă€r det ASP.NET MVC och ASP.NET Core, för Python – Django eller Flask, för Ruby – Ruby on Rails, för PHP – Symfony, Laravel, Yii, för JavaScript – Node.JS-Express.js, för Java – Spring MVC.

HÄll dig uppdaterad med leverantörens nyheter och uppdatera regelbundet. SÄrbarheter hittas, exploateringskod skrivs, publiceras och allt hÀnder igen. Prenumerera pÄ uppdateringar till stabila versioner frÄn programvaruleverantören.

Kontrollera ÄtkomstrÀttigheter. Behandla alltid din kod frÄn serverns sida som om den Àr skriven av din mest avskyvÀrda fiende, som vill bryta din webbplats och bryta integriteten av dina data. Dessutom Àr det ibland faktiskt sÄ.

AnvÀnd kloner, testmiljöer, och implementera sedan pÄ produktion. Detta hjÀlper, Ä ena sidan, att undvika misstag och brister i produktionsmiljön: produktionsmiljön genererar pengar, driftstopp i produktionsmiljö Àr kritiska. Vid tillÀgg, korrigering eller stÀngning av ett problem bör arbetet utföras i testmiljö, sedan kontrolleras funktionaliteten och identifierade sÄrbarheter, och först dÀrefter planera arbete med produktionsmiljön. 

Skydda webbapplikationen med Web Application Firewall och integrera med den rapporter frÄn sÄrbarhetsscannern. Till exempel i DataLine anvÀnds Qualys och FortiWeb som en bindande tjÀnst.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster