Jedno od prvih pitanja kod penetracijskog testiranja je koliko ono košta. Pošten odgovor je da ne postoji jedinstven cjenik. Penetracijski test nije proizvod s fiksnom cijenom, nego usluga čija cijena ovisi o tome koliko posla traži. Dvije ponude za naizgled istu uslugu mogu se razlikovati nekoliko puta, a razlika gotovo nikad nije popust ili pohlepa. Razlika je u sadržaju: koliko sustava se testira, koliko temeljito i koliko ručnog rada iskusnog testera ulazi u posao.
Za reguliranu hrvatsku tvrtku u financijama, zdravstvu, kritičnoj infrastrukturi ili SaaS-u ovo nije akademsko pitanje. Test naručujete jer to traži propis, ugovor s klijentom ili stvarna procjena rizika. Ako odaberete najjeftiniju ponudu bez razumijevanja što je u njoj, lako platite skeniranje umjesto testa i dobijete izvještaj koji vas neće zaštititi kad dođe pravi napadač. Cilj ovog teksta je objasniti odakle cijena dolazi, zašto se ponude toliko razlikuju i kako ih usporediti pošteno.
Ovo je dio našeg pregleda ofenzivne sigurnosti. Opseg i procjenu dogovaramo kroz ofenzivnu sigurnost.
Zašto ne postoji cjenik
Cjenik pretpostavlja standardni proizvod. Penetracijski test to nije. Svaki sustav ima drugačiji broj funkcija, drugačiju arhitekturu i drugačiju razinu složenosti. Test web aplikacije s tri korisničke uloge i pet ekrana nije isti posao kao test platforme s dvadeset uloga, vanjskim API-jem i integracijom u oblak. Ako bi netko za oboje naplatio isti iznos, jedno od to dvoje radi pogrešno.
Cijena testa je u biti cijena stručnog vremena.1 Iskusan tester ručno pregledava aplikaciju, traži propuste u logici i kontroli pristupa, potvrđuje ih i dokazuje njihov učinak. To vrijeme se mjeri u danima testera. Što više dana posao traži, to je skuplji. Zato pitanje nije koliko košta pentest, nego koliko dana posla zahtijeva vaš sustav i koliko je dnevni rad iskusnog testera vrijedan.
Posljedica je da ozbiljan dobavljač ne može dati cijenu prije nego razumije opseg. Ponuda koja stigne odmah, bez ijednog pitanja o tome što se testira, gotovo uvijek znači da je netko pretpostavio najmanji mogući posao. Kasnije se taj jaz između pretpostavke i stvarnosti naplaćuje vama, ili kroz dodatne stavke ili kroz površan test koji propušta važne propuste.
Reguliranim tvrtkama ovo dodatno otežavaju zahtjevi propisa. Test za potrebe DORA-e ili ISO/IEC 27001 mora pokriti određeni opseg i dati dokaz prikladan za nadzorno tijelo ili revizora. Cijena koja izgleda niska, ali ne pokriva taj opseg, na kraju vas ostavlja bez dokumenta koji vam zapravo treba, pa posao plaćate dvaput.
Glavni trošak je vrijeme testera
Da bi se cijena razumjela, treba razumjeti gdje odlazi vrijeme. Veći dio ozbiljnog testa nije pokretanje alata, nego ručni rad. Automatski skener pronalazi poznate i očite ranjivosti, ali ne razumije poslovnu logiku vaše aplikacije. Ne zna da određeni korisnik ne bi smio vidjeti tuđu narudžbu, niti da određeni redoslijed koraka zaobilazi naplatu. Te propuste nalazi čovjek koji razmišlja kao napadač.
Tester provede dane na izviđanju, mapiranju funkcija, ručnom testiranju kontrole pristupa, potvrđivanju nalaza i pisanju izvještaja koji objašnjava učinak i preporuke. Svaki od tih koraka troši vrijeme stručnjaka čije je znanje skupo i traženo. Zbog toga je broj dana testera najpošteniji način da se procijeni i usporedi cijena. Kad uspoređujete dvije ponude, zapravo uspoređujete koliko dana iskusnog rada svaka uključuje.
Što određuje broj dana
Broj dana nije proizvoljan. Određuje ga nekoliko mjerljivih obilježja sustava i dogovorenog pristupa. Razumijevanje tih pokretača omogućuje vam da provjerite je li procijenjeni opseg realan ili je netko prebrzo skratio posao da spusti cijenu.
- Opseg govori koliko je meta u testu: broj aplikacija, sustava, domena i okruženja. Više meta znači više posla.
- Broj korisničkih uloga izravno povećava posao jer se kontrola pristupa mora testirati za svaku ulogu i između uloga.
- Veličina API površine raste s brojem krajnjih točaka, jer svaku treba pojedinačno provjeriti na autorizaciju i logiku.2
- Složenost poslovne logike povećava ručni rad, jer netipični tijekovi i pravila traže više vremena za razumijevanje i napad.
- Perspektiva testa, crna, siva ili bijela kutija, mijenja koliko vremena ide na izviđanje, a koliko na samo testiranje.
Perspektiva zaslužuje pojašnjenje. Kod crne kutije tester nema unaprijed informacije pa troši dane na izviđanje i mapiranje. Kod sive kutije dobiva korisničke račune i osnovnu dokumentaciju, pa brže dolazi do dubljeg testiranja. Kod bijele kutije ima pristup kodu i arhitekturi, što daje najtemeljitiji uvid uz najučinkovitije korišteno vrijeme. Više o tome pišemo u tekstu o vrstama penetracijskog testiranja.
Pokretači cijene i njihov učinak
Sljedeća tablica sažima glavne pokretače i kako svaki djeluje na broj dana, a time i na cijenu. Koristite je kao podsjetnik kad čitate tuđu ponudu.
| Pokretač | Učinak na trošak |
|---|---|
| Opseg (broj meta) | Svaka dodatna aplikacija ili sustav dodaje dane testiranja. |
| Broj korisničkih uloga | Više uloga znači više kombinacija kontrole pristupa za provjeru. |
| Veličina API površine | Svaka krajnja točka traži zasebnu provjeru autorizacije i logike. |
| Složenost poslovne logike | Netipični tijekovi i pravila produžuju ručni rad. |
| Perspektiva (crna/siva/bijela) | Crna kutija dodaje dane izviđanja; bijela ih usmjerava na dubinu. |
| Ponovni test | Provjera ispravaka nakon popravaka dodaje vrijeme, ali daje sigurnost da su rupe zatvorene. |
Zašto je niska cijena obično skeniranje
Najčešći razlog velikih razlika u cijeni je sadržaj posla. Jeftina ponuda često znači pokretanje automatskog skenera ranjivosti i prepisivanje njegovog ispisa u izvještaj. To je brzo, traži malo dana i zato je jeftino. Problem je što skeniranje nalazi samo poznate i površinske ranjivosti, a propušta upravo one propuste koje napadači najviše koriste: greške u poslovnoj logici, slabu kontrolu pristupa i ranjivosti specifične za vašu aplikaciju.
To je razlika između procjene ranjivosti i pravog pentesta. Obje imaju svoje mjesto, ali nisu isto i ne smiju se naplaćivati kao da jesu. Kad vidite ponudu znatno jeftiniju od ostalih, prva pretpostavka treba biti da nudi skeniranje pod imenom penetracijskog testa, a ne da je netko otkrio način da isti posao odradi za pola cijene.
Skriveni troškovi i što provjeriti
Iznos u ponudi nije uvijek konačan trošak. Postoje stavke koje neki dobavljači izostave da ponuda izgleda jeftinije, a koje vam kasnije stvaraju dodatni trošak ili praznine. Prije potpisa provjerite svaku od njih, jer naknadni dogovor uvijek je skuplji od onog dogovorenog unaprijed.
- Je li ponovni test uključen. Nakon popravaka treba provjeriti jesu li rupe stvarno zatvorene. Ako ponovni test nije u cijeni, naplatit će se posebno.
- Je li izvještaj uključen i u kakvom obliku. Ozbiljan izvještaj s dokazom učinka i preporukama dio je posla, ne dodatak.
- Je li tu sažetak za upravu. Reguliranim tvrtkama često treba dokument prikladan za revizora ili nadzorno tijelo.
- Tko snosi trošak okruženja za testiranje i tko priprema pristupne podatke za sivu ili bijelu kutiju.
- Što se događa ako se opseg pokaže većim nego procijenjeno: kako se to naplaćuje i tko to potvrđuje.
Kako pošteno usporediti ponude
Da biste uspoređivali usporedive stvari, gledajte sadržaj prije iznosa. Sljedeći koraci pomažu da iz nekoliko ponuda izvučete koja zapravo nudi isti posao, a koja samo jeftiniji privid.
- 01Tražite jasan opseg u danimaPonuda mora navesti što se točno testira i, idealno, koliko dana testera predviđa.
- 02Pitajte o udjelu ručnog radaProvjerite testira li iskusan čovjek ili samo alat pokreće skener i prepisuje ispis.
- 03Tražite primjer izvještajaAnonimizirani uzorak pokazuje dubinu nalaza i način rada bolje od bilo kojeg opisa.
- 04Provjerite je li ponovni test uključenBez provjere ispravaka ne znate jesu li propusti stvarno zatvoreni.
- 05Provjerite je li dobavljač pitao o opseguTko nije pitao o broju uloga, API-ju i složenosti, nije procijenio posao.
Više o razlikovanju ozbiljnog partnera od pukog skeniranja s računom pišemo u tekstu kako odabrati partnera za pentest.
Ne uspoređujete cijenu testa, nego broj dana iskusnog rada koji svaka ponuda zapravo uključuje.
Raspon dana po veličini posla
Točan broj dana ovisi o vašem sustavu i nijedan raspon ne zamjenjuje procjenu opsega. Ipak, da dobijete osjećaj reda veličine, dijelimo grube okvire iz vlastitog iskustva. Ovo nije cjenik ni obvezujuća procjena, nego ilustracija kako veličina posla pomiče broj dana.
- Manja web aplikacija s nekoliko uloga, po našem iskustvu, obično traži nekoliko dana testera, a stvarna procjena ovisi o opsegu.
- Srednja aplikacija ili API srednje veličine, po našem iskustvu, traži oko jednog do dva tjedna rada, a stvarna procjena ovisi o opsegu.
- Veća platforma s mnogo uloga, opsežnim API-jem i složenom logikom, po našem iskustvu, traži više tjedana, a stvarna procjena ovisi o opsegu.
Namjerno ne navodimo fiksne iznose u eurima jer bi svaki broj bez poznatog opsega bio izmišljen. Dnevni rad iskusnog testera ima svoju vrijednost, a ukupna cijena je broj dana pomnožen s tom vrijednošću. Zato je realna procjena moguća tek nakon razgovora o tome što se točno testira.
Kako Raptoric pomaže
Dajemo jasnu procjenu temeljenu na stvarnom opsegu, objašnjavamo koliko dana posla predviđamo i što je uključeno, bez skrivenih stavki, kroz ofenzivnu sigurnost. Dogovorite uvodni razgovor i procjenu radimo nakon što zajedno definiramo opseg.
