Umbes aasta tagasi kĂ€ivitasime DataLine'is IT-rakendustes haavatavuste otsimise ja analĂŒĂŒsi jaoks. Teenuse aluseks on pilvelahendus Qualys, mille töödest oleme juba rÀÀkinud 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:Â

Kuid mitte-kriitilised ei tĂ€henda kahjutud. Need vĂ”ivad samuti tekitada tĂ”siseid kahjustusi.Â

Top 'mitte-kriitilised' haavatavusedÂ
Sega sisu seotud haavatavused.
- 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 :Â

: 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: , 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.   Â
- 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. Â
- 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.
- 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 â 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 .Â
- 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; ... } - 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
- 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.
- 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.Â
- 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:

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. - 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.
- 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 ja integreerige selle juurde haavatavuste skÀnneri raportid.. NÀiteks DataLine'is kasutatakse teenuste sidumiseks Qualys ja FortiWeb.
Allikas: habr.com


