User Tools

Site Tools


business_logic

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
business_logic [2025/04/22 17:12] ppalebusiness_logic [2026/06/15 19:01] (current) – Dodavanje i promjena sadržaja poglavlja o mitigacijama mbunic
Line 1: Line 1:
-====Business logic vulnerabilites====+====Business logic vulnerabilities====
  
-Business logic vulnerabilites su tip ranjivosti koji se pojavljuju zbog propusta u dizajnu sustava i izostanku odgovarajućih sigurnosnih mjera i provjera. Ove ranjivosti se rijetko mogu pronaći automatiziranim načinom, sigurnosnim alatima za skeniranje i analizu koda, jer ovise o kontekstu same aplikacije. Napadač može manipulirati postojećim funkcionalnostima sustava na nepredviđeni načinkako bi izvršio neželjene akcije+**Business logic vulnerabilities** su tip ranjivosti koji se pojavljuju zbog propusta u dizajnu sustava i izostanku odgovarajućih sigurnosnih mjera i provjera. Ove ranjivosti se rijetko mogu pronaći automatiziranim alatima za skeniranje i analizu koda, jer ovise o kontekstu same aplikacije. Napadač može manipulirati postojećim funkcionalnostima sustava na nepredviđen način kako bi izvršio neželjene radnje
  
-Najjednostavniji primjeri ove skupine ranjivosti su: kupnja negativne količine nekog proizvoda u web trgovini, npr. umjesto kupnje dvije majice, u košaricu se za broj majica stavi minus dva za količinu, čime cijena kupovine bude negativna i novci se prebace kupcu s računa web aplikacije umjesto slanja novaca s računa kupca na račun web aplikacije.  +Jednostavan primjer ove skupine ranjivosti je kupnja negativne količine nekog proizvoda u web trgovini. Na primjer, umjesto kupnje dvije majice, u košaricu se za broj majica unese minus dva za količinu, čime cijena kupnje postaje negativna, a novac se prenosi s računa web aplikacije na račun kupca, umjesto obrnuto. 
-Ako postoji provjera da ukupna cijena ne može biti negativna, ali ne postoji provjera da ne može biti negativan broj proizvodatad se može kupiti dvoje hlača i „minus dvije“ majice. Ako ova transakcija nije provjerena i sustav ju odobri, tada se dobiju naručenih dvoje hlača, ali ne po punoj cijeni, nego po cijeni umanjenoj za cijenu dvije majice.  + 
-Ovaj primjer ukazuje na potrebu provjere parametara koje unose korisnici i stanja sustavakako se sustav ne bi mogao iskoristiti na nepredviđen način. Sigurnosni alati za skeniranje i analizu ne mogu znati kontekst aplikacije, pa onda ni detektirati da je negativna vrijednost količine proizvoda ili broja artikala za narudžbu zapravo ranjivost. Što je sustav kompleksniji i sastoji se od više povezanih komponenti, veća je mogućnost pojavljivanja ovog tipa ranjivosti. +  
-Također za iskorištavanje ovakvih ranjivostičesto nisu potrebni nikakvi alati niti složene tehnike napada, nego se mogu jednostavno izvršiti kroz sama sučelja aplikacije.+Ako postoji provjera da ukupna cijena ne može biti negativna, ali ne postoji provjera da broj proizvoda ne može biti negativan, tada se može kupiti dvoje hlača i „minus dvije“ majice. Ako ova transakcija nije ispravno provjerena i sustav je odobri, dobivaju se naručene hlače, ali ne po punoj cijeni, nego po cijeni umanjenoj za cijenu dvije majice. 
 + 
 +  
 +Ovaj primjer ukazuje na potrebu provjere korisničkih ulaznih parametara i stanja sustava kako se sustav ne bi mogao iskoristiti na nepredviđen način. Sigurnosni alati za skeniranje i analizu ne mogu znati kontekst aplikacije, pa stoga ne mogu detektirati da je negativna vrijednost količine proizvoda ili broja artikala za narudžbu zapravo ranjivost. Što je sustav kompleksniji i sastoji se od više povezanih komponenti, to je veća mogućnost pojave ovog tipa ranjivosti. 
 + 
 + 
 +Takođerza iskorištavanje ovakvih ranjivosti često nisu potrebni nikakvi alati niti složene tehnike napada, nego se napadi mogu jednostavno izvršiti kroz sama sučelja aplikacije.
  
 ===PRIMJER - Zadatak s Hacknite platforme – Voće, povrće i flagovi=== ===PRIMJER - Zadatak s Hacknite platforme – Voće, povrće i flagovi===
