OWASP


Injection 

Napadač pokušava prenijeti kod koji će se izvršiti u vašem sustavu sa ciljem da ošteti sustav i učini ga nedostupnim ili dobije neke korisne informacije.

Treba koristiti stroge tipove u programskom kodu, izbjegavati interpretaciju naredbi, koristiti pripremljene SQL procedure, koristiti, a ne SQL ključne riječi i ne pokazivati greške o načinu funkcioniranja sustava.

Neke od uobičajenih injekcija su SQL, NoSQL, OS naredba, Object Relational Mapping (ORM), itd. 

Aplikacija je ranjiva na napad kada:  

  • navedene podatke aplikacija ne potvrđuje 
  • shema koju je zatražio korisnik ne analizira se prije obrade 
  • podaci se koriste unutar parametara pretraživanja za izdvajanje dodatnih i osjetljivih zapisa 
  • SQL naredbe se koriste u dinamičkim upitima i naredbama.  
  • ako korisnik pokuša koristiti Cross-site Scripting kako bi dobio neke neovlaštene podatke 

Insecure Design 

Ovo je jedna od najtežih i najskupljih (često i nemogućih) za ispraviti.

Kako bi se obranili od nesigurnog dizajna koristimo „Zero Trust Architecture“ koja za pristupe, autentifikacije i autorizacije, treba odobriti u razvojnom procesu i modelirati prijetnju 

OWASP je razvio projekt SAMM tj. Software Assurance Maturity Model koji pokušava ustanoviti sigurnosnu zrelost organizacije.

Security Misconfiguration

Aplikacije su ranjive ako se ne promijene standardne postavke i ako se pretpostavlja sigurnost sustava. Čak i najsigurnija aplikacija može biti ugrožena ako server zadržava zadane postavke. Primjerice, u WordPressu su korisnička imena i lozinke često “username”, “password” i “admin”. Također, sustavi mogu otkriti osjetljive informacije putem grešaka.

Za zaštitu, važno je provjeriti koristi li se zadane postavke, je li softver ažuriran, jesu li isključene nepotrebne funkcije i prikazuju li se nepotrebne greške.

Često se koriste složeni sustavi za jednostavne potrebe, što povećava rizik. Primjerice, korištenje Raspberry Pi-a za mjerenje temperature otvara više sigurnosnih ranjivosti nego što je potrebno.

Vulnerable and Outdated Components 

Ranjive i stare komponente nam prikazuju opasnosti loših standardnih konfiguracija i postavki. Razvojni programeri uobičajeno koriste puno komponenti u svojim projektima, te postavljaju vlastite aplikacije na poslužitelje s potencijalno starim softverom koi ima poznate ranjivosti ili kojem je istekao životni ciklus.  

Dobra praksa obrane je korištenje SBOM-a (Software Bill Of Materials), odnosno popis biblioteka uključenih u izgradnju aplikacije ili sustava, te analizirati pomoću gotovog softvera postoje li ranjivosti za te biblioteke. OWASP upravo radi projekt pod imenom „Dependency Track“ koji je otvorenog koda i samim time dostupan svima. 

Identification and Authentication Failures 

Napadaču je cilj upasti u sustav kao neki od postojećih korisnika, a to se postiže pogađanjem korisničkog imena i lozinke, krađom kolačića, identifikatora sesije ili tokena.  

Postoje 3 tipa pogađanja:  

  • pogađanje silom (brute force) 
  • pogađanje standardnih vjerodajnica (WordPress username ili admin) 
  • socijalni inženjering – napadač istražuje sve informacije o žrtvi isključivo putem digitalnih tragova  

Način obrane protiv napadanja u sustav može uključivati korištenje multifaktorske autentifikacije, analiza i uklanjanje standardnih vjerodajnica, redovita rotacija vjerodajnica za različite aplikacije, korištenje softvera za upravljanje tajnama kao što su Valut od HashiCorpa, dizanje alarma na više pokušaja neuspjele prijave korisnika u sustav, uljučivanjem sliding expiration-a kod višestrukog unosa krive lozinke, korištenjem (re)CAPTCHA-e, korištenjem različitih lozinki za različite servise, mreže i aplikacije, čime se izbjegavaju kaskadne ranjivosti.  

Software and Data Integrity Failures 

Napadaču je cilj podmetnuti dodatak, biblioteku ili komponentu u proces kompilacije ili razvoj aplikacije. Maliciozne biblioteke često nađu mjesto na javnim, neprovjerenim repozitorijima koda ili CDN-ovima (Content Delivery Network – servis koji čuva statičke resurse – slike, datoteke, kod itd.) 

Obrana od napadača uključuje korištenje digitalnih potpisa i izračun kriptografskog sažetka. Kod preuzimanja svakog paketa softvera postoji sažetak preuzetog paketa koji se može provjeriti pomoću raznih alata ili vizualno. Može se koristiti i OWASP alat „Dependency Track“ kako bi se provjerile komponente za potencijalne ranjivosti.  

Jedan od poznatijih napada je bio na tvrtku Solar Winds, odnosno njihov softver „Orion“. Napadači su ubacili svoj zloćudni kod u proces kompiliranja softvera, koji je omogućavao udaljeno izvršavanje i zbog toga utjecao na više od 18 000 kupaca Solar Windsa, među kojima su bile razne agencije USA vlade.  

Security Logging and Monitoring Failures 

Kompleksna ranjivost, a napadačima je cilj upasti u sustav. Napadači često prvo gledaju što se može vidjeti „propalim“ pokušajima upada. Problem nastaje što postoji izuzetno puno alarma te se od šume ne vidi drvo.  

Kada se radi o slučaju gdje tvrtke nemaju informacije, onda ne postoje dnevnički zapisi o prijavama u sustav, greškama i upozorenjima koja se događaju. U slučaju da sve to postoji, često je slučaj da su spremljeni na nestandardan način što otežava agregiranje, a posljedično onemogućava pravovremeno reagiranje i rješavanje problema. 

Obrana treba definirati kritičke točke sustava pomoću nekih od poznatih modela modeliranih prijetnji; ujednačiti dnevničke zapise cijelog sustava kako bi se mogli jednako promatrati i filtrirati.   

Server-Side Request Forgery (SSRF) 

Iskorištava se kada aplikacija dohvaća podatke s resursa treće strane, a nije provjerila URL s kojega dohvaća podatke. Ta ranjivost može zaobići sve današnje popularne mehanizme zaštite kao što je VPN.

Napadač pošalje URL koji prolazi kroz javno objavljenu aplikaciju. Druga aplikacija koja nije objavljena na webu preuzima  preuzima podatke s URL-a, na taj način javlja povjerljive informacije iz zaštićene mreže. Napadači s tim povjerljivim informacijama mogu skenirati portove i vidjeti arhitekturu interne mreže.

Postoje dvije razine na koje bi trebali pripaziti: Mrežna razina i Aplikacijski sloj. Na mrežnoj razini potrebno je na vatrozidu napraviti listu dopuštenih resurs ili koristiti pametan način nadzora prometa. U aplikacijskom sloju treba unos, sanirati ulaz i onemogućiti HTTP preusmjeravanja.