Na kratko: Penetracijski test za vašo aplikacijo PHP pokaže, katere šibke točke bi napadalec dejansko lahko izkoristil, preden to stori kdo drug. Skupaj s specializiranimi partnerji preverimo aplikacijo in strežnik v pisno dogovorjenem obsegu ter dostavimo poročilo s prednostnimi ukrepi. Po odpravi v ponovnem testu preverimo, ali so ranljivosti zaprte.
Zakaj je penetracijski test za aplikacije PHP smiseln
PHP2Shell je pokazal, da lahko celo temelj aplikacije, torej sam PHP, vsebuje kritično ranljivost. Večina vdorov v aplikacije PHP pa poteka prek znanih šibkosti v lastni kodi ali konfiguraciji: SQL injection, cross-site scripting, nevarna nalaganja datotek, šibke seje, zastarele odvisnosti ali odprta skrbniška območja. OWASP Top 10 te kategorije povzema.
Neodvisen pogled od zunaj najde, kar se v vsakdanu spregleda. Za vodstvo in nadzor je to zanesljiva podlaga za oceno tveganj in ciljno porabo proračuna. Za razvijalce je to konkreten delovni seznam.
Pregled ali penetracijski test: kaj ustreza vam?
| Oblika | Kaj se preverja | Primerno, ko |
|---|---|---|
| Pregled konfiguracije | strežnik, PHP, spletni strežnik, dostopi, varnostne kopije | želite poznati stanje infrastrukture |
| Pregled kode | izvorna koda aplikacije z vpogledom | obstajajo lastni razvoji ali večje prilagoditve |
| Penetracijski test black-box | aplikacija od zunaj brez predznanja | želite videti pogled zunanjega napadalca |
| Penetracijski test grey-box/white-box | aplikacija s testnimi računi ali kodo | želite v omejenem času najti čim več |
Pogosto je smiselna kombinacija, na primer pregled konfiguracije strežnika skupaj s testom grey-box aplikacije. Čisti test black-box deluje realistično, a porabi veliko časa za raziskovanje. S testnimi računi in vpogledom v zgradbo preizkuševalci v istem času praviloma najdejo več šibkih točk.
Poleg aplikacije se splača pogledati okolje: katera različica PHP teče, ali so skrbniški vmesniki javno dosegljivi, ali varnostne kopije ležijo v spletni mapi, ali so odvisnosti aktualne? Takšne točke pri pregledu preverimo tudi, ker v praksi pogosto tehtajo več kot posamezna napaka v kodi.
Kdaj je pravi čas za test?
Penetracijski test največ prinese, ko poteka v smiselni točki življenjskega cikla aplikacije. Tipični razlogi so:
- pred zagonom nove aplikacije, trgovine ali portala za stranke
- po večjih spremembah, na primer novih plačilnih poteh, vmesnikih ali postopkih prijave
- po incidentu, ko sta čiščenje in utrjevanje zaključena in želite neodvisno kontrolo
- v rednih presledkih, če to zahtevajo stranke, partnerji ali vaše upravljanje tveganj
Malo smiseln je test, dokler so znane ranljivosti odprte. Kdor še upravlja nepopravljene različice PHP, naj najprej vzpostavi osnovno stanje. Sicer plačate test za potrditev znanega.
Kako konkretno pomaga PHP SOS?
- Določiti obseg: z vami razjasnimo, katere aplikacije, strežniki in funkcije se preverjajo, katera vrsta testa ustreza in kaj je izrecno izključeno. Rezultat je pisno naročilo s časovnim oknom in kontaktnimi osebami.
- Pripraviti: zagotovijo se testni računi, dostopi do testnega okolja in aktualna varnostna kopija. Vaš ponudnik gostovanja se po potrebi obvesti, da test ni blokiran kot pravi napad.
- Preveriti: naši specializirani partnerji testirajo po priznanih metodah, med drugim po kategorijah OWASP. Kritične najdbe javimo takoj, ne šele v zaključnem poročilu.
- Poročati: prejmete poročilo z povzetkom za vodstvo in tehničnim delom.
- Ponovni test: po odpravi šibke točke znova preverimo in potrdimo, kaj je zaprto.
Številnim najdbam se je mogoče izogniti že vnaprej. Priročniki o SQL injection v PHP, varnih nalaganjih datotek in sejah v PHP razvijalcem pomagajo pri pripravi.
Kaj dobite in kaj potrebujemo
Poročilo vsebuje vsako najdeno šibko točko z opisom, prizadetim mestom, oceno tveganja in konkretnim priporočilom za odpravo. Povzetek za vodstvo rezultate uvrsti brez strokovnega žargona. Po ponovnem testu prejmete potrditev, katere točke so odpravljene. Orodja za napad ali izvedljivi exploiti niso del poročila.
Od vas potrebujemo:
- pisno dovoljenje upravičene osebe za vsak sistem, ki ga je treba testirati, tudi če leži pri ponudniku gostovanja
- testne račune z vlogami, ki se preverjajo
- testno okolje ali dovoljenje za testiranje v živem okolju v časovnem oknu
- tehnično kontaktno osebo med testom
- pri pregledu kode: dostop do repozitorija
Česa ne obljubljamo
Penetracijski test ne najde vsake ranljivosti. Je posnetek stanja v dogovorjenem obsegu; nove funkcije ali nove ranljivosti v odvisnostih lahko jutri pokažejo drugačno sliko. Ne navajamo certifikatov ali pečatov, ki jih nimamo, in ne izdajamo potrdil, ki bi nadomestila pravne obveznosti. Ali test izpolnjuje vaše obveznosti, na primer po NIS2, razjasnite s svojimi strokovnjaki za pravo in skladnost.
Odpravo najdb na željo prevzamemo sami ali skupaj z vašo agencijo. Za strežnik in konfiguracijo PHP je primerno utrjevanje strežnika.
Pogosta vprašanja
Kakšna je razlika med varnostnim pregledom in penetracijskim testom?
Pregled preveri konfiguracijo, procese in kodo glede na zahteve in izkušnje, pogosto z vpogledom v sisteme. Penetracijski test ciljno in z vašim dovoljenjem poskuša izkoristiti šibke točke, da pokaže njihov dejanski učinek. Eno drugo dopolnjuje.
Ali je penetracijski test za mojo aplikacijo PHP nevaren?
Test lahko obremeni sisteme ali spremeni podatke. Zato se obseg, časovno okno in meje vnaprej pisno določijo, kjer je mogoče, pa priporočamo uporabo testnega okolja. Aktualna varnostna kopija sodi zraven vedno.
Ali penetracijski test najde vse varnostne ranljivosti?
Ne. Test pokaže šibke točke, ki so bile najdene v dogovorjenem obsegu in obdobju. Je posnetek stanja in zmanjša tveganje, ne dokazuje pa, da ni drugih ranljivosti.
Ali penetracijski test pomaga pri NIS2?
Redni pregledi varnostnih ukrepov so običajen gradnik za izpolnjevanje obveznosti upravljanja tveganj. Katere zahteve konkretno veljajo za vaše podjetje, razjasnite s strokovnjaki za pravo in skladnost.