Veebisaidi turvalisuse surmapatud: mida oleme Ôppinud haavatavuste skaneerimise statistika aastast

Umbes aasta tagasi kĂ€ivitasime DataLine'is teenus IT-rakendustes haavatavuste otsimise ja analĂŒĂŒsi jaoks. Teenuse aluseks on pilvelahendus Qualys, mille töödest oleme juba rÀÀkinud . Aasta jooksul lahendusega viisime lĂ€bi 291 skaneerimist erinevatele veebilehtedele ja kogusime statistikat levinud haavatavuste kohta veebirakendustes.AlljĂ€rgnevas artiklis nĂ€itan, millised turvaugud veebilehtede taga peituvad erinevate kriitilisuse tasemete taga. Vaatame, milliseid haavatavusi skanner leidis eriti sageli, miks need vĂ”ivad tekkida ja kuidas end kaitsta. 

KÔiki veebirakenduste haavatavusi jagab Qualys kolmele kriitilisuse tasemele: madal, keskmine ja kÔrge. Kui vaadata jaotust 'tÔsiduse' jÀrgi, nÀib, et kÔik ei ole sugugi nii hull. KÔrge kriitilisuse tasemega haavatavusi on vÀhe, enamik on mitte-kriitilised: 

Veebisaidi turvalisuse surmapatud: mida oleme Ôppinud haavatavuste skaneerimise statistika aastast

Kuid mitte-kriitilised ei tÀhenda kahjutud. Need vÔivad samuti tekitada tÔsiseid kahjustusi. 

Veebisaidi turvalisuse surmapatud: mida oleme Ôppinud haavatavuste skaneerimise statistika aastast

Top 'mitte-kriitilised' haavatavused 

