Lühidalt: Pentest või haavatavuste skannimine ei ole kas-või küsimus, vaid järjekorra küsimus. Haavatavuste skannimine leiab automaatselt tuntud turvauke ja valekonfiguratsioone, kiiresti ja soodsalt, kuid valehäirete ja pimedate laikudega. Läbistustest kontrollib sihipäraselt, mida ründaja tegelikult saavutada võiks. Bug Bounty programm avab kontrolli välistele teadlastele ja tasub end ära alles siis, kui skannimised ja pentestid on muutunud rutiiniks. Enamiku VKE-de jaoks on järjekord: skannida korrapäraselt, leiud kõrvaldada, lasta sihipäraselt testida, luua turvaaukudest teatamise kontaktpunkt.
Miks küsimus pärast PHP2Shelli uuesti tõstatub
Kes kontrollib pärast PHP2Shelli oma veebisaiti veebiskanneriga, võib saada segadusse ajavaid tulemusi. Skanner teatab võib-olla kriitilisest turvaaugust, kuigi majutaja on paiga kinnitanud. Teine ei teata midagi, kuigi server kasutab veel vana PHP versiooni, sest versiooniteave on peidetud.
Põhjus on töömeetodis. Paljud skannerid tuletavad haavatavuse kuvatavast versioonist. Distributsioonid paigaldavad aga tagasiportimisi (backport), muutmata versiooninumbrit; aruannete kohaselt näitab näiteks Ubuntu 24.04 pärast uuendust edasi 8.3.6. Miks see nii on, selgitab artikkel Miks php -v näitab pärast uuendust sama numbrit. Usaldusväärse tõendi annab paketi muudatuslogi, vt PHP versiooni ja paigaseisu õige kontroll.
See ei ole argument skannerite vastu, vaid nende poolt, kui tunda nende piire ja kombineerida neid teiste meetoditega.
Pentest või haavatavuste skannimine: kolm meetodit võrdluses
| Kriteerium | Haavatavuste skannimine | Läbistustest | Bug Bounty |
|---|---|---|---|
| Kes kontrollib? | Automatiseeritud tööriist | Tellitud spetsialistid | Välised teadlased, sageli platvormi kaudu |
| Mida leitakse? | Tuntud turvaaugud, vananenud versioonid, valekonfiguratsioonid | Ärakasutatavad nõrkused, loogikavead, ahelad | See, mida teadlased leiavad ja teatavad, sageli ebatavalist |
| Sügavus | Lai, kuid pealiskaudne | Sügav kokkulepitud ulatuses | Erinev, sõltub osalejatest |
| Valehäired | Sagedased | Harvad, leiud tõendatakse | Palju teateid, mida tuleb hinnata |
| Planeeritavus | Kõrge, suvaliselt korratav | Kõrge, kindel ajavahemik ja ulatus | Väike, teated tulevad pidevalt |
| Eeldused ettevõttes | Keegi, kes tulemusi hindab | Kokkulepitud ulatus, testkeskkond või hooldusaken | Küps protsess hindamiseks, kõrvaldamiseks ja tasustamiseks |
| Tüüpiline kasutus | Pidevalt, näiteks igakuiselt või pärast muudatusi | Enne käivitamist, pärast suuremaid muudatusi, korrapäraselt | Täiendavalt küpsete, avatud rakenduste puhul |
Ükski meetod ei asenda teisi. Skannimine näitab palju lühikese ajaga, pentest näitab, mis tegelikult loeb, ja Bug Bounty leiab selle, mille peale keegi ei mõelnud.
Skannerite puhul tasub lisaks teist pilku skannimise liigile. Väljastpoolt skannimine näeb ainult seda, mida näeb iga külastaja, ja peab versioone sageli serveri vastustest ära arvama. Autentitud skannimine, kus tööriist loeb oma sisselogimisandmetega serveris paigaldatud paketid välja, annab märksa usaldusväärsemaid tulemusi, eriti PHP tegeliku paketi seisu puhul. See eeldab aga, et seadistate selleks piiratud ligipääsu ja kaitsete seda hästi. Oma PHP rakenduste sõltuvuste jaoks on omakorda olemas eraldi kontrollvahendid, näiteks composer audit Composeri pakettide jaoks.
Mõistlik järjekord VKE-dele
- Inventar ja skannimine: Kõigepealt teada, millised veebisaidid ja serverid on olemas, seejärel skannida korrapäraselt. Leide mitte kontrollimata üle võtta, vaid hinnata.
- Kõrvaldada alused: Kõrvaldada vananenud tarkvara, puuduvad uuendused ja ilmsed valekonfiguratsioonid. Pentesti määramine paigatamata süsteemidele raiskab eelarvet.
- Sihipärane läbistustest: Olulisimate rakenduste jaoks, näiteks pood, klientide portaal või liidesed, selgelt kokkulepitud ulatuse ja kordustestiga.
- Koodi kontroll oma arenduste puhul: Kes käitab oma PHP rakendusi, täiendab testi lähtekoodi ülevaatega. Kuidas see kulgeb, kirjeldab artikkel Turvakoodi ülevaatus PHP projektidele.
- Turvaaukudest teatamise kontaktpunkt: Poliitika, kuidas välised saavad turvauke teatada, ja security.txt fail RFC 9116 järgi aadressil
/.well-known/security.txtkoos kontakti ja aegumiskuupäevaga. - Bug Bounty, kui alused on paigas: Alles siis, kui teateid hinnatakse usaldusväärselt ja turvauke kõrvaldatakse kiiresti.
Et sellest saaks püsiv kulg, tasub vaadata artiklit Haavatavuste haldus keskmise suurusega ettevõttes.
Mida ükski meetod ei suuda
Ükski kontrollimeetod ei tõenda, et süsteem on turvaline. See näitab ainult seda, mis leiti ühel ajahetkel teatud meetoditega. Puhas pentesti aruanne kevadest ei ütle midagi turvaaugu kohta nagu PHP2Shell, mis saab teada oktoobris.
Samuti ei vasta skannimine ega pentest küsimusele, kas server on juba kompromiteeritud. Selleks on vaja jälgede otsimist süsteemis endas: protsessid, failid, cron-tööd, kontod, ühendused. See on eraldi ülesanne omaenda meetoditega.
Laske kontrollida ainult süsteeme, mille jaoks teil on õigus, ja selgitage majutatud süsteemide puhul eelnevalt pakkuja reeglid. Läbistest vajab kirjalikku tellimust koos ulatuse, ajavahemiku ja kontaktisikutega.
Millal te välist testi ei vaja
Lihtsa ettevõtte veebisaidi jaoks ilma tundlike andmetega vormideta, majutaja juures, kes paigaldab uuendused usaldusväärselt, piisab sageli korrapärasest skannimisest ja tulemuste kriitilisest hindamisest. Läbistest oleks siin enamasti ebaproportsionaalne. Olulisemad on ajakohane tarkvara, tugevad ligipääsud ja varukoopiad.
Väline test tasub poodide, portaalide, oma arenduste, sisemiste süsteemide liideste puhul ja kõikjal, kus kliendid või normid nõuavad sõltumatut tõendit.
Kuidas PHP SOS konkreetselt aitab?
- Seadistame korrapärased skannimised ja hindame tulemusi, kaasa arvatud backportidest tulenevad valehäired.
- Aitame alused kõrvaldada, enne kui raha pentesti voolab.
- Teostame koos spetsialiseerunud partneritega turvaauditeid ja läbistustestid kokkulepitud ulatuse ja kordustestiga.
- Toetame turvaaukudest teatamise kontaktpunkti ja security.txt faili loomist.
Kokkuvõte
Skannimine, pentest ja Bug Bounty on astmed, mitte konkurendid. Kes alustab korrapärastest skannimistest, kõrvaldab alused ja laseb seejärel sihipäraselt testida, saab oma eelarve eest kõige rohkem turvalisust. Bug Bounty on sulgemisvõimalus organisatsioonidele, kelle kohustuslik osa on juba paigas.
Korduma kippuvad küsimused
Mis vahe on pentestil ja haavatavuste skannimisel?
Haavatavuste skannimine kontrollib automaatselt, kas tuntud turvaaugud või valekonfiguratsioonid on tuvastatavad. Läbistustest (penetration test) läheb kaugemale: spetsialistid üritavad kokkulepitud raamides turvauke tegelikult ära kasutada ja ühendada ning hindavad tagajärgi.
Kas skanner selgitab välja, kas mu server on PHP2Shelli vastu paigatud?
Ainult piiratult. Paljud skannerid loevad välja kuvatava PHP versiooni. Kui distributsioon paigaldab tagasiportimise (backport), jääb number sageli samaks ja skanner teatab turvaaugust, mis on ammu suletud. Vastupidi võib kuvada uus number, kuigi vanad protsessid veel töötavad.
Kas Bug Bounty programm on mõeldud väikeettevõtetele?
Enamasti veel mitte. Bug Bounty eeldab, et teateid hinnatakse kiiresti ja turvauke kõrvaldatakse kiiresti. Hea algus on lihtne turvaaukudest teatamise poliitika koos security.txt failiga.
Kas tohin oma veebisaiti ise skanneriga kontrollida?
Oma süsteeme üldjuhul jah, kui teil on selleks õigus. Kui veebisait asub majutaja juures, selgitage eelnevalt, kas skannimised on lubatud või tuleb neist ette teatada. Võõraid süsteeme kontrollite ainult käitaja kirjaliku loaga.
Kui sageli peaks pentesti tegema?
Kindlat reeglit ei ole. Tavaliselt tehakse test enne uue rakenduse käivitamist, pärast suuremaid muudatusi ja korrapärastel ajavahemikel, mille määravad teie risk ja vajaduse korral klientide või normide nõuded.