← Grįžti į blogą

PHP2Shell (CVE-2026-109618, CVE-2026-109619): kas pažeidžiama ir kaip apsisaugoti, kol atnaujinate PHP?

2026-10-25 · Saugumo tyrimai

Spalio 21 d. PHP išleido skubias pataisas dviem kritinėms spragoms, kurios gavo PHP2Shell pavadinimą. Abi leidžia nuotoliniu būdu vykdyti kodą be jokio prisijungimo (RCE) ir paveikia beveik visas PHP versijas, kurios aptarnauja web užklausas, nuo 5.4 iki 8.5. Detalės nutekėjo dar prieš oficialų paskelbimą, o pirmieji atakų bandymai užfiksuoti keturiomis dienomis anksčiau nei pataisos.

Šiame straipsnyje: kas pažeidžiama, kaip greitai patikrinti savo serverius, ką nustatyti, jei atnaujinti šiandien negalite, ir ar jus apsaugo WAF.

Trumpas atsakymas

  • Atnaujinkite PHP bent iki 8.5.12, 8.4.27, 8.3.36 ar 8.2.35 ir perkraukite visus PHP procesus. Įskiepių atnaujinimas nepadeda.
  • Jei šiandien negalite: session.upload_progress.enabled = Off, mažesnis post_max_size ir prieigos iš interneto ribojimas.
  • WAF suteikia laiko, bet nėra sprendimas. Cloudflare, F5 ir kiti blokuoja žinomus variantus, o pats F5 BIG-IP irgi pažeidžiamas ir turi būti atnaujintas.

1. Kas yra PHP2Shell?

Tai dvi atminties valdymo klaidos pačiame PHP, ne kuriame nors įskiepyje ar aplikacijoje [1][2]:

CVE-2026-109618 CVE-2026-109619
Kas nutinka PHP pritrūksta atminties, kol dar ruošia užklausą, ir tvarkydamasis naudoja pusiau paruoštus duomenis Po užklausos lieka nuorodos į jau atlaisvintą atmintį, kurias gali panaudoti kita to paties proceso užklausa
Poveikis Kodo vykdymas Kodo vykdymas, proceso atminties nutekėjimas
Užklausų Viena (mod_php) Dvi į tą patį procesą
CVSS 4.0 9.2 9.2

Svarbiausia: ataka vyksta dar prieš paleidžiant jūsų aplikacijos kodą. Todėl WordPress, Laravel ar kitų įskiepių atnaujinimas čia nepadeda, reikia atnaujinti patį PHP. Antroji spraga dar ir nutekina PHP proceso atmintį, kurioje gali būti slaptažodžių, sesijų žetonų ir API raktų.

Spragas surado ir pranešė Wiz, Calif.io, OpenAI ir Quarkslab tyrėjai [1][2].

2. Kaip viskas vyko?

Qualys duomenimis, per pirmas 12 valandų buvo atnaujinta tik apie 199 tūkst. iš 156 mln. jų matomų PHP diegimų, o 71 % jų veikia su nebepalaikomomis PHP šakomis [4].

3. Ar mano svetainė pažeidžiama?

Jei svetainė veikia su PHP ir versija žemesnė nei nurodyta lentelėje – taip [1][2].

PHP šaka Pataisyta versija Pastaba
8.5 8.5.12
8.4 8.4.27
8.3 8.3.36
8.2 8.2.35
8.1, 8.0, 7.4 Oficialios versijos nėra Tik pataisų kodas (backport) arba platinimo / LTS tiekėjo paketas
7.3 ir senesnės Pataisos nėra Atnaujinti į palaikomą šaką

Pažeidžiami visi būdai, kuriais PHP aptarnauja web užklausas: Apache mod_php, PHP-FPM, php-cgi, LiteSpeed, FrankenPHP. Skubiausia – Apache mod_php: ten ataka paprasčiausia. Su PHP-FPM sėkmė priklauso nuo konfigūracijos, bet tai nėra priežastis laukti [5].

Kaip patikrinti:

php -v                       # CLI versija (gali skirtis nuo web!)
php-fpm -v                   # FPM versija

Patikimiausia – sukurti laikiną puslapį su phpinfo() arba žiūrėti X-Powered-By antraštę, nes CLI ir web gali naudoti skirtingus PHP. Linux platinimų (Debian, Ubuntu, RHEL) paketuose pataisa dažnai įdedama nekeičiant versijos numerio, tad tikrinkite savo platinimo saugumo pranešimą, ne tik numerį.

