Pe scurt: Un scanner de malware pentru site-uri găsește mai ales tipare cunoscute în fișiere sau în pagina livrată. Codul nou și ofuscat, ușile dosnice din baza de date, conturile străine, cronjoburile și cheile SSH rămân adesea invizibile. „Nimic găsit” nu înseamnă de aceea „curat”. O verificare devine fiabilă abia prin combinația dintre scanner, comparația cu originalul, verificarea bazei de date și a sistemului și supravegherea comportamentului.
Liniștea înșelătoare de după bifa verde
După PHP2Shell, mulți operatori au făcut ce era la îndemână: au rulat un scanner. Un serviciu online verifică pagina de start, un plugin de securitate parcurge directorul web, rezultatul este verde. Astfel pare să fie răspuns la întrebarea dacă s-a întâmplat ceva înainte de patch.
Problema stă în principiu. Majoritatea scannerelor compară conținutul cu tipare de software malițios cunoscut. Pentru vulnerabilitățile CVE-2026-109618 și CVE-2026-109619 nu există însă Indicators of Compromise publicați și confirmați; detectarea se bazează pe analiza comportamentului. Un scanner nu poate căuta urme pe care nu le cunoaște nimeni. În cel mai bun caz, găsește software malițios general, încărcat după o intruziune, dacă urmează tipare cunoscute.
Asta nu face scannerele inutile. Înseamnă doar că rezultatul lor trebuie încadrat corect. Ce semne contează dincolo de scannere descrie Am fost deja compromis?.
Scannere de malware pentru site-uri: trei tipuri constructive
| Tip | Ce vede | Ce nu vede |
|---|---|---|
| Scanner extern (serviciu online) | pagini livrate, scripturi incluse, redirecționări, liste de blocare | fișiere, baza de date, conturi, tot ce este livrat doar în anumite condiții |
| Scanner în CMS (plugin sau extensie) | fișiere din directorul web, uneori conținut din baza de date, comparație cu fișierele de bază | nivelul de sistem, cronjoburi, SSH; rulează în sistemul posibil compromis |
| Scanner pe server (pe bază de semnături) | toate fișierele care pot fi citite, inclusiv din afara directorului web | tipare necunoscute și ofuscate, baza de date, conturi, comportament |
Scannerele externe sunt utile pentru a recunoaște consecințele vizibile, de exemplu redirecționările sau intrările în listele de blocare. Multe atacuri livrează însă conținutul de spam sau de redirecționare doar unor anumiți vizitatori, de exemplu motoarelor de căutare sau dispozitivelor mobile. Scannerul vede atunci o pagină curată.
Scannerele din CMS au mai multă vizibilitate, dar o problemă de principiu: rulează în același sistem pe care ar trebui să îl verifice. Codul cu drepturi suficiente le poate influența rezultatele, poate ascunde fișiere sau dezactiva scannerul. Scannerele de server lucrează în afara aplicației, dar rămân dependente de tipare.
Ce ratează scannerele în principiu
Indiferent de tip, există zone pe care un scanner de fișiere sau de pagini le poate acoperi cu greu:
- Cod nou sau ofuscat individual: Orice variantă care arată altfel decât tiparele cunoscute trece neobservată.
- Baza de date: scripturi în conținut, setări modificate, trigger-e și conturi străine. Mai multe în Verificarea bazei de date pentru cod introdus.
- Accesurile: conturi de administrator suplimentare, chei SSH, utilizatori ai bazei de date, conturi din panoul de hosting.
- Serviciile de sistem și cronjoburile: mecanisme care reîncarcă periodic cod malițios.
- Modificări discrete ale fișierelor legitime: un singur rând suplimentar într-un fișier de bază, care pare inofensiv.
- Date scurse: dacă datele de acces sau datele clienților au fost copiate nu arată niciun scanner.
Ce aduce, în schimb, certitudine
Mai multă siguranță aduce combinația unor tipuri de verificare care lucrează diferit:
- Comparația cu originalul: Găsește orice modificare a fișierelor cunoscute, independent de tipare. Procedura o descrie Compararea fișierelor de bază ale CMS-ului cu originalul.
- Căutare țintită după anomalii: fișiere PHP în dosarele de upload, fișiere modificate recent, cod ofuscat, fișiere executabile în dosare temporare.
- Verificarea conturilor și a serviciilor de sistem: compararea utilizatorilor, cheilor, cronjoburilor și serviciilor cu starea cunoscută corectă.
- Evaluarea jurnalelor: cereri către fișiere necunoscute, acumulări de erori, autentificări neobișnuite.
- Supravegherea comportamentului: procese ale serverului web care pornesc un shell, conexiuni de ieșire neașteptate, fișiere noi în dosare sensibile.
Ultima categorie este cea mai importantă atunci când nu există urme cunoscute. Ea nu întreabă cum arată codul malițios, ci ce face. Un proces al serverului web care pornește brusc un shell iese în evidență, oricât de ofuscat ar fi codul declanșator.
Rulați un scanner de server dintr-un sistem curat, pe o copie protejată la scriere, nu pe serverul suspect însuși. Astfel, codul introdus nu poate influența rezultatul.
Cum folosiți scannerele cu folos
Scannerele își au locul, ca o unealtă printre mai multe. Un scanner extern se potrivește ca verificare regulată a consecințelor vizibile, de exemplu săptămânal. Un scanner din CMS raportează în activitatea zilnică software malițios cunoscut și fișiere de bază modificate. Un scanner de server completează căutarea tiparelor cunoscute în întregul sistem de fișiere.
Decisiv este modul de tratare a rezultatului. O descoperire este o sarcină clară de verificare și justifică o investigație completă, pentru că rareori este afectat un singur fișier. Un rezultat gol este, în schimb, doar o afirmație despre tiparele verificate. Consemnați în documentație ce scanner a rulat când și cu ce stare și nu scrieți „sistem curat”, ci „nu s-au găsit tipare cunoscute”.
Pentru conducere, aceasta înseamnă: o bifă verde nu înlocuiește verificarea făcută de cineva care privește împreună fișierele, baza de date, conturile și comportamentul. După un incident cu posibilă execuție de cod, așa cum este imaginabil la PHP2Shell, această verificare ar trebui să aibă loc.
Dacă un scanner raportează, în schimb, o descoperire, este nevoie de o acțiune rapidă, dar ordonată. Nu ștergeți imediat fișierul raportat prin funcția scannerului. Salvați mai întâi fișierul și jurnalele, pentru a se putea clarifica cum a ajuns pe server. Cum decurge o curățare completă descrie serviciul Eliminarea malware-ului și a webshell-urilor.
Cum ajută PHP SOS concret?
- Combinăm scannerele cu comparația față de original, căutarea țintită și evaluarea conturilor, serviciilor și jurnalelor.
- Verificăm sistemele suspecte pe copii securizate, pentru ca rezultatele să nu fie influențate de sistemul compromis.
- Marcăm sincer fiecare rezultat ca dovedit, probabil sau necunoscut.
- Prin monitorizarea de securitate pentru servere web supraveghem permanent comportamentul serverelor dumneavoastră, nu doar tiparele cunoscute.
Întrebări frecvente
Este site-ul meu curat dacă scannerul de malware nu găsește nimic?
Nu neapărat. Scannerele găsesc mai ales tipare cunoscute. Codul nou sau bine ofuscat, ușile dosnice din baza de date, conturile străine, cronjoburile și cheile SSH rămân adesea nedescoperite. Un rezultat gol este un element, nu o achitare.
Care este diferența dintre un scanner extern și un scanner de plugin?
Un scanner extern accesează site-ul din exterior și vede doar ce este livrat. Un scanner de plugin rulează în interiorul CMS-ului și poate citi fișiere, dar rulează în același sistem, care poate fi compromis. Amândouă au puncte orbe proprii.
Există semnături de scanner pentru PHP2Shell?
Pentru PHP2Shell nu există Indicators of Compromise publicați și confirmați. Scannerele nu pot deci căuta țintit urme PHP2Shell sigure. Detectarea se bazează pe analiza comportamentului și pe căutarea semnelor generale de compromitere.
Care este cel mai bun scanner?
Întrebarea induce în eroare. Mai important decât un anumit produs este combinația dintre diferite tipuri de verificare: comparația cu originalul, căutarea în fișiere și în baza de date, verificarea conturilor și a serviciilor de sistem, precum și supravegherea comportamentului.