Sega sisu seotud haavatavused.

  1. Veebilehtede turvastandardi kohaselt peaks andmete vahetamine kliendi ja serveri vahel toimuma HTTPS-protokolli kaudu, mis toetab krĂŒpteerimist ja kaitseb teavet pealtkuulamise eest.

    MÔned veebilehed kasutavad 

    segatud sisu : edastavad osa andmeid kaitsmata HTTP-protokolli kaudu. Tihti edastatakse niipassiivne sisu - teave, mis mĂ”jutab ainult veebilehe visualiseerimist: pildid, css-stiilid. Kuid mĂ”nikord edastatakse nii ka aktiivne sisu : skriptid, mis juhivad veebilehe kĂ€itumist. Sellisel juhul saab spetsiaalse tarkvara abil analĂŒĂŒsida serverilt tulevat teavet aktiivse sisuga, muuta oma vastuseid reaalajas ja sunnivad masinat töötama nii, nagu selle loojad ei kavandanud.Uute versioonide brauserid hoiatavad kasutajaid, et segatud sisuga veebilehed ei ole turvalised ja blokeerivad sisu. Ka veebilehtede arendajad saavad brauserist konsoolis hoiatusi. NĂ€iteks nĂ€eb see vĂ€lja 

    Millised on ohud Firefox: 

    Veebisaidi turvalisuse surmapatud: mida oleme Ôppinud haavatavuste skaneerimise statistika aastast

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see tedaandmete mahamĂŒĂŒmise eest kalastamise eest – konfidentsiaalse teabe vargus petuskeemide kaudu. NĂ€iteks saab skripti abil kasutaja suunata ohtlikule saidile, mis varjub kasutajale tuttava all. MĂ”nel juhul nĂ€eb pahatahtlik sait isegi parem vĂ€lja kui originaal, ja kasutaja vĂ”ib ise tĂ€ita vormi ning edastada konfidentsiaalsed andmed. 

    Mida peab veebiarendaja meeles pidama: Isegi kui saidi administraator on paigaldanud ja konfigureerinud SSL/TLS-sertifikaadi, vÔib haavatavus ilmneda inimfaktori tÔttu. NÀiteks kui mÔnel lehel on kasutatud absoluutseid linke http kaudu, mitte suhtelisi, ja lisaks ei ole seadistatud suunamisi http-lt https-ile. 

    Segatud sisu tuvastamine saidil on vĂ”imalik brauseri abil: otsida lehe lĂ€htekoodist vĂ”i lugeda arendaja konsoolist teateid. Siiski peab arendaja pikalt ja vaevata koodis kaevama. Protsessi saab kiirendada automatiseeritud analĂŒĂŒsivahendite abil, nĂ€iteks: SSL Check, tasuta tarkvara Lighthouse vĂ”i tasuline programm Screaming Frog SEO Spider.

    Samuti vĂ”ib haavatavus ilmneda legacy-koodi probleemide tĂ”ttu – koodi, mis on jÀÀnud pĂ€randina. NĂ€iteks kui osa lehti genereeritakse vanade mallide jĂ€rgi, mis ei arvesta saidi ĂŒleminekut https-ile.    

  2. KĂŒpsised ilma „HTTPOnly“ ja „secure“ liputa.

    Atribuut „HTTPOnly“ kaitseb kĂŒpsiseid skriptide töötlemise eest, mida pahatahtlikud isikud kasutavad kasutajaandmete vargusteks. Lipp „secure“ ei luba kĂŒpsiseid edastada avatud kujul. Andmevahetus on lubatud ainult siis, kui kĂŒpsiste edastamiseks kasutatakse kaitstud protokolli HTTPS. 

    MĂ”lemad atribuudid mÀÀratakse kĂŒpsiste omadustes:

    Set-Cookie: Secure; HttpOnly

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Kui saidi arendaja ei ole neid atribuute mÀÀranud, vĂ”ib pahatahtlik isik kĂŒpsistest kasutaja teavet haarata ja seda kasutada. Kui kĂŒpsiseid kasutatakse autentimiseks ja autoriseerimiseks, saab ta kasutaja seansi varastada ja teha toiminguid saidil tema nimel. 

    Mida peab veebiarendaja meeles pidama: Reeglina mÀÀratakse need atribuudid populaarsetes raamistikes automaatselt. Kuid siiski kontrollige veebiserveri konfiguratsiooni ja seadistage lipp: Set-Cookie HttpOnly; Secure.

    Samal ajal muudab atribuut „HTTPOnly“ kĂŒpsised nĂ€htamatuks ka teie enda JavaScriptile.  

  3. Path-Based Vulnerabilities („rada pĂ”hinevad“ haavatavused).

    Skanner teatab sellisest haavatavusest, kui leiab avalikult ligipÀÀsetava faili vĂ”i veebisaidi kausta, kus vĂ”ib olla potentsiaalselt konfidentsiaalne teave. NĂ€iteks tuvastab see eraldi sĂŒsteemi konfiguratsioonifailid vĂ”i juurdepÀÀsu kogu failisĂŒsteemile. Selline olukord vĂ”ib tekkida, kui veebisaidil on vale ligipÀÀsuĂ”iguste seadistamine.

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Kui failisĂŒsteem "paistab vĂ€lja", vĂ”ivad pahatahtlikud isikud pÀÀseda operatsioonisĂŒsteemi liidesesse ja proovida leida kaustu, kus on hoitud paroole, kui need on avatud kujul (Ă€rge tehke seda!). VĂ”i on vĂ”imalik varastada paroolide rĂ€simĂ€rgid ja proovida parooli vĂ€lja nuputada, samuti pĂŒĂŒda tĂ”sta privileege sĂŒsteemis ja edasiviia infrastruktuuri.  

    Mida peab veebiarendaja meeles pidama: Ärge unustage ligipÀÀsuĂ”igusi ja seadistage platvorm, veebiserver ja veebirakendus nii, et ei saaks "pĂ”geneda" veebikaustast.

  4. Konfidentsiaalsete andmete sisestamise vormid koos automaatse tÀitmise funktsiooniga.

    Kui kasutaja tÀidab sagedasti veebilehtedel vorme, salvestab tema brauser selle teabe automaatse tÀitmise funktsiooni abil. 

    Veebilehtedel olevad vormid vĂ”ivad sisaldada konfidentsiaalse teabe vĂ€lju, nĂ€iteks paroole vĂ”i krediitkaardinumbrid. Selliste vĂ€ljade puhul tuleks veebisaidil automaatse tĂ€itmise funktsioon vĂ€lja lĂŒlitada. 

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Kui kasutaja brauser salvestab konfidentsiaalset teavet, vĂ”ivad pahatahtlikud isikud selle hiljem nĂ€iteks kalapĂŒĂŒgi abil hankida. Tegelikult paneb veebiarendaja, kes seda nĂŒanssi unustab, oma kasutajad ohtu. 

    Mida peab veebiarendaja meeles pidama: Sel juhul seisame silmitsi klassikalise konfliktiga: mugavus vs turvalisus. Kui veebiarendaja mĂ”tleb kasutaja mugavusele, vĂ”ib ta teadlikult valida automaatse tĂ€itmise. NĂ€iteks kui on oluline jĂ€rgida Veebisisu kergesti ligipÀÀsetavuse juhised – soovitused, kuidas tagada sisu ligipÀÀsetavus liikuvate piirangutega kasutajatele. 

    Enamikus brauserites saab automaatse tĂ€itmise vĂ€lja lĂŒlitada atribuudiga autocompete="off", nĂ€iteks:

     <body>
        <form action="/et/form/submit/" method="get" autocomplete="off" data-trp-original-action="/form/submit">
          <div>
            <input type="text" placeholder="Eesnimi">
          </div>
          <div>
            <input type="text" id="lname" placeholder="Perekonnanimi" autocomplete="on">
          </div>
          <div>
            <input type="number" placeholder="Krediitkaardi number">
          </div>
          <input type="submit">
        <input type="hidden" name="trp-form-language" value="et"/></form>
      </body>

    Aga Chrome'is see ei tööta. Seda ĂŒmbersĂ”itu tehakse JavaScriptiga, retsepti variandi leiate siin. 

  5. Veebisaidi koodis ei ole mÀÀratud pealkirja X-Frame-Options. 

    See pealkiri mÔjutab frame, iframe, embed vÔi object silte. Selle abil saab tÀielikult keelata oma saidi integreerimise frami sisse. Selleks tuleb mÀÀrata vÀÀrtus X-Frame-Options: deny. VÔi vÔib mÀÀrata X-Frame-Options: sameorigin, siis on iframe integreerimine lubatud ainult teie domeenis.

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Sellise pealkirja puudumist saab kasutada pahatahtlikes saitides klikivarguste. Sellise rĂŒnnaku puhul loob kurjategija lĂ€bipaistva frami nuppude kohal ja petab kasutajat. NĂ€iteks: petised paigutavad frami saidile sotsiaalmeedia lehti. Kasutaja arvab, et klĂ”psab sellel saidil nuppudel. Tegelikult pĂŒĂŒtakse klikk kinni ja saadetakse kasutaja pĂ€ring sotsiaalmeediasse, kus on aktiivne sessioon. Nii saadavad kurjategijad rĂ€mpsposti kasutaja nimel vĂ”i suurendavad tellijaid ja meeldimisi. 

    Kui seda vÔimalust ei keelata, vÔib kurjategija paigutada teie rakenduse nupu pahatahtlikule saidile. Ta vÔib olla huvitatud teie suunamisprogrammist vÔi teie kasutajatest.  

    Mida peab veebiarendaja meeles pidama: Haavatavus vĂ”ib ilmneda, kui X-Frame-Options on konflikti vÀÀrtusega mÀÀratud veebiserverisse vĂ”i koormuse tasakaalustajasse. Sellisel juhul lihtsalt server ja koormuse tasakaalustaja kirjutavad pealkirja ĂŒle, kuna neil on kĂ”rgem prioriteet vĂ”rreldes tagasiside koodiga.  

    X-Frame-Options vÀÀrtused deny ja sameorigin segavad Yandexi veebivaatleja tööd. Iframe'i kasutamise lubamiseks veebivaatleja jaoks tuleb kirjutada seades eraldi reegel. NÀiteks nginx-i jaoks saab seadistada selliselt:

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

  6. PRSSI (Path-relative stylesheet import) haavatavused.  

    See on haavatavus saidi stiilides. See tekib, kui stiilifailide juurde pÀÀsemiseks kasutatakse suhtelisi linke nagu href="/somefolder/styles.css/". Kurjategija kasutab seda Àra, kui leiab viisi, kuidas suunata kasutaja pahatahtlikule lehele. Leht paneb oma url-i suhtelise lingi ja imiteerib stilide juurde pÀÀsemist. Saame pÀringu nagu badsite.ru/.../somefolder/styles.css/, mis stiiline nÀiliselt vÔib teha pahatahtlikke tegusid. 

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Petukate vĂ”ib seda haavatavust kasutada, kui ta leiab veel ĂŒhe turvaaugu. Selle tulemuseks on vĂ”imalik varastada kasutajaandmeid kĂŒpsistest vĂ”i token'itest.

    Mida peab veebiarendaja meeles pidama: Seadke pealkiri X-Content-Type-Options: nosniff. Sellisel juhul kontrollib brauser sisu tĂŒĂŒpi stiilide jaoks. Kui tĂŒĂŒp erineb text/css-st, blokeerib brauser pĂ€ringu.

