PHP2Shell a explodat: CVSS 9.2, cu o zi înainte de deschidere, iar cele două găuri au fost codificate timp de 10 ani.
În primul rând, concluzia este că:PHP a produs un cod neautorizat de la distanță pentru CVSS 9.2, numere CVE-2026-109618 și CVE-2026-109619, cu o poreclă PHP2Shell. Pe 20 octombrie, a fost făcut public și pe 21 octombrie la 1400 UTC patch-uri au fost eliberate, în timp ce canistrele de miere Amazon au fost înregistrate pe 17 octombrie, cu patru zile înainte de deschidere.
Ce e mai rău decât asta este celălalt lucru: aceste două găuri sunt primele care ajung la PHP 5.4, ceea ce înseamnă...Sunt codaţi de peste un deceniu.Nu ştiu. Și în 2024, când auditul dezvoltatorului PHP a descoperit calea OOM, echipa sa întâlnit pentru a discuta cum să-l repare.Nu am fost de acord și apoi nu am repara.Nu ştiu. Motivul este că nimeni nu a crezut că ar putea fi folosit cu adevărat.
Această frază pare ironică. Motivul pentru care nu putem face acest lucru nu este acela că gaura este nesemnificativă, ci că lanțul este prea complex pentru a depăși capacitatea fizică a cercetătorilor umani. Apoi Al a venit şi a scris.
În primul rând, pentru a primi cuvântul "răspuns de urgență multinațional" din drum. Uite.
Cuvântul preferat al partidului este "alarma globală." Nu este o exagerare de data asta, dar este un scor clar.
- Oficial PHP: Un anunț prealabil a fost emis la 20 octombrie, afirmând că la 21 octombrie la ora 14:00 UTC va fi lansat într-o versiune securizată în cazul în care detaliile au fost scurgeri sau Câmped. Ca urmare, numărul CVE a fost înjunghiat la Hacker News în aceeaşi zi, iar eliberarea programată pentru 22 octombrie a fost forţată într-o zi mai devreme.
- CERT-UE: release advising 2026-018 and include both CVEs.
- CloudflarePe 21 octombrie, CTO Dane Knecht a declarat direct "atacul timpuriu a fost văzut pentru a apărea," iar regulile WAF au fost lansate în întregime, inclusiv utilizatorii liberi. Dar el a subliniat că a fost doar stopgap, și soluția reală a fost patch-uri.
- Informații privind amenințările cu Amazon: MadPot cutii de miere au fost prinse încercând pe 17 octombrie, iar un alt lot a fost prins pe 21 octombrie, iar sarcina utilă și infrastructura a indicat un număr de atacatori diferite. php2shell "este deja utilizat pe scară largă."
- Urmărește tractarea: Ambele găuri sunt reapărute, în timp ce încercările de a exploata ambele sunt observate.
Deci "atacul a fost găsit" nu este o redare, ci un fapt. Iar răspunsul de urgență multinațional nu este o lovitură -- doar că principalii subiecți ai răspunsului sunt producătorii, CDN-urile și organizațiile de urgență, nu orice guvern din țară.
Două găuri, două feluri complet diferite de a muri.
Mulţi oameni cred că e o gaură cu două numere, nu. Acestea sunt două rute separate de atac, fiecare CVSS 9.2.
CVE-2026-109618: Bombă atunci când memoria este epuizată
Prelucrarea unei cereri este întreruptă atunci când distribuția memoriei PHP nu funcționează. Problema este:În acest moment, datele cererii interne ar fi putut fi doar pe jumătate iniţiale, iar logica de curăţare ulterioară ar fi folosit această bucată neincorporată de date greşite ca date valide.
Metoda de declanșare este simplă: construi o cerere multipart pentru a imploda memoria. Ciudat lucru este,Mărimea cererii pare să se potrivească cu tavanul tău.Nu este dimensiunea maximă post-ai înființat, este decodarea și consumul de prelucrare internă.
Cel mai rău este mod php. Mod php pentru apași atunci când se solicită pornire eșuatăTot se va curăţa., astfel încât acest lanț poate fi completat înainte de orice cod aplicabil ruleaza. Codul tău PHP este atât de curat, nu există nici o portiță de scăpare, nu există nici o oprire.
PHP-FPM va ucide lucrătorul atunci când acesta nu reușește să înceapă, doar pentru a tăia lanțul, astfel încât oficial, mod php este cel mai mare risc. Dar fii atent -- asta nu înseamnă că FPM-ul e în siguranţă.După pornirea cu succesExistă încă posibilitatea exploatării.
CVE-2026-109619: Stare murdară între cereri
Asta e mai rău. PHP va refolosi procesul de lucru pentru a procesa mai multe cereri. Ultima cerere de eliberare a memoriei, indicatorul rămâne în starea internă; următoarea cerere vine,Citiţi adresa goală înainte de iniţializarea normală.Nu ştiu.
Erori fatale (diminuarea memoriei, pauză de performanță) întrerupe starea de curățare-up. Chiar mai rău, unele diagnostic non-letal în timpul opririi ar fi înlocuit starea greșită.Refă-l.Nu ştiu.
Căile oficial confirmate includ: RCE cu eroare fatală atunci când PHP 8.5 a activat regresele de eroare fatale (deschidere implicită), iar ciclul de viață al sesiunii RCE pe php motor și FPM.session.upload_progress În mod implicit, puteți acționa ca un consumator timpuriu într-o stare de mizerie.Și nu e nevoie să aplice apelul (s)Nu ştiu.
Gaura asta e încă ataşată.Scurgere de memorieNu ştiu. Ce se scurgea? este parola, token, tasta API, certificat pentru alte cereri din memoria procesului. Wiz comparativ direct cu Heartbled, care nu este prea mult.
Cronologie, mai mult decât titlu.
| Timp | Ce s-a întâmplat? |
|---|---|
| Anul 2024 | Auditorul dezvoltatorului principal PHP a găsit OOM, acea eroare, echipa nu a avut niciun consens cu privire la lege, a pus-o în așteptare. |
| 2026-08 | Ryan Austin din Calif identifică lacunele cu OpenAI GPT-5.6 Sol; Wiz Independent Discovery |
| 2026-10-17 | Amazon MadPot, mierea poate înregistra o încercare, cu patru zile înainte de deschidere. |
| 2026-10-20 | Numărul CVE scurs în Hacker News și Social Media, PHP |
| 2026-10-21 | 14:00 Publicaţia UTC 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 |
17 octombrie trebuie să fie ales.Ziua publică a fost a 20-a, dar atacul a avut loc pe 17.Prin urmare, Comisia concluzionează că, în conformitate cu articolul 107 alineatul (3) litera (c) din Tratatul privind funcționarea Uniunii Europene, Comisia nu ar trebui să se bazeze pe informațiile furnizate de Amazon.
În ceea ce privește modul în care atacatorii au primit informațiile în avans, Amazon a spus "nu clar." Nu pot intra în asta, dar trebuie să accepţi o realitate.Ziua dezvăluirii nu a fost niciodată ziua atacului, dar în ziua în care ai aflat.
Patru, de data asta e chiar AI.
Blogul WizModelul AI linia frontului scade semnificativ acest prag.Nu ştiu.
Specific: Ryan Austin, cercetător în Calif, a fost găsit în proiectul OpenAI "Patch the Planet" cu GPT-5.6 Sol. Wiz a găsit aceeaşi problemă independent. Pentru a-l folosi, avem nevoie de un lanţ de defecte şi ţintim fiecare ţintă.Memorie calibrată repetatWiz spune că modelul front-line le permite să dezvolte aplicații utilizabile pentru diferite aplicații în câteva ore.
Asta nu înseamnă că Al a câştigat din nou.Ideea e că şanţul "complexului" cedează.
Multe lacune vechi nu au fost bătute în ultimele două decenii, nu pentru că acestea nu sunt grave, ci pentru că pragul de utilizare este prea mare Deci le-ai pus în coloana "teoretic riscant." Acum acest gard este plecat.
Aceste găuri vechi de zece ani care se află în sistemul dumneavoastră și sunt evaluate ca fiind "dificile și neprelucrate" trebuie să fie re-evaluate.
Cinci, la care ar trebui să te duci?
| Sucursală | Versiunea afectată | Eliminarea |
|---|---|---|
| PHP 8. 5 | < 8.5.12 | Măreşte la 8.5.12. |
| PHP 8.4 | < 8.4.27 | Măreşte la 8,4.27. |
| PHP 8. 3 | < 8.3.36 | Ridică la 8,3.36. |
| PHP 8.2 | < 8.2.35 | Ridică la 8.2.35. |
| PHP 7, 4 / 8, 0 / 8, 1 | Toate | Oficial nepublicat, numai nivel sursă |
| PHP 5.4 | Toate | EOL, guvernul nu-l repara. Afaceri |
Câteva amintiri din viaţa reală:
- Lansarea Linux și Vânzătorul LTSAm un plasture în avans.Verificați consilierea producătorului cu un pachet de distribuție. Nu grăbi codul sursă.
- Utilizare
rpms.remirepo.netNotă: PHP a declarat oficial sursa pe 21 octombrie.Nicio actualizareAstfel încât să puteți trece la un pachet de distribuție sau să-l facă din codul sursă. - Windows binar de PHP 8.5 este, de asemenea, pe pagina oficială de descărcare.
- Nu cred că este în regulă să ruleze în container - versiunea PHP a oglinzii container trebuie să fie verificate.
Şase, dacă nu găseşti un plasture, fă-le pe astea patru mai întâi.
Primul stat:Nimic din astea nu te va face în siguranţă.Expresia oficială PHP este "reduce expunerea la anumite căi de atac, dar nu face instalațiile mai sigure." Valoarea lor este de a vă oferi timp pentru a obține plasturi.
Setează limita de memorie la -1
Scop: Pentru a elimina capacul previzibil al memoriei PHP a eșuat, adică CVE-2026-109618 a confirmat starea de declanșare de care depinde.
Ideea este,Cum?: a se stabili în locuri în care cererea nu este modificată, cum ar fi Pool FPM php_admin_value sau configurare Apache. Trebuie să verificați dacă nu există pop-uri, directoare, setări de aplicație pentru a adăuga limita înapoi.Apoi reporniți fiecare lucrător.
Pretul este clar: esti de pe gardul de memorie al PHP-ului, si esecul de distributie de jos poate fi inca pe acea cale periculoasa. Deci trebuie să fie un container sau un grup pentru a limita acoperirea -- dar este doar o strategie pentru "a ucide oameni afectați."Nu utilizaţi niciodată date RLIMIT AS sau RLIMITCei doi sunt exact genul de eșecuri de distribuție care creează lacunele.
Reduce dimensiunea maximă după
Site-uri fără fișier 8M pentru a fișier 32M și garantat upload_max_filesize Mai puţin. În același timp, se adaugă limite serverului web sau stratului proxy - volumul cererilor decodate, numărul de câmpuri, numărul de părți multiple, numărul de capete, adâncimea cuiburilor.Aceste restricții trebuie să acopere cererile care nu sunt valabile Content-LengthSau ocolim.
3. Închiderea sesiunii.proces de încărcare
session.upload_progress.enabled = 0
Este scris în php.ini, instrument FPM sau configurare server.Trebuie să fie eficientă înainte de cerere.Nu ştiu. Utilizare ini_set() Sau FPM. .user.ini Era prea târziu... era murdar. Schimbarea este, de asemenea, pentru a reporni tot muncitor.
PHP 8. 5 Încă unul.
fatal_error_backtraces = 0
Acest bloc a confirmat doar erori fatale, fără alte variante. De asemenea, necesită setări de nivel administrator + reporni workker.
În plus, menţionează oficial că mulţi vor ignora:Repară erorile fatale pe care atacatorii le pot declanşa şi executa., inclusiv back-up, încărcare, procesarea importurilor, eșecuri de curățare-up. Şi...Ștergerea configurațiilor învechite sau ilegale impuse în funcție de cerereScuipă informaţii despre diagnostic înainte să fie iniţializată şi să hrănească scurgerea.
Ultima propoziţie e foarte uşor de înţeles:Nu funcționează pentru a ascunde diagnosticul cu raportarea erorilor, afișarea erorilor sau @.Nu se întâmplă.
VII. Lecţii reale despre asta
Nu vreau să termin scriind "Închide plasturele." Bineînţeles că e un plasture. E azi. Dar unele judecăţi trebuie să se schimbe.
- Termenul "dificil de utilizat" nu mai este acelaşi cu "prescris."PHP acest lanț de acces gaura este suficient de complicat pentru a avea nevoie de ajutorul AI, care a ajutat deja. Vechile găuri din lista ta de active care marchează "riscul teoretic" ar trebui reevaluate.
- Limbajul merge la un singur punct.WordPress, Drupal, Joomla, Magento, MediaWiki toate rulați pe PHP, auditul de cod de aplicare este curat, iar miezul PHP este în pericol. Ritmul compensator al straturilor de infrastructură, cu straturi de aplicare separate.
- "Codul de aplicare este rupt fără a rula." WAF poate doar întârzia.Cloudflare însuși a spus că a fost stopgap. Punerea WAF ca o soluţie este egală cu a da viaţă acoperirii.
- Există o mulțime de site-uri vechi în țară folosind PHP.Aceste stații care rulează pe PHP 5.6/7.0, care au fost mult timp în urmă neîntreținute și spânzurate pe un server de cloud, sunt în această expunere de 1,3 la 1.9 milioane. Ei nu vor primi nici o notificare.
Se înregistrează calibrări ale datelor: W3Techs declară că PHP reprezintă 69,3% din limbile cunoscute serviciului, iar Wiz 70 la sută; gazdele de expunere, cercetătorul de securitate Silas Cutler estimează peste 1,3 milioane, iar căutarea lui Henk Poley este de peste 1,9 milioane. Aceste numere sunt de calibre diferite și nu le folosesc ca valori precise, dar scala este aceeași -Milioane, la nivel global.
Încă un detaliu merită amintit: atunci când numărul CVE a fost scurs, punctele CVSS care au ieșit au fost 10.0, PHP a fost oficial confirmat.Scorul a fost greşit.Este de fapt 9.2. Nimeni nu ar ști nimic despre acest detaliu, dar va fi întotdeauna în circulație. Văzând 10.0, ştii ce val este.
O gaură de 10 ani, două luni de cercetare AI asistat, patru zile de utilizare timpurie, fereastra de o zi plasture. Acest interval de timp este normal din toate software-ul de bază care urmează.
Verifică versiunea acum.php -vSau uită-te la oglinzile din container. Nu aştepta până mâine.