Jei svetainė pas hostingo tiekėją, paklauskite jo tiesiai: ar PHP atnaujintas į pataisytą versiją ir kada.

4. Ką daryti dabar?

1. Atnaujinti PHP

Tai vienintelis patikimas sprendimas. PHP komanda aiškiai sako, kad joks nustatymas spragų visiškai nepašalina [1][2]. Atnaujinę paleiskite iš naujo visus PHP procesus (FPM, Apache), kitaip seni procesai veiks su sena versija.

2. Jei atnaujinti šiandien negalite

PHP rekomenduoja šiuos laikinus nustatymus. Juos reikia nustatyti php.ini, FPM pool'e arba web serverio konfigūracijoje, ne per ini_set() ar .user.ini [1][2]:

; CVE-2026-109619: išjungti sesijos įkėlimo progresą
; (rekomenduojama palikti išjungtą ir po atnaujinimo, jei nenaudojate)
session.upload_progress.enabled = Off

; Tik PHP 8.5
fatal_error_backtraces = Off

; CVE-2026-109618: mažinti užklausų dydį
post_max_size = 8M            ; 32M, jei svetainėje yra failų įkėlimas
upload_max_filesize = 6M      ; mažiau nei post_max_size
expose_php = Off

Papildomai:

memory_limit = -1 PHP taip pat mini kaip laikiną priemonę nuo pirmosios spragos, bet ji didina riziką, kad serveris užstrigs dėl atminties stygiaus, todėl naudokite tik kartu su cgroup riba.

3. Patikrinti, ar nebuvote atakuoti

Bandymai prasidėjo spalio 17 d., todėl logus peržiūrėkite nuo tos datos. Saugumo tyrėjų minimi požymiai [5][6]:

Jei matote įtartinų požymių, vien atnaujinimo neužtenka: pakeiskite slaptažodžius ir API raktus, kurie galėjo būti PHP atmintyje, ir patikrinkite, ar serveryje neliko web shell'ų.

Reikia pagalbos su PHP2Shell?

Patikrinsime, ar jūsų serveriai ir F5 BIG-IP pažeidžiami, sukonfigūruosime laikinas WAF taisykles ir peržiūrėsime logus nuo spalio 17 d.

Registruotis konsultacijai

5. Ar WAF apsaugo?

Iš dalies – ir tai geras pavyzdys, kodėl WAF yra laikas, o ne sprendimas.

WAF Ką daro
Cloudflare (Free ir mokami planai) Septynios valdomos taisyklės nuo spalio 21 d., numatytasis veiksmas Block. Nemokamame plane įjungtos automatiškai, mokamuose – patikrinkite, ar įjungtas „Cloudflare Managed Ruleset“. Papildomai tikrinami ir serverio atsakymai [3]
F5 BIG-IP Advanced WAF / ASM, F5 WAF for NGINX, F5 Distributed Cloud WAF Parašai 200103697 ir 200204115 (CVE-2026-109618), 200204113 (CVE-2026-109619) atnaujinime ASM-AttackSignatures_20261022_154742.im ar naujesniame; saugo tik veikdami Blocking režimu [7]
AWS WAF Taisyklės PHP valdomų taisyklių grupėje, rekomendacija blokuoti multipart, jei nenaudojamas [9]
ModSecurity / Coraza su OWASP CRS Oficialios CRS versijos su php2shell taisyklėmis dar nėra (naujausia v4.30.0, spalio 2 d.). main šakoje spalio 22 d. pridėtas tik viešų PoC įrankių User-Agent blokavimas – jį lengva apeiti [11]. Kitos taisyklės, pvz., phpinfo() išvesties blokavimas, dar svarstomos [12]. Vienas tyrėjas praneša, kad CRS PL1 blokavo žinomus bandymus [13], o komerciniai rinkiniai (pvz., Imunify360) blokuoja žinomas užklausas [10]

Ar pažeidžiamas pats F5 BIG-IP?

Taip. BIG-IP valdymo sąsaja (Configuration utility) ir APM naudoja PHP, todėl F5 paskelbė, kad pažeidžiami patys įrenginiai [7]:

Produktas Pažeidžiamos versijos Pataisyta Rizika
BIG-IP APM (duomenų srautas, Access profile) 21.1.0; 17.5.0–17.5.1; 17.1.0–17.1.3 21.1.0.4; 17.5.1.11; 17.1.3.7 High, CVSS 8.1 – be prisijungimo
BIG-IP, visi moduliai (valdymo sąsaja) tos pačios tos pačios High, CVSS 7.5 – su prisijungimu