Kriitilised haavatavused

  1. ParoolivÀlja sisaldav leht edastatakse serverist kaitsmata kanali kaudu (HTML vorm, mis sisaldab parooli vÀlju, edastatakse HTTP kaudu).

    Serveri vastus kaitsmata kanalil on haavatav rĂŒnnakute, nagu 'Man in the middle', suhtes. RĂŒndaja vĂ”ib liikluse kinni pĂŒĂŒda ja sĂŒstida end kliendi ja serveri vahele, kui leht liigub serverist kliendile. 

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Petukate vĂ”ib lehte kĂŒsida ja saata kasutajale vormi konfidentsiaalsete andmete jaoks, mis edastatakse rĂŒndaja serverisse. 

    Mida peab veebiarendaja meeles pidama: MĂ”ned saidid saadavad kasutajatele parooli asemel ĂŒhekordse koodi e-posti/telefoni teel. Sellisel juhul ei ole haavatavus nii kriitiline, kuid mehhanism raskendab kasutajate elu.

  2. Sisselogimisvormi edastamine kaitsmata kanali kaudu (Login Form Is Not Submitted Via HTTPS).

    Selle juhtumi korral saadetakse kasutajalt serverisse kaitsmata kanali kaudu vorm sisselogimise ja parooli jaoks.

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Erinevalt eelmisest juhtumist on see juba kriitiline haavatavus. Konfidentsiaalsete andmete pĂŒĂŒdmine on lihtsam, kuna selleks pole isegi vajalik koodi kirjutamine. 

  3. JavaScript'i teekide kasutamine, kus on teadaolevaid haavatavusi.

    Skaneerimise ajal on enimkasutatud teegiks saanud jQuery, millel on lai versioonide spekter. Igas versioonis on vĂ€hemalt ĂŒks, kui mitte rohkem, teadaolevat haavatavust. MĂ”ju vĂ”ib olla vĂ€ga erinev – see sĂ”ltub haavatavuse olemusest.

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Teadaolevate haavatavuste jaoks on olemas eksploidid, nĂ€iteks:

    Veebisaidi turvalisuse surmapatud: mida oleme Ôppinud haavatavuste skaneerimise statistika aastast

    Mida peab veebiarendaja meeles pidama: Tagasi tulge regulaarselt tsĂŒklisse: teadaolevate haavatavuste otsimine – kĂ”rvaldamine – kontrollimine. Kui kasutate tahtlikult vananenud teeke, nĂ€iteks vanade brauserite toe vĂ”i eelarve kokkuhoiu jaoks, otsige vĂ”imalust kĂ”rvaldada teadaolev haavatavus. 

  4. Kcross-site scripting (XSS). 
    Cross-Site Scripting (XSS) ehk ristveebi skriptid on rĂŒnnakud veebirakendusele, mille tulemuseks on andmebaasi ilmumine pahatahtlikku koodi. Kui Qualys tuvastab sellise haavatavuse, vĂ”ib potentsiaalne rĂŒndaja sisestada vĂ”i on juba sisestanud oma js-skripti saidi koodi pahatahtlike toimingute teostamiseks.

    Salvestatud XSS (Stored XSS) on ohtlikumad, kuna skript paigutatakse serverisse ja kĂ€ivitatakse iga kord, kui rĂŒndatud lehte brauseris avatakse.

    Peegeldatud XSS (Reflected XSS) on lihtsamini teostatav, kuna pahatahtlikku skripti saab sisestada HTTP-pĂ€ringusse. Rakendus saab HTTP-pĂ€ringu, ei kontrolli andmeid, pakib need kokku ja saadab kohe edasi. Kui rĂŒndaja tabab liiklust ja lisab skripti kujul

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

    , vÀljub pahatahtlik pÀring kliendi nimel.

    Silmapaistev nÀide XSS-ist: js-snifferid, mis imiteerivad lehti CVC, kaardi aegumistÀhtaja ja muu sarnase sisestamiseks. 

    Mida peab veebiarendaja meeles pidama: Content-Security-Policy pÀises kasutage script-src atribuuti, et kliendi brauser laadiks ja kÀivitaks koodi ainult usaldusvÀÀrsest allikast. NÀiteks script-src 'self' lubab ainult meie saidilt pÀrinevaid skripte. 
    Parim praktika on Inline code: lubage ainult inline javascript vÀÀrtusega unsafe-inline. See vÀÀrtus lubab inline js/css kasutamist, kuid ei keela js-failide ĂŒhendamist. Koos script-src 'self' kĂŒlge keeldume vĂ€liste skriptide kĂ€ivitamisest.

    Veenduge, et logite kÔik report-uri abil ja jÀlgige saidi sissetungi katseid.

  5. SQL-injektsioonid.
    Haavatavus viitab SQL koodi sisestamise vĂ”imalusele, mis pöördub otse saidi andmebaasi. SQL-injektsioon on vĂ”imalik, kui kasutaja andmeid ei filtreerita: neid ei kontrollita Ă”iguse ja kohe kasutatakse pĂ€ringus. NĂ€iteks juhtub see, kui saidi vorm ei kontrolli sisendi vastavust andmetĂŒĂŒbile. 

    : Kurjategijad kasutavad kaitsmata protokolli, et pealt kuulata kasutaja teavet, asendada skripte ja saata saidile pĂ€ringuid selle nimel. Isegi kui veebilehe kĂŒlastaja ei sisestanud andmeid, ei kaitse see teda: Kui rĂŒndaja sisestab sellesse vormi SQL-pĂ€ringu, vĂ”ib ta andmebaasi kokku kukutada vĂ”i konfidentsiaalset teavet avaldada. 

    Mida peab veebiarendaja meeles pidama: Ärge usaldage seda, mis tuleb brauserist. Kaitseks peab olema nii kliendi kui ka serveri poolel. 

    Kliendi poolel kirjutage vÀljade kontrollimiseks JavaScript. 

    Populaarsed raamistike sisseehitatud funktsioonid aitavad samuti serveris kahtlasi mÀrke ekraanida. Serveris on soovitatav kasutada ka parameetritega pÀringuid andmebaasidele.

    MÀÀrake, kus tÀpselt toimub andmebaasiga interaktsioon veebirakenduses. 

    Interaktsioon toimub, kui saame mingit teavet: pĂ€ring id (id vahetus), uue kasutaja loomine, uus kommentaar – uued kirjed andmebaasis. Siin vĂ”ivad esineda sql-injekte. Isegi kui eemaldame kirje andmebaasist, on sql-injektsioon vĂ”imalik.

