Na kratko: Skener zlonamerne kode za spletne strani najde predvsem znane vzorce v datotekah ali v dostavljeni strani. Nova in zakrita koda, stranska vrata v zbirki podatkov, tuji računi, cronjobi in ključi SSH pogosto ostanejo nevidni. »Nič najdenega« zato ne pomeni »čisto«. Zanesljivo preverjanje nastane šele s kombinacijo skenerja, primerjave z originalom, preverjanja zbirke podatkov in sistema ter spremljanja obnašanja.
Varljivi mir po zeleni kljukici
Po PHP2Shell so številni upravljavci storili tisto, kar je najbližje: pognali skener. Spletna storitev preveri začetno stran, varnostni vtičnik preišče spletni imenik, rezultat je zelen. S tem je videti, da je vprašanje, ali se je pred popravkom kaj zgodilo, odgovorjeno.
Težava je v načelu. Večina skenerjev primerja vsebine z vzorci znane zlonamerne programske opreme. Za ranljivosti CVE-2026-109618 in CVE-2026-109619 pa ni objavljenih, potrjenih indikatorjev ogroženosti (Indicators of Compromise); prepoznavanje temelji na analizi obnašanja. Skener ne more iskati sledi, ki jih nihče ne pozna. V najboljšem primeru najde splošno zlonamerno programsko opremo, ki je bila po vdoru naknadno naložena, če sledi znanim vzorcem.
To skenerjev ne naredi vrednih nič. Pomeni samo, da je treba njihov rezultat pravilno umestiti. Kateri znaki poleg skenerjev štejejo, opisuje Ali sem že ogrožen?.
Skenerji zlonamerne kode za spletne strani: tri izvedbe
| Izvedba | Kaj vidi | Česa ne vidi |
|---|---|---|
| Zunanji skener (spletna storitev) | dostavljene strani, vključene skripte, preusmeritve, črne sezname | datotek, zbirke podatkov, računov, vsega, kar se dostavlja samo pod pogoji |
| Skener v CMS (vtičnik ali razširitev) | datoteke v spletnem imeniku, deloma vsebine zbirke podatkov, primerjavo z jedrnimi datotekami | sistemske ravni, cronjobov, SSH; teče v morda ogroženem sistemu |
| Skener na strežniku (na podlagi podpisov) | vse berljive datoteke, tudi zunaj spletnega imenika | neznanih in zakritih vzorcev, zbirke podatkov, računov, obnašanja |
Zunanji skenerji so uporabni za prepoznavanje vidnih posledic, na primer preusmeritev ali vnosov na črnih seznamih. Številni vdori pa svoje spam vsebine ali preusmeritve dostavljajo samo določenim obiskovalcem, na primer iskalnikom ali mobilnim napravam. Skener potem vidi čisto stran.
Skenerji v CMS imajo več vpogleda, a načelno težavo: tečejo v istem sistemu, ki naj bi ga preverjali. Koda z zadostnimi pravicami lahko vpliva na njihove rezultate, skriva datoteke ali skener deaktivira. Skenerji na strežniku delujejo zunaj aplikacije, vendar so še vedno odvisni od vzorcev.
Česa skenerji načelno spregledajo
Ne glede na izvedbo obstajajo področja, ki jih skener datotek ali strani komaj lahko pokrije:
- Nova ali individualno zakrita koda: vsaka različica, ki je videti drugače od znanih vzorcev, zdrsne skozi.
- Zbirka podatkov: skripti v vsebinah, spremenjene nastavitve, prožilci in tuji računi. Več o tem pod Preverjanje zbirke podatkov za vneseno kodo.
- Dostopi: dodatni skrbniški računi, ključi SSH, uporabniki zbirke podatkov, računi v nadzorni plošči gostovanja.
- Sistemske storitve in cronjobi: mehanizmi, ki redno naložijo škodljivo kodo.
- Neopazne spremembe legitimnih datotek: ena sama dodatna vrstica v jedrni datoteki, ki je videti nenevarna.
- Odtekli podatki: ali so bili dostopni podatki ali podatki strank kopirani, ne pokaže noben skener.
Kaj namesto tega prinese gotovost
Več varnosti prinese kombinacija preverjanj, ki delujejo različno:
- Primerjava z originalom: najde vsako spremembo znanih datotek, neodvisno od vzorcev. Postopek opisuje Primerjava jedrnih datotek CMS z originalom.
- Ciljno iskanje nepravilnosti: datoteke PHP v mapah za nalaganje, nedavno spremenjene datoteke, zakrita koda, izvršljive datoteke v začasnih mapah.
- Preverjanje računov in sistemskih storitev: uporabnike, ključe, cronjobe in storitve primerjajte z znanim ciljnim stanjem.
- Ovrednotenje dnevnikov: zahteve za neznane datoteke, kopičenje napak, nenavadne prijave.
- Spremljanje obnašanja: procesi spletnega strežnika, ki zaženejo lupino, nepričakovane odhodne povezave, nove datoteke v občutljivih mapah.
Zadnja kategorija je najpomembnejša, kadar znanih sledi ni. Ne sprašuje, kako je škodljiva koda videti, ampak kaj počne. Proces spletnega strežnika, ki nenadoma zažene lupino, izstopa, ne glede na to, kako je sprožilna koda zakrita.
Skener na strežniku naj teče s čistega sistema prek kopije, zaščitene pred pisanjem, ne na sumljivem strežniku samem. Tako vnesena koda ne more vplivati na rezultat.
Kako skenerje smiselno uporabiti
Skenerji imajo svoje mesto, kot eno orodje med več. Zunanji skener je primeren kot redna kontrola vidnih posledic, na primer tedensko. Skener v CMS v vsakdanu javlja znano zlonamerno programsko opremo in spremenjene jedrne datoteke. Skener na strežniku dopolni iskanje znanih vzorcev po celotnem datotečnem sistemu.
Odločilno je ravnanje z rezultatom. Najdba je jasen nalog za pregled in upravičuje popolno preiskavo, ker je redko prizadeta le ena datoteka. Prazen rezultat pa je samo izjava o preverjenih vzorcih. V dokumentaciji zabeležite, kateri skener je tekel kdaj in s kakšnim stanjem, in ne pišite »sistem čist«, ampak »znanih vzorcev ni bilo najdenih«.
Za vodstvo to pomeni: zelena kljukica ne nadomešča pregleda nekoga, ki skupaj obravnava datoteke, zbirko podatkov, račune in obnašanje. Po incidentu z morebitnim izvajanjem kode, kot je pri PHP2Shell mogoče, bi bilo treba tak pregled opraviti.
Če skener najdbo javi, je potrebno hitro, a urejeno ravnanje. Prijavljene datoteke ne brišite takoj s funkcijo skenerja. Najprej zavarujte datoteko in dnevnike, da bo mogoče pojasniti, kako je prišla na strežnik. Kako poteka popolno čiščenje, opisuje storitev Odstranitev zlonamerne kode in webshellov.
Kako PHP SOS pomaga konkretno?
- Skenerje kombiniramo s primerjavo z originalom, ciljnim iskanjem in ovrednotenjem računov, storitev in dnevnikov.
- Sumljive sisteme preverjamo prek zavarovanih kopij, da kompromitirani sistem ne vpliva na rezultate.
- Vsak rezultat pošteno označimo kot dokazan, verjeten ali neznan.
- Z varnostnim nadzorom za spletne strežnike trajno spremljamo obnašanje vaših strežnikov, ne samo znanih vzorcev.
Pogosta vprašanja
Ali je moja spletna stran čista, če skener zlonamerne kode ne najde ničesar?
Ne nujno. Skenerji najdejo predvsem znane vzorce. Nova ali dobro zakrita koda, stranska vrata v zbirki podatkov, tuji računi, cronjobi in ključi SSH pogosto ostanejo neodkriti. Prazen rezultat je gradnik, ne oprostitev.
Kakšna je razlika med zunanjim skenerjem in skenerjem v vtičniku?
Zunanji skener kliče spletno stran od zunaj in vidi samo to, kar se dostavlja. Skener v vtičniku teče znotraj CMS in lahko bere datoteke, vendar teče v istem sistemu, ki je morda ogrožen. Oba imata lastni slepi pegi.
Ali obstajajo podpisi skenerjev za PHP2Shell?
Za PHP2Shell ni objavljenih, potrjenih indikatorjev ogroženosti (Indicators of Compromise). Skenerji zato ne morejo ciljno iskati zanesljivih sledi PHP2Shell. Prepoznavanje temelji na analizi obnašanja in na iskanju splošnih znakov ogroženosti.
Kateri skener je najboljši?
Vprašanje zavaja. Pomembnejša od posameznega izdelka je kombinacija različnih vrst preverjanj: primerjava z originalom, iskanje v datotekah in zbirki podatkov, preverjanje računov in sistemskih storitev ter spremljanje obnašanja.