Nepažeidžiami: BIG-IQ, F5OS, BIG-IP Next, NGINX, F5 Distributed Cloud.

Kol neatnaujinote, F5 rekomenduoja:

Ką papildomai nustatyti BIG-IP Advanced WAF / ASM?

Be parašų, F5 siūlo politikos nustatymus, kurie mažina atakos galimybes, bet, F5 žodžiais, nepakeičia PHP atnaujinimo [7]:

Kodėl WAF neužtenka?

6. Kodėl vien pataisų neužtenka?

PHP2Shell rodo tris dalykus, kurie kartosis su kitomis spragomis:

  1. Išnaudojimas prasidėjo prieš pataisas. Nė vienas pataisų grafikas nuo to neapsaugo.
  2. Net laiku atnaujinus, po dviejų dienų atsirado nauja susijusi spraga.
  3. Daugumai organizacijų reikia dienų ar savaičių, kol atnaujinami visi serveriai.

Todėl saugumas turi laikytis ne ant vieno sluoksnio, o ant kelių, kurie vienas kitą dengia:

Kaip tokią architektūrą sudėlioti praktiškai, su BIG-IP ir Coraza pavyzdžiais, aprašysime kitame straipsnyje. Daugiau apie „Cloudflare“ galimybes – straipsnyje „Cloudflare WAF: nemokamas planas, taisyklės ir kada jo neužtenka“.

Dažni klausimai

Ar WordPress įskiepių atnaujinimas apsaugo nuo PHP2Shell?

Ne. Spragos yra pačiame PHP, todėl reikia atnaujinti PHP versiją serveryje (arba paprašyti hostingo tiekėjo).

Ar „Cloudflare“ nemokamas planas apsaugo nuo PHP2Shell?

Cloudflare nuo spalio 21 d. blokuoja žinomus atakų variantus ir nemokamame plane [3]. Tai sumažina riziką, bet nepakeičia PHP atnaujinimo: užpuolikai keičia užklausas, o serveris gali būti pasiekiamas ir aplenkiant Cloudflare.

Ar pažeidžiamas PHP-FPM?

Taip, nors išnaudoti sudėtingiau nei Apache mod_php ir sėkmė priklauso nuo konfigūracijos. Atnaujinti reikia visais atvejais.

Kaip sužinoti, ar mano PHP jau pataisytas?

Patikrinkite web serverio naudojamą versiją (phpinfo()) ir palyginkite su lentele. Jei PHP iš Linux platinimo paketo, tikrinkite platinimo saugumo pranešimą – pataisa gali būti įdėta nekeičiant versijos numerio.

Ką daryti, jei naudoju PHP 7.4 ar senesnę?

7.4–8.1 šakoms yra tik pataisų kodas arba platinimo / LTS tiekėjų paketai, 7.3 ir senesnėms – nieko. Kol pereisite į palaikomą versiją, apribokite prieigą iš interneto ir taikykite laikinus nustatymus iš šio straipsnio.

Šaltiniai

  1. PHP — GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
  2. PHP — GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
  3. Cloudflare — Cloudflare deploys protections against php2shell vulnerability
  4. Qualys — PHP2Shell: Find, Mitigate, and Patch Now
  5. watchTowr — PHP2Shell FAQ
  6. SOCRadar — PHP2Shell (CVE-2026-109618 & CVE-2026-109619)
  7. F5 — K000163821: PHP vulnerabilities CVE-2026-109618 and CVE-2026-109619 (atnaujinta 2026-10-24)
  8. F5 — K000163878: PHP vulnerability CVE-2026-115560
  9. AWS — Using AWS WAF to apply mitigations for PHP2Shell
  10. Imunify360 — What Imunify360 Blocks and What Needs the PHP Update
  11. OWASP CRS — PR #4893 (php2shell PoC User-Agent)
  12. OWASP CRS — PR #4902 (953130)
  13. frehi.be — PHP2Shell: mitigating with CRS and AppArmor before the patch
  14. Astra — CVE-2026-115560
  15. AWS — Amazon threat intelligence identifies PHP2Shell exploitation prior to public disclosure in MadPot
  16. PHP — php.net pranešimas apie CVE-2026-115560 (2026-10-23)

Reikia pagalbos su PHP2Shell ar WAF?

Patikrinsime jūsų PHP serverius ir F5 BIG-IP, sukonfigūruosime laikinas WAF taisykles „Cloudflare“, „F5“ ar „Coraza“ ir padėsime suplanuoti atnaujinimą be prastovų.

Registruotis konsultacijai