General recommendations

Ärge leiutage ratast – kasutage tĂ”estatud raamistikke.. Enamasti on populaarsed raamistike versioonid turvalisemad. .NET jaoks on see ASP.NET MVC ja ASP.NET Core, Python jaoks Django vĂ”i Flask, Ruby jaoks Ruby on Rails, PHP jaoks Symfony, Laravel, Yii, JavaScripti jaoks Node.JS-Express.js, Java jaoks Spring MVC.

JÀlgige tarnija uuendusi ja uuendage regulaarselt.. Turvaauk avastatakse, seejÀrel kirjutatakse selle jaoks eksploit, levitatakse avalikult ja kÔik kordub. Liituge stabiilsete versioonide uuendustega tarkvara tarnijalt.

Kontrollige juurdepÀÀsuÔigusi.. Serveri poolt vaadates suhelge oma koodiga nii, nagu oleks kogu see, esimesest kuni viimase tÀheni, kirjutatud teie kÔige vihatum vaenlane, kes soovib teie saiti purustada ja teie andmete terviklikkust rikkuda. Eriti kuna mÔnikord on see tÔesti nii.

Kasutage kloone, testplaasid ja seejÀrel rakendage need tootmisse.. See aitab, esiteks, vÀltida vÔimalikke vigu ja probleeme tootmiskeskkonnas: tootmiskeskkond teenib raha, tootmiskeskkonna seiskamine on kriitiline. Probleemide lisamisel, parandamisel vÔi sulgemisel on soovitatav töötada testkeskkonnas, seejÀrel kontrollida funktsionaalsust ja leitud haavatavusi ning alles seejÀrel planeerida tööd tootmiskeskkonnas. 

Kaitske veebirakendust Veebirakenduse tulemĂŒĂŒriga ja integreerige selle juurde haavatavuste skĂ€nneri raportid.. NĂ€iteks DataLine'is kasutatakse teenuste sidumiseks Qualys ja FortiWeb.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster