U računalnoj sigurnosti, exploit je dio softvera, komad podataka, ili niz naredbi koji iskorištavaju kvar ili ranjivost kako bi uzrokovalo nenamjeravano ili neočekivano ponašanje na računalnom softveru ili hardveru. Exploit često uključuje takve stvari tako da prilikom njihovog izvršavanja moguće je dobiti ovlasti informatičkog sustava koje nisu dodijeljene korisniku koji pokreće exploit ili dopuštajući eskalaciju privilegija ili uskraćivanje usluga.
Postoje nekoliko metode razvrstavanja exploita. Najčešći je pregled kako exploit napada ranjiv softver. "Daljinski exploit" (engl. Remote exploit) vrši napada preko mreže i iskorištava sigurnosni propust na udaljenom računalu na koji napadač nema pristup, te na taj način nam omogućuje da dobijemo pristup udaljenom računalu najčešće s administratorskim privilegijama. "Lokalni exploit" (engl. Local exploit ) zahtijeva prethodni pristup prema ranjivom sustavu, znači da mi imamo korisnički račun na računalu na kojem želimo proširit ovlasti i na taj način izvršavajući lokalni exploit obično proširujemo privilegije osobe koja izvrši lokalni exploit na privilegije sistem-administratora.
Druga klasifikacija je pregled djelovanja protiv ranjivog sustava: neovlašten pristup podacima, uskraćivanje usluge.
Mnogi exploiti su projektirani tako da mogu dati glavni administratorski pristup informatičkom sustava. Međutim, također je moguće koristiti takve exploite, tako da prvo dobijemo nisku razinu pristupa, zatim eskaliramo te privilegije ponovo tako da dobijemo administratorske privilegije.
Normalno jedan exploit može samo iskoristiti određenu osjetljivost softvera. Često, kada je exploit objavljen, ranjivost je pričvršćena kroz zakrpu i exploit tada zastari za novije verzije softvera. To je razlog zašto neki hakeri ne objave njihove exploite. Takvi exploiti su poznati kao "zero-day exploit" odnosno to su exploiti za koje još nema zakrpe i napadnuti sustavi se ne mogu obranit od takvih napada.
Exploiti mogu biti kategorizirani po načinu odnosno mehanizmu koji koriste pri iskorištavanju ranjivosti. Neki od najznačajnijih vrsta exploita (ponekad naslovljen kao "napadi") su:
- preljev spremnika ( engl. buffer overflow )
- SQL injekcija ( engl. SQL injection )
- XSS cross-site scripting
- preljev gomile ( engl. heap overflow )
- format string napad ( engl. format string attack )
- race condition
- preljev integera ( engl. integer overflow )
Na slici 1.1 i slici 1.2 prikazani su najčešći napadi koji se koriste gore navedenim tehnikama i koji su vrlo popularni zbog svoje jednostavnosti.
Slika 1.1. Propusti koji se najčešće iskorištavaju
Vidljivo je da je Cross Site Scripting i SQL injekcija najpopularniji napad i vrlo učinkovit.
Slika 1.2. Najčešći napadi na web-u