Trumpai: WAF vietoj atnaujinimo esant PHP2Shell neveikia. Žiniatinklio programų ugniasienė (Web Application Firewall), tai yra filtras prieš svetainę, tikrina užklausas ir gali blokuoti žinomus atakų šablonus. Tačiau pati spraga yra PHP interpretatoriuje ir išnyksta tik su atnaujinimu bei visų PHP procesų paleidimu iš naujo. WAF yra prasmingas papildomas sluoksnis ir tiltas kelioms dienoms, o ne sprendimas.
Kodėl šis klausimas dabar keliamas taip dažnai
Daugelis eksploatuotojų PHP2Shell savaitę perskaitė iš pažiūros gerą naujieną: Cloudflare, pasak savo duomenų, nuo 2026-10-21 03:02 UTC turi aktyvias apsaugos taisykles, taip pat nemokamo plano klientams. Kas ir taip yra už Cloudflare ar kitos WAF, suprantamai klausia, ar atnaujinimas tada dar skubus.
Sąžiningas atsakymas: taip. Pati Cloudflare apriboja: vien taisyklių pagal užklausos duomenis nepakanka, todėl paslauga papildomai tikrina serverio atsakymą. Cloudflare taip pat pastebėjo pakitusius atakų šablonus. O apsauga veikia tik srautui, kuris iš tikrųjų eina per Cloudflare. Šio teikėjo smulkmenas aprašo Cloudflare apsaugos taisyklės nuo PHP2Shell. Čia kalbama apie principinį svarstymą, nepriklausomai nuo teikėjo.
Ką WAF mato ir ką keičia atnaujinimas
WAF stovi prieš programą. Ji mato kiekvieną užklausą, lygina ją su taisyklėmis ir praleidžia, blokuoja arba užregistruoja. Ji nežino, kaip PHP viduje apdoroja užklausą. O abi PHP2Shell spragos atsiranda būtent ten: CVE-2026-109618 esant atminties pritrūkimo (Out-of-Memory) būsenai, kai užklausos duomenys inicializuoti tik iš dalies, CVE-2026-109619 dėl vidinės būsenos, kuri po užklausos išlieka tame pačiame darbiniame procese.
Atnaujinimas ištaiso šį kodą. Po to priežastis pašalinta, kad ir kaip atrodytų užklausa. Kas nori suprasti, kurioje užklausos eigos vietoje tai vyksta, pagrindus ras skyriuje PHP užklausos gyvavimo ciklas.
WAF vietoj atnaujinimo: sąžiningas palyginimas
| Kriterijus | Žiniatinklio programų ugniasienė | PHP atnaujinimas su paleidimu iš naujo |
|---|---|---|
| Kas ištaisoma? | Nieko, žinomi šablonai sustabdomi | Priežastis PHP interpretatoriuje |
| Apsauga nuo naujų atakų variantų | Tik jei taisyklės laiku pritaikomos | Taip, spragos nebėra |
| Ar galima apeiti? | Taip, pavyzdžiui, per tiesioginį pradinio serverio pasiekiamumą | Ne, jei visi PHP procesai paleisti iš naujo |
| Greitis | Dažnai aktyvu iškart | Priklauso nuo versijos, prieigos ir aptarnavimo lango |
| Šalutiniai poveikiai | Klaidingi aliarmai, sutrikusios formos ar įkėlimai | Retai, versijų šuoliams reikia suderinamumo testų |
| Nauda kitos spragos atveju | Didelė, jei prižiūrima | Jokios, kiekviena spraga turi savo atnaujinimą |
| Ar padeda PHP 8.1 ir senesnei? | Kaip pereinamasis sprendimas | Tik per atgalinį perkėlimą (backport) arba migraciją |
Lentelė parodo, kodėl abi priemonės susijusios. WAF yra greita ir plati, bet niekada ne visiška. Atnaujinimas yra visiškas, bet tik konkrečiai spragai ir ne visada iškart įmanomas.
Vieną dalyką praktikoje dažnai praleidžia: WAF keičia svetainės elgseną. Griežtos taisyklės gali blokuoti teisėtus užsakymus, kontaktų formas ar failų įkėlimus, ir niekas to iškart nepastebi. Kas krizės metu įjungia WAF griežtai, todėl turėtų vieną kartą pats išbandyti svarbiausius svetainės procesus ir pirmųjų dienų žurnaluose patikrinti užblokuotas, bet teisėtas užklausas.
Kaip prasmingai derinti abu
- Nedelsiant: patikrinti, ar yra WAF ir ar aktyvios tinkamos taisyklės. Cloudflare mokamuose planuose, pasak teikėjo, Managed Ruleset nustatyti į Block.
- Nedelsiant: užtikrinti, kad pradinis serveris būtų pasiekiamas tik per WAF, pavyzdžiui, ugniasienės leidimu tik jų adresų diapazonams. Kitaip apsauga eina tuščiai.
- Per artimiausią aptarnavimo langą: atnaujinti PHP į 8.5.12, 8.4.27, 8.3.36 ar 8.2.35 arba įdiegti patvirtintą distribucijos atgalinį perkėlimą (backport).
- Iškart po to: iš naujo paleisti visus PHP darbinius procesus ir patikrinti, kad nebeliko jokio seno proceso. Vien naujų failų nepakanka; daugiau apie tai skyriuje Po atnaujinimo: iš naujo paleisti PHP-FPM ir visus darbinius procesus.
- Po to: WAF taisykles palikti, klaidingus aliarmus įvertinti ir išimtis nustatyti tikslingai, o ne bendrai išjungti taisykles.
Savo WAF, paremta ModSecurity ir OWASP Core Rule Set, galima pasiekti panašų rezultatą; pagrindus aprašo ModSecurity ir OWASP Core Rule Set naudojimas. Ypatingas atvejis yra specialistų pasiūlytas įkėlimo užklausų filtravimas už tikrųjų įkėlimo kelių ribų. Jis neoficialus, gali sulaužyti formas ir į veiklą turėtų patekti tik po testo.
Nei WAF, nei atnaujinimas nepašalina kenkėjiškos programinės įrangos, kuri buvo įterpta anksčiau. Po pataisos patikrinkite, ar nuo 2026-10-17 neatsirado neįprastų požymių.
Kada WAF nereikia ir kada nereikia paslaugų teikėjo
WAF nėra privaloma kiekvienai svetainei. Maža įmonės svetainė pas hostingo teikėją, kuris PHP pataiso laiku ir tai patvirtina, be savos WAF dažnai pakankamai apsaugota, jei CMS ir papildiniai atnaujinti. Taip pat kas gali savo serverį per trumpą laiką atnaujinti pats, WAF kaip tilto nereikia.
Prasminga ji tampa parduotuvėms, portalams ir programoms su daug formų, senoms sistemoms, kurių negalima atnaujinti iškart, ir ten, kur norima centralizuotai apsaugoti kelias svetaines. Paslaugų teikėjo tam reikia tik tada, jei diegimas, testai ir nuolatinė priežiūra vidiniu būdu neapimti.
Kaip PHP SOS padeda konkrečiai?
- Tikriname, ar jūsų WAF iš tikrųjų stovi prieš visas prieigas ir ar pradinis serveris pasiekiamas tiesiogiai.
- Nustatome taisykles arba jas pritaikome ir išbandome formas, įkėlimus ir sąsajas dėl šalutinių poveikių.
- Įdiegiame PHP atnaujinimą, iš naujo paleidžiame visus procesus ir dokumentuojame būseną.
- Kur atnaujinimas užtrunka, pereiname per WAF ir virtualų pataisymą su fiksuotu tikros pataisos terminu.
Išvada
Klausimas „WAF ar atnaujinimas“ užduotas neteisingai. Atnaujinimas uždaro spragą, WAF suteikia laiko ir sustabdo daug ko kito. Kas pasitiki tik WAF, pasikliauja taisyklėmis, kurias užpuolikai gali apeiti. Kas tik taiso, kitos spragos atveju vėl lieka be tilto.
Dažni klausimai
Ar WAF pakanka apsaugai nuo PHP2Shell?
Ne. WAF tikrina duomenų srautą ir gali blokuoti žinomus atakų šablonus. Pati spraga yra PHP interpretatoriuje ir išlieka, kol PHP neatnaujintas ir nepaleistas iš naujo. Cloudflare aiškiai pabrėžia, kad jos taisyklės atnaujinimo nepakeičia.
Ar esu automatiškai apsaugotas už Cloudflare?
Tik srautui, kuris iš tikrųjų eina per Cloudflare. Jei pradinis serveris tiesiogiai pasiekiamas iš interneto, apsauga apeinama. Mokamuose planuose, pasak Cloudflare, reikėtų patikrinti, ar Managed Ruleset nustatytas į Block.
Ar WAF verta ir po atnaujinimo?
Dažnai taip. WAF gali sustabdyti masinius skenavimus, žinomas atakas prieš papildinius ir prisijungimo puslapių piktnaudžiavimą bei suteikia laiko kitos spragos atveju. Tačiau jai reikia priežiūros ir testų, kitaip klaidingi aliarmai trikdo veiklą.
Kas yra virtualus pataisymas (virtual patching)?
Tai reiškia laikinai apsaugoti pažeidžiamumą taisyklėmis prieš programą, o ne keičiant kodą. Tai tiltas iki tikro atnaujinimo, o ne jo pakaitalas.