OWASP je okrajšava za Open Web Application Secrutiy Project, ki je mednarodna neprofitna organizacija namenjena izboljšanju varnosti programske opreme z odprtokodnimi pobudami in izobraževanjem skupnosti.
OWASP Top 10 predstavlja najbolj kritična tveganja sodobnih spletnih aplikacij. Preprosto povedano, velja za industrijski standard varnosti aplikacij. OWASP Top 10 za leto 2021 temelji na analizi več kot 500.000 aplikacij, zaradi česar je največji in najbolj izčrpen nabor varnostnih podatkov aplikacij.
A01: 2021 – Pomanjkljiv nadzor dostopa
Pomanjkljiv nadzor dostopa je pogost v sodobnih spletnih aplikacijah, ki jih napadalci redno izkoriščajo, da bi ogrozili uporabnike in pridobili dostop do virov. Napake pri preverjanju pristnosti in avtorizaciji lahko povzročijo izpostavljenost občutljivih podatkov ali nenamerno izvajanje kode in vodijo do nepooblaščenega razkritja informacij, spreminjanja ali uničenja podatkov ali opravljanja poslovnih funkcij zunaj uporabnikovih meja.
Nadzor dostopa uveljavlja politiko, tako da uporabniki ne morejo delovati zunaj predvidenih dovoljenj. Nadzor je učinkovit samo v zaupanja vredni kodi na strani strežnika ali API-ju brez strežnika, kjer napadalec ne more spremeniti preverjanja nadzora dostopa ali metapodatkov.
A02: 2021 – Kriptografske napake
Kriptografske napake so glavni vzrok za izpostavljenost občutljivim podatkom, ki lahko vključujejo gesla, številke kreditnih kartic, zdravstvene kartoteke in druge osebne podatke. Najpogostejša napaka se zgodi pri nepravilnem šifriranju ali ne implementaciji, kot je prenos podatkov v čistem besedilu, uporaba starih in šibkih kriptografskih algoritmov ali ne uveljavljanje varnih protokolov za prenos občutljivi podatkov, kot so http, SMTP in FTP.
Kot prvo je treba določiti potrebe po zaščiti podatkov med prenosom in mirovanjem. Gesla, številke kreditnih kartic in drugi osebni podatki ter poslovne skrivnosti zahtevajo dodatno zaščito, predvsem, če ti podatki spadajo v zakonodajo o zasebnosti pod Splošno uredbo EU o varstvu podatkov (GDPR) ali predpise o varstvu finančnih podatkov, kot je PCI Data Security Standard (PCI DSS).
A03: 2021 – Vrivanje
Vrivanje se nanaša na širok spekter ranljivosti, ki napadalcu omogočajo, da aplikaciji posreduje sovražne ali nezaupljive podatke (preko vnosa obrazca ali druge predložitve podatkov), ki pretenta tolmača kode, da izvede nenamerne ukaze ali dostopa do podatkov brez ustreznega pooblastila. Nekatere najpogosteje uporabljene in zlahka izkoriščene napake so SQL, NoSQL, ukazi SO, ORM, izrazni jezik EL, OGNL in vrivanje LDAP. Koncept je enak med vsemi tolmači.
Pregled izvorne kode je najboljši način za odkrivanje, ali so aplikacije ranljive za vrivanje. Priporoča se avtomatsko testiranje vseh parametrov, glav, URL-jev, piškotkov, JSON, SOAP in XML vnosov podatkov. Organizacije lahko vključijo statična SAST, dinamična (DAST) in interaktivna (IAST) orodja za testiranje varnosti aplikacij v cevovod DI/CD, da prepoznajo uvedene napake vbrizgavanja pred uvedbo proizvodnje.
A04: 2021 – Negotova zasnova
Negotova zasnova se osredotoča na tveganja, povezava z načrtovalnimi in arhitekturnimi napakami, in predstavlja širok spekter slabosti. Gre za široko kategorijo, ki predstavlja različne slabosti, izražene kot »manjkajoča ali neučinkovita zasnova nadzora«. Obstaja pa razlika med negotovo zasnovo in negotovo izvedbo. Zato z razlogom ločujemo pomanjkljivosti načrtovanja in izvedbe. Varna zasnova ima lahko še vedno napake pri izvajanju, ki vodijo do ranljivosti. Nevarne zasnove namreč ni mogoče popraviti s popolno izvedbo, saj po definiciji potrebni varnostni nadzori niso ustvarjeni za obrambo pred specifičnimi napadi. Eden od dejavnikov, ki pripreva k negotovi zasnovi je pomanjkanje profiliranja poslovnega tveganja, ki je neločljivo povezano s programsko opremo ali sistemom, ki se razvija. S tem pa ni mogoče določiti, kakšna raven varnostne zasnove je potreba.
A05: 2021 – Napačna varnostna konfiguracija
Ranljivosti napačne varnostne konfiguracije se pojavijo, ko so komponente aplikacije konfigurirane nevarno, nepravilno ali ne sledijo najboljšim in najnovejšim praksam. Ranljivosti se lahko pojavijo na kateri koli stopnji aplikacijskega sklada, vključno z omrežnimi storitvami, spletnimi strežniki, aplikacijskimi strežniki in bazami podatkov. Varnostne napake v napačni konfiguraciji so lahko v obliki nepotrebnih funkcij, privzetih računov in gesel ter obravnave napak, ki razkrije preveč informacij o aplikaciji.
A06: 2021 – Ranljive in zastarele komponente
Ranljive in zastarele komponente se pojavijo, ko je komponenta programske opreme zastarela, ni podprta ali je ranljiva za znano izkoriščanje. Razvoj, ki temelj na komponentah, lahko povzroči, da razvojne ekipe ne vedo ali ne razumejo, katere komponente uporabljajo v svojih aplikacijah.
A07:2021 – Napake pri identifikaciji in preverjanju pristnosti
Napake pri identifikaciji in preverjanju pristnosti se pojavijo, ko funkcije, ki se povezane z identiteto uporabnika niso izvedene pravilno ali ustrezno zaščitene, kar napadalcem omogoča dostop in prevzem identitete uporabnika.
A08: 2021 – Napake pri integriteti programske opreme in podatkov
Napake pri integriteti programske opreme in podatkov se nanašajo na kodo in infrastrukturo, ki nista ustrezni za zaščito pred kršitvijo integritete. Pri uporabi programskih vtičnikov, knjižnic ali modulov iz nezaupnih virov, skladišč ali omrežji za dostavo vsebine (CDN), lahko to povzroči možnost nepooblaščenega dostopa, zlonamerne kode ali ogrožanja sistema s strani napadalcev. Primeri vključujejo nepopisano vdelano programsko opremo, nezaščitene mehanizme posodabljanja ali nezanesljivo deserializacijo.
A09: 2021 – Varnostno beleženje in spremljanje napak
Varnostno beleženje in spremljanje napak je kategorija, ki je namenjena odkrivanju, stopnjevanju in odzivanju na aktivne kršitve. Brez beleženja in spremljanja kršitev ni mogoče odkriti. Kategorija predstavlja temelj skoraj vsakega večjega incidenta. Napadalci se zanašajo na nezadostno spremljanje in počasen odziv, da bi se uveljavili v aplikaciji in dosegli svoje cilje, hkrati pa ostali neopaženi. Podjetja v povprečju potrebujejo 287 dni, da odkrijejo in zadržijo novo kršitev, kar daje napadalcem dovolj časa, da povzročijo motnje in škodo.
A10: 2021 – Ponarejanje zahtev na strani strežnika
Napake pri ponarejanju zahtev na strani strežnika se pojavijo, ko spletna aplikacija pri pridobivanju oddaljenega vira ne potrdi uporabniškega URL-ja. To napadalcem omogoča, da prisilijo aplikacijo, da pošlje izdelano zahtevo na nepričakovano destinacijo, tudi če je aplikacija zaščitena za požarnim zidom, VPN ali drugo vrsto seznama za nadzor dostopa do omrežja (ACL).