Stručne: Pentest alebo sken zraniteľností nie je otázka buď-alebo, ale otázka poradia. Sken zraniteľností automatizovane nájde známe zraniteľnosti a chybné konfigurácie, rýchlo a lacno, ale s falošnými poplachmi a slepými miestami. Penetračný test cielene preverí, čo by útočník skutočne mohol dosiahnuť. Program bug bounty otvára kontrolu externým výskumníkom a oplatí sa až vtedy, keď sú skeny a pentesty rutinou. Pre väčšinu MSP je poradie: pravidelne skenovať, odstrániť nálezy, cielene dať testovať, zriadiť miesto na hlásenie zraniteľností.
Prečo sa otázka po PHP2Shell kladie nanovo
Kto po PHP2Shell skontroluje svoj web online skenerom, môže dostať mätúce výsledky. Skener možno hlási kritickú zraniteľnosť, hoci poskytovateľ hostingu záplatu potvrdil. Iný nehlási nič, hoci server ešte používa starú verziu PHP, pretože údaj o verzii je skrytý.
Dôvod je v spôsobe práce. Mnohé skenery odvodzujú zraniteľnosť zo zobrazenej verzie. Distribúcie však nasadzujú backporty bez zmeny čísla verzie; podľa správ zobrazuje napríklad Ubuntu 24.04 po aktualizácii naďalej 8.3.6. Prečo to tak je, vysvetľuje článok Prečo php -v po aktualizácii ukazuje to isté číslo. Spoľahlivý doklad poskytuje changelog balíka, pozri Ako správne skontrolovať verziu PHP a stav záplat.
Nie je to argument proti skenerom, ale za to, aby sme poznali ich hranice a kombinovali ich s inými postupmi.
Pentest alebo sken zraniteľností: tri postupy v porovnaní
| Kritérium | Sken zraniteľností | Penetračný test | Bug bounty |
|---|---|---|---|
| Kto kontroluje? | Automatizovaný nástroj | Poverení odborníci | Externí výskumníci, často cez platformu |
| Čo sa nájde? | Známe zraniteľnosti, zastarané verzie, chybné konfigurácie | Zneužiteľné zraniteľnosti, logické chyby, reťazenia | Čo výskumníci nájdu a nahlásia, často nezvyčajné |
| Hĺbka | Široká, ale povrchná | Hlboká v dohodnutom rozsahu | Rôzna, závisí od účastníkov |
| Falošné poplachy | Časté | Zriedkavé, nálezy sa dokladajú | Veľa hlásení, ktoré treba posúdiť |
| Plánovateľnosť | Vysoká, ľubovoľne opakovateľné | Vysoká, pevné obdobie a rozsah | Nízka, hlásenia prichádzajú priebežne |
| Predpoklady vo firme | Niekto, kto výsledky posúdi | Dohodnutý rozsah, testovacie prostredie alebo servisné okno | Vyspelý proces posudzovania, odstraňovania a odmeňovania |
| Typické použitie | Priebežne, napríklad mesačne alebo po zmenách | Pred spustením, po väčších zmenách, pravidelne | Doplnkovo pri vyspelých, exponovaných aplikáciách |
Žiadny z postupov nenahrádza ostatné. Sken ukáže veľa za krátky čas, pentest ukáže, čo sa skutočne počíta, a bug bounty nájde to, na čo nikto nemyslel.
Pri skeneroch sa oplatí pozrieť aj na druhý druh skenu. Sken zvonka vidí iba to, čo vidí každý návštevník, a verzie musí často hádať z odpovedí servera. Autentifikovaný sken, pri ktorom nástroj s vlastnými prístupovými údajmi načíta nainštalované balíky na serveri, poskytuje výrazne spoľahlivejšie výsledky, najmä pri skutočnom stave balíka PHP. Predpokladá však, že na to zriadite obmedzený prístup a dobre ho ochránite. Pre závislosti vlastných aplikácií PHP existujú zasa vlastné kontrolné nástroje, napríklad composer audit pre balíky z Composeru.
Zmysluplné poradie pre MSP
- Inventár a sken: Najprv vedieť, aké weby a servery existujú, potom pravidelne skenovať. Nálezy neprebierať bez kontroly, ale posúdiť.
- Odstrániť základy: Zastaraný softvér, chýbajúce aktualizácie a zjavné chybné konfigurácie odstrániť. Zadať pentest na nezáplatované systémy je plytvanie rozpočtom.
- Cielený penetračný test: Pre najdôležitejšie aplikácie, napríklad obchod, zákaznícky portál alebo rozhrania, s jasne dohodnutým rozsahom a následným testom.
- Kontrola kódu pri vlastných vývojoch: Kto prevádzkuje vlastné aplikácie PHP, doplní test o prehliadku zdrojového kódu. Ako to prebieha, opisuje článok Bezpečnostný code review pre projekty PHP.
- Miesto na hlásenie zraniteľností: Smernica, ako môžu externí hlásiť zraniteľnosti, a súbor security.txt podľa RFC 9116 na
/.well-known/security.txts kontaktom a dátumom platnosti. - Bug bounty, keď základy sedia: Až keď sa hlásenia spoľahlivo posudzujú a zraniteľnosti rýchlo odstraňujú.
Aby z toho vznikol trvalý postup, oplatí sa pozrieť na Riadenie zraniteľností pre stredné firmy.
Čo nedokáže žiadny z postupov
Žiadny postup kontroly nedokazuje, že je systém bezpečný. Ukazuje iba to, čo sa v určitom čase určitými metódami našlo. Čistá správa z pentestu z jari nič nehovorí o zraniteľnosti, ako je PHP2Shell, ktorá sa stane známou v októbri.
Rovnako tak sken ani pentest neodpovedajú na otázku, či je server už kompromitovaný. Na to je potrebné hľadanie stôp na samotnom systéme: procesy, súbory, cron úlohy, účty, spojenia. To je osobitná úloha s vlastnými metódami.
Nechajte kontrolovať iba systémy, na ktoré máte oprávnenie, a pri hostovaných systémoch vopred vyjasnite pravidlá poskytovateľa. Penetračný test potrebuje písomné poverenie s rozsahom, obdobím a kontaktnými osobami.
Kedy externý test nepotrebujete
Pre jednoduchý firemný web bez formulárov s citlivými údajmi, u poskytovateľa hostingu, ktorý aktualizácie spoľahlivo nasadzuje, často stačí pravidelný sken s kritickým posúdením výsledkov. Penetračný test by tu bol väčšinou neprimeraný. Dôležitejšie sú aktuálny softvér, silné prístupy a zálohy.
Externý test sa oplatí pri obchodoch, portáloch, vlastných vývojoch, rozhraniach na interné systémy a všade tam, kde zákazníci alebo normy žiadajú nezávislý doklad.
Ako konkrétne pomáha PHP SOS?
- Nastavujeme pravidelné skeny a vyhodnocujeme výsledky vrátane falošných poplachov spôsobených backportmi.
- Pomáhame odstrániť základy skôr, než sa peniaze vložia do pentestu.
- Spolu so špecializovanými partnermi vykonávame bezpečnostné audity a penetračné testy s dohodnutým rozsahom a následným testom.
- Podporujeme vybudovanie miesta na hlásenie zraniteľností a súboru security.txt.
Záver
Sken, pentest a bug bounty sú stupne, nie konkurenti. Kto začne pravidelnými skenmi, odstráni základy a potom cielene dá testovať, získa za svoj rozpočet najviac bezpečnosti. Bug bounty je vrchol pre organizácie, ktorých povinnosti už sedia.
Časté otázky
Aký je rozdiel medzi pentestom a skenom zraniteľností?
Sken zraniteľností automatizovane kontroluje, či sú rozpoznateľné známe zraniteľnosti alebo chybné konfigurácie. Penetračný test ide ďalej: Odborníci sa v dohodnutom rámci pokúšajú zraniteľnosti skutočne zneužiť a reťaziť a posudzujú následky.
Zistí skener, či je môj server záplatovaný proti PHP2Shell?
Len obmedzene. Mnohé skenery čítajú zobrazenú verziu PHP. Ak distribúcia nasadí backport, číslo často zostane rovnaké a skener hlási zraniteľnosť, ktorá je dávno uzavretá. Naopak sa môže zobraziť nové číslo, kým ešte bežia staré procesy.
Je program bug bounty niečo pre malé firmy?
Väčšinou ešte nie. Bug bounty predpokladá, že sa hlásenia rýchlo posudzujú a zraniteľnosti rýchlo odstraňujú. Dobrým vstupom je jednoduchá smernica na hlásenie zraniteľností so súborom security.txt.
Smiem svoj web skontrolovať skenerom sám?
Vlastné systémy spravidla áno, ak na to máte oprávnenie. Ak web leží u poskytovateľa hostingu, vopred vyjasnite, či sú skeny povolené alebo sa majú ohlásiť. Cudzie systémy kontrolujte iba s písomným súhlasom prevádzkovateľa.
Ako často by sa mal konať pentest?
Pevné pravidlo neexistuje. Obvyklý je test pred spustením novej aplikácie, po väčších zmenách a v pravidelných odstupoch, ktoré určuje vaše riziko a prípadne požiadavky zákazníkov alebo noriem.