Line 55: Line 61:
 ===Prevencija business logic ranjivosti=== ===Prevencija business logic ranjivosti===
  
-Business logic ranjivosti uvelike ovise o samom kontekstu aplikacije, zato je potrebno dobro razumijevanje logike sustava, njegovih funkcionalnosti i namjena pri razvoju i implementaciji sustavapogotovo kada više ljudi zajedno rade na razvoju. Kada jedna osoba radi na jednoj komponenti sustava koja je povezana s drugom komponentomkoju razvijaju drugi programeri, mora dobro razumjeti obje komponente i njihovu namjenu te predviđene funkcionalnosti. Zato je važno tijekom razvoja sustava imati dobro dokumentirane namjene i funkcionalnosti pojedinih komponenti. +Business logic ranjivosti uvelike ovise o kontekstu aplikacije, stoga je potrebno dobro razumijevanje logike sustava, njegovih funkcionalnosti i namjene pri razvoju i implementaciji, osobito kada više ljudi zajedno radi na sustavu. Kada jedna osoba radi na komponenti sustava koja je povezana s drugom komponentom koju razvijaju drugi programeri, mora dobro razumjeti obje komponente i njihovu namjenu te predviđene funkcionalnosti. Zato je važno tijekom razvoja sustava imati dobro dokumentirane namjene i funkcionalnosti pojedinih komponenti. 
-Dakle, tijekom razvoja, osim posvećivanja pažnje sigurnosti koda, treba voditi računa i o mogućim zlonamjernicima koji će pokušati koristiti sustav na nepredviđene načine. Treba primijeniti validacije korisničkog unosa provjere stanja sustava i njegovih vrijednosti, sa što strožim ograničenjima, kako ne bi bilo moguće koristiti sustav izvan predviđenih granica. Na primjer ako je očekivani korisnički unos e-mail adresa, mogu se koristiti već gotove implementacije koje provjeravaju da je uneseni e-mail validan da ne sadržava nikakve znakove niti određene redoslijede dopuštenih znakova koji se ne mogu koristiti u e-mail adresiAko je očekivani korisnički unos cijeli broj u rasponu od jedan do devettreba provjeriti da je korisnički unos cijeli jednoznamenkasti broj u rasponu od jedan do devetza ostale javiti pogrešku. Važno je voditi računa da ove provjere nije dovoljno implementirati samo na korisničkoj strani, npr. korištenjem client-side JavaScript koda, jer se zahtjevi mogu jednostavno modificirati prije slanja, a provjere na korisničkoj strani zaobići. Potrebne su provjere korisničkog unosa na serverskoj straniprilikom na samom korisničkom unosua poželjno na dubljim daljim dijelovima procesa obrade i posluživanja podataka.+ 
 + 
 +Dakle, tijekom razvoja, osim posvećivanja pažnje sigurnosti koda, treba voditi računa i o mogućim zlonamjernim korisnicima koji će pokušati koristiti sustav na nepredviđene načine. Treba primijeniti validaciju korisničkog unosa te provjere stanja sustava i njegovih vrijednosti uz precizno definirana ograničenja, kako ne bi bilo moguće koristiti sustav izvan predviđenih granica. 
 + 
 +Na primjerako je očekivani korisnički unos cijeli broj u rasponu od 1 do 9, treba osigurati da su samo te vrijednosti dopuštene, dok se ostali unosi odbacuju uz odgovarajuću grešku. 
 + 
 +Ako je očekivani korisnički unos nešto složeniji, primjerice IBAN, mogu se koristiti gotove implementacije koje provjeravaju je li unos u validnom formatu i ne sadrži nedopuštene znakove ili kombinacije znakova. 
 + 
 +Također, sama validacija korisničkog unosa nije dovoljnanego je potrebno i provjeriti relevantan kontekst stanja sustava te poslovna pravila koja određuju je li određena radnja dopuštena. Na primjerkorisnik može unijeti valjan iznos novca koji želi poslati, ali za izvršenje transakcije mora imati dovoljno sredstava na računu. 
 + 
 +Važno je imati na umu da ove provjere nije dovoljno implementirati samo na klijentskoj strani, npr. korištenjem client-side JavaScript koda, jer se zahtjevi mogu jednostavno modificirati prije slanja i zaobići provjere na klijentskoj strani. Potrebne su provjere korisničkog unosa na serverskoj strani prilikom unosa podatakakao u kasnijim fazama njihovog korištenja i obrade.
  
 Izvori:\\ Izvori:\\
business_logic.1745341975.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki