10 kõige levinumat veebiturvalisuse haavatavust
OWASP ehk Open Web Security Project on mittetulunduslik heategevusorganisatsioon, mis on keskendunud tarkvara ja veebirakenduste turvalisuse parandamisele.
Organisatsioon avaldab erinevate turvaorganisatsioonide andmetel põhinevate veebiturbe haavatavuste loendi.
Veebiturbe haavatavused seatakse prioriteediks sõltuvalt kasutatavusest, tuvastatavusest ja mõjust tarkvarale.
- Kasutatavus –Mida on vaja turvaauku ärakasutamiseks? Kõrgeim kasutatavus, kui rünnak vajab ainult veebibrauserit ja madalaim on täiustatud programmeerimine ja tööriistad.
- Tuvastatavus - Kui lihtne on ohtu tuvastada? Kõrgeim on URL-is, vormis või veateates kuvatav teave ja madalaim lähtekood.
- Löök või kahjustus –Kui palju kahju tekib, kui turvaauke paljastatakse või rünnatakse? Kõrgeim on täielik süsteemi krahh ja madalaim mitte midagi.
OWASP Top 10 peamine eesmärk on harida arendajaid, disainereid, juhte, arhitekte ja organisatsioone kõige olulisemate turvaaukude kohta.
OWASP Top 10 10 parimat turvaauku on järgmised:
SQL Injection
Kirjeldus
Süstimine on turvahaavatavus, mis võimaldab ründajal taustaprogrammi muuta SQL avaldused, manipuleerides kasutaja esitatud andmetega.
Süstimine toimub siis, kui kasutaja sisend saadetakse tõlgile käsu või päringu osana ja see meelitab tõlgi täitma soovimatuid käske ja annab juurdepääsu volitamata andmetele.
SQL-käsk, mis veebirakenduse käivitamisel võib paljastada ka taustaandmebaasi.
Mõju
- Ründaja võib haavatavatele väljadele pahatahtlikku sisu süstida.
- Andmebaasist saab lugeda tundlikke andmeid nagu kasutajanimed, paroolid jne.
- Andmebaasi andmeid saab muuta (Insert/Update/Delete).
- haldus Operasaab andmebaasis käivitada
Haavatavad objektid
- Sisestusväljad
- Andmebaasiga suhtlevad URL-id.
Näited:
- SQL süstimine sisselogimislehel
Rakendusse sisselogimine ilma kehtivate mandaatideta.
Kehtiv kasutajanimi on saadaval ja parool pole saadaval.
Testi URL: http://demo.testfire.net/default.aspx
Kasutajanimi: sjones
Parool: 1=1′ või pass123
SQL-päring on loodud ja saadetud Interpreterile nagu allpool
SELECT * FROM Kasutajad WHERE Kasutajanimi = sjones AND Parool = 1=1′ või pass123;
Soovitused
- Sisestusväljade valge loend
- Vältige ründajale kasulike üksikasjalike veateadete kuvamist.
Saitidevaheline skriptimine
Kirjeldus
Cross Site Scripting on lühidalt tuntud ka kui XSS.
XSS-i haavatavused on suunatud lehele manustatud skriptidele, mis käivitatakse kliendi poolel, st kasutaja brauseris, mitte serveri poolel. Need vead võivad ilmneda siis, kui rakendus võtab ebausaldusväärseid andmeid ja saadab need veebibrauserisse ilma nõuetekohase valideerimiseta.
Ründajad saavad kasutada XSS-i, et käivitada kasutajate peal pahatahtlikke skripte, antud juhul ohvriks langenud brauserites. Kuna brauser ei saa teada, kas skript on usaldusväärne või mitte, siis skript käivitatakse ja ründaja võib seansiküpsiseid kaaperdada, veebisaite rikkuda või kasutaja soovimatutele ja pahatahtlikele veebisaitidele ümber suunata.
XSS on rünnak, mis võimaldab ründajal ohvri brauseris skripte käivitada.
Mõju:
- Seda turvaauku kasutades saab ründaja sisestada rakendusse skripte, varastada seansiküpsiseid, rikkuda veebisaite ja käivitada ohvri masinates pahavara.
Haavatavad objektid
- Sisestusväljad
- Aadressid
Näited
1. http://www.vulnerablesite.com/home?”<script>alert(“xss”)</script>
Ülaltoodud skripti brauseris käivitamisel kuvatakse teatekast, kui sait on XSS-i suhtes haavatav.
Tõsisema rünnaku saab teha siis, kui ründaja soovib kuvada või salvestada seansiküpsist.
2. http://demo.testfire.net/search.aspx?txtSearch <iframe> http://google.com laius = 500 kõrgus 500>
Ülaltoodud skripti käivitamisel laadib brauser nähtamatu raami, mis osutab sellele http://google.com.
Rünnaku saab tõsiseks muuta, käivitades brauseris pahatahtliku skripti.
Soovitused
- Valge loendi sisestusväljad
- Sisend Väljundi kodeering
Katkestatud autentimine ja seansihaldus
Kirjeldus
Veebisaidid loovad tavaliselt iga kehtiva seansi jaoks seansiküpsise ja seansi ID ning need küpsised sisaldavad tundlikke andmeid, nagu kasutajanimi, parool jne. Kui seanss lõppeb väljalogimise või brauseri järsu sulgemisega, tuleks need küpsised tühistada, st iga seansi jaoks peaks tulema uus küpsis.
Kui küpsiseid ei tunnistata kehtetuks, on delikaatsed andmed süsteemis olemas. Näiteks kui kasutaja kasutab avalikku arvutit (Cyber Cafe), istuvad haavatava saidi küpsised süsteemi ja puutuvad kokku ründajaga. Ründaja kasutab mõne aja pärast sama avalikku arvutit, tundlikud andmed on ohus.
Samamoodi sulgeb avalikku arvutit kasutav kasutaja väljalogimise asemel brauseri järsult. Ründaja kasutab sama süsteemi, sama haavatavat saiti sirvides avatakse ohvri eelmine seanss. Ründaja võib teha mida iganes, varastada profiiliteavet, krediitkaarditeavet jne.
Kontrollida tuleks autentimise ja seansihalduse tugevust. Võtmed, seansimärgid ja küpsised tuleks rakendada õigesti, ilma paroolide ohtu seadmata.
Haavatavad objektid
- URL-is avaldatud seansi ID-d võivad viia seansi fikseerimise rünnakuni.
- Seansi ID-d on samad enne ja pärast välja- ja sisselogimist.
- Seansi ajalõpe pole õigesti rakendatud.
- Rakendus määrab iga uue seansi jaoks sama seansi ID.
- Rakenduse autentitud osad on kaitstud SSL-iga ja paroolid salvestatakse räsi- või krüptitud vormingus.
- Madala privilegeeritud kasutaja saab seanssi uuesti kasutada.
Mõju
- Seda haavatavust kasutades võib ründaja seansi kaaperdada, saada volitamata juurdepääsu süsteemile, mis võimaldab volitamata teavet avalikustada ja muuta.
- Seansse saab tõsta varastatud küpsiste või XSS-i kasutavate seansside abil.
Näited
- Lennufirma broneerimisrakendus toetab URL-i ümberkirjutamist, lisades URL-i seansi ID-d:http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (Piletite müük Maldiividele) Saidi autentitud kasutaja soovib oma sõpradele müügist teada anda ja saadab e-kirja. Sõbrad saavad seansi ID ja neid saab kasutada volitamata muudatuste tegemiseks või salvestatud krediitkaardi andmete väärkasutamiseks.
- Rakendus on haavatav XSS-i suhtes, mille kaudu ründaja pääseb juurde seansi ID-le ja seda saab kasutada seansi kaaperdamiseks.
- Rakenduste ajalõpud pole õigesti seadistatud. Kasutaja kasutab avalikku arvutit ja sulgeb väljalogimise asemel brauseri ja kõnnib minema. Ründaja kasutab mõnda aega hiljem sama brauserit ja seanss autenditakse.
Soovitused
- Kõik autentimise ja seansi haldamise nõuded tuleks määratleda vastavalt OWASP-i rakenduse turbekontrolli standardile.
- Ärge kunagi avaldage URL-ides ega logides mandaate.
- Samuti tuleks teha suuri jõupingutusi, et vältida XSS-i vigu, mida saab kasutada seansi ID-de varastamiseks.
Ebaturvalised otseobjektiviited
Kirjeldus
See ilmneb siis, kui arendaja avaldab URL-is või parameetrina FORM viite sisemisele juurutusobjektile, näiteks failile, kataloogile või andmebaasivõtmele. Ründaja saab seda teavet kasutada teistele objektidele juurdepääsuks ja luua tulevase rünnaku volitamata andmetele juurdepääsuks.
Mõju
- Seda haavatavust kasutades võib ründaja pääseda juurde volitamata sisemistele objektidele, muuta andmeid või ohustada rakendust.
Haavatavad objektid
- URL-is.
Näited:
Kui muudate järgmises URL-is kasutajatunnust, võib ründaja vaadata teiste kasutajate teavet.
http://www.vulnerablesite.com/userid=123 Muudetud http://www.vulnerablesite.com/userid=124
Ründaja saab vaadata teiste teavet, muutes kasutaja ID väärtust.
Soovitused:
- Rakendage juurdepääsukontrolli kontrolle.
- Vältige URL-ides objektiviidete paljastamist.
- Kontrollige kõigi viiteobjektide volitusi.
Saidiülese taotluse võltsimine
Kirjeldus
Cross Site Request Forgery on võltsitud taotlus, mis pärineb ristsaidilt.
CSRF-rünnak on rünnak, mis toimub siis, kui pahatahtlik veebisait, e-kiri või programm paneb kasutaja brauseri sooritama soovimatuid toiminguid usaldusväärsel saidil, mille jaoks kasutaja on praegu autentitud.
CSRF-rünnak sunnib sisselogitud ohvri brauserit saatma haavatavale veebirakendusele võltsitud HTTP-päringu, sealhulgas ohvri seansiküpsise ja muu automaatselt kaasatud autentimisteabe.
Ründaja saadab ohvrile lingi, kui kasutaja algsele veebisaidile sisse logides klõpsab URL-il, andmed varastatakse veebisaidilt.
Mõju
- Selle haavatavuse kasutamine ründajana võib muuta kasutajaprofiili teavet, olekut, luua administraatori nimel uue kasutaja jne.
Haavatavad objektid
- Kasutajaprofiili leht
- Kasutajakonto vormid
- Äritehingute leht
Näited
Ohver logitakse panga veebisaidile sisse kehtivate mandaatidega. Ta saab ründajalt kirja, mis ütleb: "Palun klõpsake siin, et annetada 1 dollar."
Kui ohver sellel klõpsab, luuakse kehtiv taotlus 1 dollari annetamiseks konkreetsele kontole.
http://www.vulnerablebank.com/transfer.do?account=cause&amount=1
Ründaja jäädvustab selle päringu ja loob allpool päringu ning manustab nupule "Toetan põhjust".
http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000
Kuna seanss on autentitud ja päring tuleb panga veebisaidi kaudu, kannab server ründajale 1000 dollarit.
Soovitus
- Nõuandke tundlike toimingute tegemisel kasutaja kohalolekut.
- Rakendage selliseid mehhanisme nagu CAPTCHA, uuesti autentimine ja kordumatud päringu märgid.
Turvalisuse vale seadistamine
Kirjeldus
Rakenduse, raamistike, rakendusserveri, veebiserveri, andmebaasiserveri ja platvormi jaoks tuleb määratleda ja juurutada turbekonfiguratsioon. Kui need on õigesti konfigureeritud, võib ründajal olla volitamata juurdepääs tundlikele andmetele või funktsioonidele.
Mõnikord põhjustavad sellised vead süsteemi täielikku kompromissi. Tarkvara ajakohasena hoidmine on samuti hea turvalisus.
Mõju
- Seda haavatavust kasutades saab ründaja loetleda aluseks oleva tehnoloogia ja rakendusserveri versiooniteabe, andmebaasi teabe ning hankida teavet rakenduse kohta, et korraldada veel paar rünnakut.
Haavatavad objektid
- URL
- Vormiväljad
- Sisestusväljad
Näited
- Rakendusserveri administraatorikonsool installitakse automaatselt ja seda ei eemaldata. Vaikekontosid ei muudeta. Ründaja saab sisse logida vaikeparoolidega ja pääseb volitamata juurde.
- Kataloogide loend pole teie serveris keelatud. Ründaja avastab ja saab lihtsalt loetleda kataloogid, et leida mis tahes faile.
Soovitused
- Tugev rakenduse arhitektuur, mis tagab komponentide hea eraldatuse ja turvalisuse.
- Muutke vaikimisi kasutajanimesid ja paroole.
- Keelake kataloogide loendid ja rakendage juurdepääsukontrolli kontrolle.
Ebaturvaline krüptograafiline salvestusruum
Kirjeldus
Ebaturvaline krüptograafiline salvestusruum on tavaline haavatavus, mis tekib siis, kui tundlikke andmeid ei salvestata turvaliselt.
Kasutaja volikirjad, profiiliteave, terviseandmed, krediitkaarditeave jne kuuluvad veebisaidi tundlike andmete alla.
Need andmed salvestatakse rakenduste andmebaasi. Kui neid andmeid salvestatakse valesti, kuna ei kasutata krüptimist ega räsimist*, on need ründajate suhtes haavatavad.
(*Räsimine on stringimärkide teisendamine lühemateks fikseeritud pikkusega stringideks või võtmeks. Stringi dekrüpteerimiseks peab võtme moodustamiseks kasutatav algoritm olema saadaval)
Mõju
- Seda haavatavust kasutades saab ründaja varastada, muuta selliseid nõrgalt kaitstud andmeid identiteedivarguste, krediitkaardipettuste või muude kuritegude toimepanemiseks.
Haavatavad objektid
- Rakenduste andmebaas.
Näited
Ühes pangarakenduses kasutab paroolide andmebaas kõigi paroolide salvestamiseks soolamata räsi *. SQL-i sisestamise viga võimaldab ründajal paroolifaili tuua. Kõiki soolamata räsi saab kiiresti sundida, samas kui soolatud paroolide jaoks kuluks tuhandeid aastaid.
(*Soolamata räsi – sool on algandmetele lisatud juhuslikud andmed. Sool lisatakse paroolile enne räsimist)
Soovitused
- Tagada sobivad tugevad standardalgoritmid. Ärge looge oma krüptoalgoritme. Kasutage ainult heakskiidetud avalikke algoritme, nagu AES, RSA avaliku võtme krüptograafia ja SHA-256 jne.
- Veenduge, et väljaspool saiti tehtud varukoopiad oleksid krüpteeritud, kuid võtmeid hallatakse ja varundatakse eraldi.
URL-i juurdepääsu piiramine ebaõnnestus
Kirjeldus
Veebirakendused kontrollivad enne kaitstud linkide ja nuppude renderdamist URL-i juurdepääsuõigusi. Rakendused peavad läbima sarnase juurdepääsu kontrolli iga kord, kui neile lehtedele juurde pääsete.
Enamikus rakendustes privilegeeritud lehti, asukohti ja ressursse privilegeeritud kasutajatele ei esitata.
Aruka oletuse järgi pääseb ründaja juurde privileegide lehtedele. Ründaja saab juurde pääseda tundlikele lehtedele, käivitada funktsioone ja vaadata konfidentsiaalset teavet.
Mõju
- Seda haavatavust kasutades võib ründaja pääseda juurde volitamata URL-idele ilma rakendusse sisse logimata ja haavatavust ära kasutada. Ründaja saab juurde pääseda tundlikele lehtedele, käivitada funktsioone ja vaadata konfidentsiaalset teavet.
Haavatavad objektid:
- Aadressid
Näited
- Ründaja märkab, et URL näitab rolli kujul „/user/getaccounts”. Ta muudab kui "/admin/getaccounts".
- Ründaja saab URL-ile rolli lisada.
http://www.vulnerablsite.com saab muuta kui http://www.vulnerablesite.com/admin
Soovitused
- Rakendage tugevaid juurdepääsukontrolli kontrolle.
- Autentimis- ja autoriseerimispoliitika peaksid olema rollipõhised.
- Piirake juurdepääsu soovimatutele URL-idele.
Ebapiisav transpordikihi kaitse
Kirjeldus
Tegeleb infovahetusega kasutaja (kliendi) ja serveri (rakenduse) vahel. Rakendused edastavad sageli võrgu kaudu tundlikku teavet, nagu autentimisandmed, krediitkaarditeave ja seansimärgid.
Nõrkade algoritmide või aegunud või kehtetute sertifikaatide kasutamine või SSL-i mittekasutamine võib võimaldada suhtlust ebausaldusväärsetele kasutajatele, mis võib kahjustada veebirakendust ja/või varastada tundlikku teavet.
Mõju
- Seda veebiturvalisuse haavatavust kasutades saab ründaja nuusutada õigustatud kasutaja mandaate ja pääseda juurde rakendusele.
- Võib varastada krediitkaardi andmeid.
Haavatavad objektid
- Võrgu kaudu saadetud andmed.
Soovitused
- Lubage turvaline HTTP ja jõustage mandaatide edastamine ainult HTTPS-i kaudu.
- Veenduge, et teie sertifikaat on kehtiv ja pole aegunud.
Näited:
1. Rakendus, mis ei kasuta SSL-i, jälgib ründaja lihtsalt võrguliiklust ja jälgib autentitud ohvriseansi küpsist. Ründaja võib selle küpsise varastada ja sooritada rünnaku Man-in-the-Middle.
Kinnitamata ümbersuunamised ja edasisuunamised
Kirjeldus
Veebirakendus kasutab vähe meetodeid, et suunata ja suunata kasutajaid ettenähtud eesmärgil teistele lehtedele.
Kui teistele lehtedele ümbersuunamisel puudub nõuetekohane valideerimine, saavad ründajad seda kasutada ja ohvreid ümber suunata andmepüügi- või pahavarasaitidele või kasutada volitamata lehtedele juurdepääsuks edasisaateid.
Mõju
- Ründaja võib saata kasutajale URL-i, mis sisaldab ehtsat URL-i, millele on lisatud kodeeritud pahatahtlik URL. Kasutaja, kes näeb ründaja saadetud URL-i ehtsat osa, saab seda sirvida ja võib saada ohvriks.
Näited
1.http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com
Muudetud
http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com
Soovitused
- Lihtsalt vältige rakenduses ümbersuunamiste ja edasisuunamiste kasutamist. Kui seda kasutatakse, ärge kasutage sihtkoha arvutamisel kasutaja parameetreid.
- Kui sihtkoha parameetreid ei saa vältida, veenduge, et esitatud väärtus on kehtiv ja kasutaja jaoks volitatud.