TEHNOLOGIE
PHP2Shell și Node2Shell — de ce alerta cyber din octombrie e despre limbajul a 70% din web și ce mai au de verificat instituțiile din România
Alerta cyber din 28 octombrie nu a fost un val de știri fără obiect, ci coada celei mai mari crize de securitate a webului din acest an: PHP2Shell, urmată în aceeași săptămână de Node2Shell, un defect de același tip în Node.js.
Miza pentru România este concretă. PHP stă sub site-urile primăriilor, școlilor, spitalelor și ale magazinelor online, iar multe dintre ele sunt întreținute rar. Directoratul Național de Securitate Cibernetică (DNSC) a notificat 17.416 entități din sectorul public. Analiza explică ce s-a întâmplat, de ce un patch nu este suficient, cum se leagă Node2Shell de PHP2Shell și ce urmează.
Verigile 1–4 sunt documentate de Fundația PHP, de CISA și de firmele care au găsit și au observat atacurile. Veriga 5 este documentată de proiectul Node.js și de cercetătorii Imperva. Veriga 6 este documentată de DNSC și de instituțiile care au răspuns presei. Veriga 7 este concluzia noastră: niciun comunicat public din România nu spune încă câte servere au fost verificate pentru uși ascunse, nu doar actualizate.
1. Ce este PHP2Shell
PHP2Shell este numele comun a două vulnerabilități din PHP, CVE-2026-109618 și CVE-2026-109619, fiecare evaluată la 9,2 din 10 pe scala CVSS 4.0. Ambele țin de felul în care PHP tratează erorile fatale, cum ar fi lipsa de memorie: prima corupe memoria, a doua refolosește o stare internă rămasă de la o cerere anterioară. Rezultatul, în ambele cazuri, este execuția de cod la distanță fără autentificare.
Defectul este în limbaj, nu într-o aplicație. De aceea nu contează dacă site-ul este un blog pe WordPress, un portal pe Drupal sau o aplicație scrisă de mână: dacă serverul rulează o versiune afectată, poate fi atacat. Sunt afectate versiunile de la PHP 5.4 încoace, adică peste un deceniu de lansări. Reparațiile au venit pe 21 octombrie, în PHP 8.5.12, 8.4.27, 8.3.36 și 8.2.35. Pentru PHP 8.1 și versiunile mai vechi, proiectul nu a publicat corecturi.
Numele spune ce obține atacatorul: un shell, adică o linie de comandă pe serverul victimei. De acolo poate citi baza de date, fișierele de configurare cu parole și chei, poate modifica site-ul sau poate lăsa un webshell, un mic fișier PHP prin care revine oricând. Aici este partea pe care o actualizare nu o rezolvă: patch-ul închide intrarea, dar nu șterge ce a fost lăsat înăuntru.
2. Cum s-a desfășurat, zi cu zi
Cele două defecte au fost găsite independent cu ajutorul modelelor de inteligență artificială: firma Calif, lucrând cu OpenAI, a raportat primul defect pe 11 august, iar Wiz, deținută de Google, l-a raportat pe al doilea pe 24 august. Defectele erau în cod din 2012. Raportarea a rămas sub embargo până la reparație, dar embargoul nu a ținut.
- 17 octombrie. Echipa de securitate Amazon detectează o încercare de exploatare în capcanele ei, cu patru zile înainte de publicarea defectelor.
- 20–21 octombrie. Detaliile apar online, iar echipa PHP anunță și apoi publică reparațiile de urgență. CISA cere actualizare imediată și, pentru cine nu poate, scoaterea sistemelor de pe internet.
- 21–22 octombrie. Cloudflare raportează mii de încercări în cele 10 ore dinaintea anunțului, zeci de mii în primele 45 de minute după el și milioane până a doua zi. Guverne din Germania, Franța, Belgia, Finlanda, Țările de Jos și Japonia își opresc preventiv site-uri. În Regatul Unit, 32 de servicii guvernamentale devin indisponibile și 4 parțial indisponibile.
- 23 octombrie. Încercările de a instala o variantă a botnetului Mirai eșuează. Fundația PHP anunță un al treilea defect, CVE-2026-115560, considerat improbabil în practică, care poate fi blocat printr-o setare de configurare. Mandiant spune că a validat exploituri funcționale împotriva configurației implicite mod_php, dar nu împotriva PHP-FPM.
- 24 octombrie. Primele exploatări reușite pe servere-capcană: 35 de shell-uri lansate de la două adrese IP.
- 23–25 octombrie. O grupare legată de China caută 19.000 de firewall-uri expuse ale unui furnizor, alege 240 de ținte și obține acces de administrator pe 25 dintre ele, combinând PHP2Shell cu un defect al nucleului Linux, iar pe 24 dintre ele lasă un webshell PHP pentru acces permanent. Pe două servere ale unei rețele afiliate guvernului american, atacatorii merg mai departe, până la parolele din Active Directory. Separat, o instituție guvernamentală din Europa este atacată, iar în două ore atacatorii ajung la hash-urile parolelor.
- 26 octombrie. CISA trece cele două defecte în catalogul vulnerabilităților exploatate activ și dă agențiilor federale termen până la 29 octombrie.
- 27 octombrie. Censys numără 32,5 milioane de servicii PHP expuse pe internet care rulează încă versiuni posibil vulnerabile, plus peste 60 de milioane care nu își declară versiunea.
Cifra din alerta noastră, 11 articole în 24 de ore, venea dintr-un contor care numără doar titlurile cu „critical”, „zero-day” sau „ransomware”. El a prins coada valului, nu valul: pe 21 octombrie au intrat în baza olivLaw 114 articole de securitate cibernetică, iar contorul a arătat 14.
3. România: 17.416 instituții notificate
DNSC a publicat alerta pe 21 octombrie și, potrivit datelor transmise News.ro, a notificat 17.416 entități publice: aproape toate instituțiile civile din aria sa, de la grădinițe, școli și universități la spitale, primării, consilii județene, regii și companii de stat. Riscul descris de DNSC este cel tehnic: execuție de cod fără autentificare, acces la baze de date, furt de date și compromiterea conturilor.
Reacțiile au fost inegale. Secretariatul General al Guvernului spune că a aplicat măsurile pe platformele proprii și că serverul gov.ro rulează deja o versiune corectată, iar pe celelalte site-uri actualizarea era încă în curs la începutul săptămânii, cu măsuri temporare. Site-urile Poliției Române și ale inspectoratelor județene au stat închise la sfârșitul săptămânii trecute „pentru mentenanță și actualizări de securitate”, iar Primăria Tulcea și-a oprit site-ul preventiv. Direcția de Sănătate Publică Timiș spune că a aplicat măsurile în aceeași zi.
Ce lipsește din toate aceste răspunsuri este a doua jumătate a lucrului. Între 17 octombrie, când au început încercările, și ziua în care fiecare server a fost actualizat, au trecut zile. CISA recomandă explicit urmărirea proceselor PHP care pornesc shell-uri sau descarcă unelte, iar centrul britanic de securitate cibernetică a cerut verificarea „ușilor ascunse instalate de un atacator”. Nicio instituție din România nu a spus public că a făcut această verificare.
Contextul local agravează riscul. Multe site-uri publice sunt făcute de firme mici și stau pe găzduire partajată, unde versiunea PHP o alege furnizorul, iar cele care rulează încă PHP 8.1 sau mai vechi nu au reparație oficială. Pentru ele, singura cale este migrarea la o versiune întreținută sau o corectură de la furnizorul sistemului de operare, iar până atunci site-ul ar trebui oprit, cum a recomandat CISA.
4. Node2Shell: nu este doar PHP
Pe 21 octombrie, aceeași zi cu reparațiile PHP, proiectul Node.js a publicat actualizări pentru liniile 22, 24 și 26. Cea mai gravă problemă, CVE-2026-111497, este în decodorul Brotli, formatul de compresie al Google folosit pe tot webul. Date comprimate construite special pot scrie în afara memoriei rezervate și pot duce la execuție de cod. Cercetătorii Imperva au numit atacul Node2Shell și au rulat cod pe o versiune nemodificată de Node.js 24.22.0.
Defectul nu este al lui Node.js, ci al bibliotecii Brotli, pe care o poartă cu ea fiecare program. De aceea sunt afectate și Bun, pachetele Python Brotli și brotlicffi, proxy-urile Envoy și Istio cu decompresia activată, .NET, PowerShell și chiar versiunile PHP pentru Windows, prin extensia cURL. Reparația exista în codul Brotli din februarie, dar nu a ajuns într-o lansare până pe 21 octombrie.
Riscul este mai îngust decât la PHP2Shell: un program este expus doar dacă despachetează date Brotli controlate de altcineva, de exemplu când fetch() citește un răspuns comprimat sau când Express 5 despachetează corpul unei cereri. Pe 27 octombrie, CISA a confirmat că defectul este exploatat, iar două rețele de capcane au înregistrat încercări, dintre care una cu un exploit defect. Până acum nu a fost raportat public niciun caz confirmat de compromitere reușită.
5. De ce contează mai mult decât o vulnerabilitate obișnuită
Trei lucruri fac din PHP2Shell un caz aparte. Primul este întinderea: aproximativ 70% din site-urile al căror limbaj de server este cunoscut folosesc PHP, iar PHP este ascuns și în echipamente de rețea, panouri de găzduire și produse industriale, unde clientul nu poate face singur actualizarea. Lista furnizorilor care au publicat avertismente cuprinde Siemens, Schneider Electric, Rockwell Automation, Hitachi Energy, Moxa și alți furnizori de echipamente pentru energie și industrie.
Al doilea este viteza. Exploatarea a început înaintea reparației, iar ritmul de remediere rămâne lent: mediana de reparare a unei vulnerabilități exploatate activ este de 43 de zile, potrivit raportului Verizon DBIR 2026. Al treilea este inteligența artificială, de ambele părți: modelele au găsit defectele, iar atacatorii au folosit platforme de agenți AI după exploatare, ceea ce scurtează timpul de la intrare la furtul de parole la ore.
Contra-ipoteza merită spusă. Exploatarea este mai grea decât sugera panica din prima zi: multe exploituri publice au fost scrise în grabă și nu funcționează, iar cele validate merg pe configurația mod_php, nu pe PHP-FPM, folosită frecvent pe serverele noi. Este posibil ca valul să rămână, în mare, de încercări eșuate. Dar pentru o instituție care a rulat o versiune veche pe mod_php, „mai greu” nu înseamnă „imposibil”, iar un singur webshell este suficient.
6. Ce ar trebui făcut acum
- Actualizarea. PHP 8.2–8.5 la versiunile din 21 octombrie; pentru 8.1 și mai vechi, migrare sau oprirea site-ului. Node.js la 22.23.4, 24.22.1 sau 26.12.1, iar pachetele Python Brotli și brotlicffi la versiunile corectate.
- Setarea pentru al treilea defect.
session.upload_progress.enabled=0până la următoarea lansare obișnuită a PHP. - Căutarea ușilor ascunse. Fișiere PHP noi sau modificate după 17 octombrie în directoarele site-ului, procese PHP care pornesc shell-uri, conexiuni ieșite din server spre adrese necunoscute, conturi de administrator noi.
- Schimbarea secretelor. PHP2Shell poate scurge memoria procesului, deci parolele bazei de date, cheile API și cookie-urile de sesiune de pe un server expus ar trebui considerate compromise și schimbate.
7. Trei scenarii pentru 31 martie 2027
Variabila este numărul de entități publice din România confirmate public ca fiind compromise prin PHP2Shell (de DNSC, de entitatea însăși sau de presă care citează una dintre ele) până la 31 martie 2027. Cele trei scenarii acoperă toate cazurile și se exclud reciproc.
- A · Niciuna confirmată public (40%). Actualizările au venit la timp sau compromiterile nu sunt făcute publice. Instituțiile din România anunță rar incidentele, iar exploatarea pe configurațiile moderne este grea.
- B · Între 1 și 9 entități (40%). Câteva cazuri ies la iveală: un site desfigurat, o bază de date publicată, un raport DNSC care numește instituții compromise. Este scenariul în care webshell-urile lăsate înainte de actualizare sunt găsite târziu.
- C · Zece sau mai multe (20%). O campanie automatizată lovește site-urile vechi ale administrației locale și ale școlilor, iar DNSC raportează un număr mare de cazuri. Ar cere ca atacatorii să fi țintit versiunile vechi, nereparate, pe care le folosesc multe instituții mici.
Tabel de predicții
| Predicție | Orizont | Probabilitate | Cum se verifică | Sursa de verificare |
|---|---|---|---|---|
| CISA trece al treilea defect PHP, CVE-2026-115560, în catalogul vulnerabilităților exploatate activ | până la 31.03.2027 | 10–20% | Intrarea CVE-2026-115560 în catalogul KEV | cisa.gov |
| Este raportată public o compromitere reușită, în afara serverelor-capcană, prin Node2Shell (CVE-2026-111497) | până la 31.12.2026 | 30–40% | Raport CISA, al unui CERT național sau al unei firme de securitate despre un sistem real compromis prin CVE-2026-111497 | cisa.gov, thehackernews.com |
| O grupare de ransomware este legată public de folosirea PHP2Shell pentru accesul inițial | până la 31.03.2027 | 55–65% | Raport CISA, FBI sau al unei firme de securitate care leagă o campanie de ransomware de CVE-2026-109618 sau CVE-2026-109619 | cisa.gov, thehackernews.com |
| Scenariul A: nicio entitate publică din România confirmată public ca fiind compromisă prin PHP2Shell | 31.03.2027 | 35–45% | Numărul de entități publice din România confirmate public ca fiind compromise prin PHP2Shell | dnsc.ro |
| Scenariul B: între 1 și 9 entități publice din România confirmate public ca fiind compromise prin PHP2Shell | 31.03.2027 | 35–45% | Același număr | dnsc.ro |
| Scenariul C: 10 sau mai multe entități publice din România confirmate public ca fiind compromise prin PHP2Shell | 31.03.2027 | 15–25% | Același număr | dnsc.ro |
Când considerăm analiza greșită
Am fixat pragurile dinainte, ca să nu le interpretăm după fapt.
- Teza despre ușile ascunse este greșită dacă, până la 31 martie 2027, nicio firmă de securitate și niciun CERT nu raportează webshell-uri lăsate prin PHP2Shell pe servere care au fost apoi actualizate.
- Lectura despre amploare este exagerată dacă numărul serviciilor PHP vulnerabile raportat de Censys scade sub jumătate, adică sub 16 milioane, până la 31 decembrie 2026, fără o campanie de compromitere în masă.
- Prudența despre Node2Shell este greșită dacă, până la 31 decembrie 2026, apare o campanie de compromitere în masă a serverelor Node.js prin CVE-2026-111497.
Notă editorială: această analiză înlocuiește versiunea publicată în dimineața zilei de 29 octombrie, care trata alerta drept un simplu val de știri și nu numea PHP2Shell și Node2Shell. Versiunea veche a fost scrisă fără acces la articolele care declanșaseră alerta; am corectat și mecanismul prin care alertele își trimit sursele către analiză.
Surse principale: alerta DNSC, avertismentul CISA din 21 octombrie, anunțul Fundației PHP (LWN), instituțiile notificate în România (Digi24, după News.ro), descoperirea și calendarul (Al Jazeera), încercarea din 17 octombrie (Amazon), încercările măsurate de Cloudflare (CNA), serviciile britanice oprite (The Register), al treilea defect și exploiturile validate (The Register), setarea pentru CVE-2026-115560, încercările cu Mirai, primele shell-uri reușite, instituția guvernamentală europeană atacată, firewall-urile compromise de gruparea legată de China, trecerea în catalogul KEV și cifrele Censys, ritmul de remediere (BleepingComputer), site-urile europene oprite și avertismentul NCSC (G4Media, după The Guardian), actualizările Node.js, defectul Brotli și programele afectate, Node2Shell în catalogul CISA.



