PHP2Shell kockázati kézikönyv: mit jelent a sérülékenység weboldal-típusonként?
Ugyanaz a hiba, egészen más következmények – hat jellemző környezet, hatással, teendőkkel és egy azonnali ellenőrzőlistával
Készítette: Csaba Stefan Bako – PMI PMP, ISACA CISM
Tárgy: PHP2Shell (CVE-2026-109618, CVE-2026-109619) – CVSS 9.2, hitelesítés nélküli távoli kódfuttatás
Állapot: 2026. október 23.
Kinek szól: weboldal-tulajdonosoknak, webmestereknek, üzemeltetőknek, IBF-eknek és CISO-knak
Auditorként, ISACA CISM minősítésű szakemberként, IBF-ként és CISO-ként az elmúlt két napban újra és újra ugyanazt a kérdést kaptam: „Oké, kritikus a hiba – de rám nézve ez pontosan mit jelent?” Erre a kérdésre készítettem el ezt a kis kézikönyvet.
2005 óta üzemeltetek IT-infrastruktúrát egészségügyi szolgáltatóknak Magyarországon, és ezalatt egyetlen internet felé nyitott rendszert sem tettem ki WAF nélkül. Ez a tapasztalat tanított meg arra, hogy egy sérülékenység technikai súlyossága és üzleti hatása két külön dolog. A CVSS-pontszám mindenhol 9.2. A kár viszont attól függ, mit tárol a PHP-alkalmazás, és hogyan érhető el kívülről.
Két dolog minden esetben igaz, ezért előre leírom:
- A webmesternek minden esetben frissítenie kell a PHP-motort. Erre nincs kivétel, és nincs olyan beállítás, ami kiváltja.
- A WAF-nak nagyon fontos szerepe van a frissítésig eltelt időben – és utána is, a következő sérülékenységnél.
Vezetői összefoglaló
2026. október 21-én a PHP projekt sürgősségi javítást adott ki két kritikus, távoli kódfuttatást lehetővé tevő hibára a PHP motorban („PHP2Shell”). Mindkettő CVSS 9.2-es. Nem kell hozzájuk bejelentkezés, és felhasználói közreműködés sem, a javítás megjelenése előtt pedig már támadási kísérleteket is láttak. Mivel a hiba magában a PHP-ban van, minden webszerver érintett, amely PHP-t futtat: Apache, Nginx, IIS, LiteSpeed és FrankenPHP is.
Javított verziók: PHP 8.5.12, 8.4.27, 8.3.36 és 8.2.35. A PHP 8.1 és régebbi ágak nem kapnak hivatalos javítást – ezeket frissíteni kell, vagy szállítói backporttal kell lefedni. A technikai részleteket a PHP2Shell sérülékenységről szóló oldalon foglaltam össze.
Kockázatértékelés hat környezetre
| # | Környezet | Leírás | Hatás | Mitigáció |
|---|---|---|---|---|
| 1 | Statikus HTML és ASP / ASP.NET oldalak | A webszerveren nincs PHP futtatókörnyezet telepítve vagy hozzárendelve. | Nincs hatás. Ezek az oldalak nem kitettek ennek a sérülékenységnek. | Ellenőrizni kell, hogy a szerveren nincs PHP handler – megosztott IIS-hosztokon is. Alapvédelemként a WAF továbbra is erősen ajánlott más támadások ellen. |
| 2 | WordPress bemutató- / személyes oldal (nincs regisztráció, csak admin) | Nyilvánosan elérhető PHP-oldal, kevés vagy semennyi személyes adattal. | Alacsony. Fő kockázat: az oldal elcsúfítása, kártevő vagy SEO-spam beinjektálása, a szerver támadási platformként való használata, reputációs kár. | PHP frissítése és a workerek újraindítása. Ideiglenesen szigorú WAF-szabályok. Ismeretlen admin-fiókok és módosított fájlok keresése. |
| 3 | WordPress felhasználói regisztrációval / tagsággal | Felhasználói fiókokat, e-mail-címeket, jelszó-hasheket és profiladatokat tárol. | Kritikus. Egy sikeres támadás személyesadat-incidens, amely GDPR szerinti incidenskezelést és esetleges bejelentést tesz szükségessé. | Azonnali frissítés. Szigorú WAF-szabályok. Naplók átvizsgálása kihasználás jelei után. Gyanú esetén incidenskezelés indítása és minden hozzáférési adat cseréje. |
| 4 | Webshopok (WooCommerce, Magento, PrestaShop, Shopware stb.) | Ügyfél-, rendelési, cím- és fizetéshez kapcsolódó adatokat tárol, élő tranzakciókat dolgoz fel. | Kritikus. Adatszivárgás, bankkártyaadat-lopás (skimming), pénzügyi veszteség, üzleti leállás és PCI DSS-kitettség. | Azonnali frissítés, szükség esetén karbantartási ablakban. Szigorú WAF-szabályok. A fizetési oldalak ellenőrzése beinjektált szkriptek után. Kompromittálódás észlelésekor a fizetési szolgáltató értesítése. |
| 5 | Mobilalkalmazás-backendek (PHP API-k load balancer / WAF mögött) | A mobilalkalmazás egy API FQDN-hez kapcsolódik, amelyet a felhasználó nem lát, de a támadó felderíthet. | Magas vagy kritikus, az architektúrától függően. Felhasználói adatok, tokenek és kapcsolódó háttérrendszerek kerülhetnek veszélybe. | Az API-réteg frissítése. API-specifikus WAF-szabályok, amelyek tiltják a multipartot a feltöltést soha nem fogadó végpontokon. A front-end és back-end szegmentálása. Az adatbázis- és API-hozzáférés korlátozása. |
| 6 | Konténerizált PHP AWS EKS / Azure AKS környezetben | PHP-FPM podok felhős load balancer vagy WAF-fal ellátott ingress controller mögött. | Magas. Gyenge szegmentálás esetén a kompromittálódás túlterjedhet a podon: felhős hozzáférési adatokra, más szolgáltatásokra és adatbázisokra. | Konténer-image-ek újraépítése a javított PHP-verziókra és újratelepítés. Network policy-k, legkisebb jogosultságú workload identity és korlátozott hozzáférés a felhős metaadat-szolgáltatáshoz. |
Megjegyzések forgatókönyvenként
1. Statikus HTML és ASP / ASP.NET
A PHP2Shell csak ott létezik, ahol PHP fut. Egy statikus HTML-ből, klasszikus ASP-ből vagy ASP.NET-ből álló oldal ezen a sérülékenységen keresztül nem támadható.
Egy fontos kivétel azonban van: sok Windows/IIS szerver több oldalt is kiszolgál, és valamelyikhez telepítve van egy PHP FastCGI handler. Ilyenkor a szerver érintett, még akkor is, ha a te oldalad nem használ PHP-t. Mindig szerverszinten ellenőrizz, ne csak oldalszinten.
A WAF ettől függetlenül erősen ajánlott. A következő kritikus sérülékenység könnyen lehet, hogy az ASP.NET-et, az IIS-t vagy magát az operációs rendszert célozza.
2. WordPress bemutató- / személyes oldal
Ha nincs regisztráció és nincs ügyféladat, egy támadás reális következménye egy elcsúfított vagy visszaélésre használt weboldal. Ez jelenthet spamoldalakat, a látogatóknak kiszolgált kártevőt, adathalász oldalakat, vagy azt, hogy a szerverről másokat támadnak.
Az üzleti kár elsősorban reputációs: elvesztett bizalom, feketelistára kerülés a keresőknél és a böngészőknél, és a takarítás költsége.
3. WordPress felhasználókkal és regisztrációval
A távoli kódfuttatás a támadónak ugyanazt a hozzáférést adja, mint magának a weboldalnak – beleértve a wp-config.php-ban tárolt adatbázis-hozzáférést is. Ezzel a támadó a teljes adatbázist elolvashatja, lemásolhatja és letöltheti a saját gépére: felhasználóneveket, e-mail-címeket, jelszó-hasheket és minden más tárolt személyes adatot.
Minden igazolt vagy gyanított kihasználást ezért így kell kezelni:
- biztonsági incidensként: elszigetelés, forenzikus vizsgálat és helyreállítás;
- GDPR szerinti adatvédelmi incidensként: értékelés, és ahol szükséges, bejelentés a felügyeleti hatóságnak 72 órán belül (33. cikk), valamint az érintettek tájékoztatása (34. cikk).
A weboldal tulajdonosa emellett leállással, jogi kitettséggel és hosszú távú bizalomvesztéssel is szembesülhet.
4. Webshopok
A webshopoknál a legnagyobb az üzleti hatás. A 3. forgatókönyvben leírtakon túl a támadó:
- Magecart-típusú kártyaadat-lopó kódot injektálhat a fizetési oldalakba, és az élő vásárlók kártyaadatait lophatja el;
- módosíthatja a rendeléseket vagy az árakat;
- leállíthatja a webshopot a csúcsidőszak közepén.
Az ügyféladatok, a rendelési előzmények és a címek is kiszivároghatnak. Az incidens ilyenkor egyszerre adatvédelmi, pénzügyi és megfelelőségi esemény, amely PCI DSS-kötelezettségekkel és a fizetési szolgáltató bevonásával is járhat.
5. Mobilalkalmazás-backendek
Itt más a kockázati profil. A felhasználó soha nem látja a backendet: az alkalmazás egy load balancer vagy WAF FQDN-jével beszélget. A támadók azonban rendszeresen megtalálják ezeket a végpontokat – az alkalmazás visszafejtésével vagy a forgalom lehallgatásával. A „rejtett” nem azonos a „védettel”.
A valós kitettség az architektúrán múlik:
- Jól tervezett: WAF, külön front-end és back-end réteg, privát adatbázis és szigorú tűzfalszabályok a rétegek között. A kihasználás jóval nehezebb, és a kár behatárolható.
- „Lapos”: egyetlen PHP-szerver, amely az API-t és az adatbázist is tartja, közvetlenül az internetről elérhetően. Ez ugyanúgy kitett lehet, mint egy nyilvános WordPress-oldal vagy webshop – vagy még jobban, mert az API-backendek gyakran minden felhasználó tokenjeit és adatait tárolják.
6. Konténerizált PHP (AWS EKS / Azure AKS)
A Kubernetes nem szünteti meg a sérülékenységet. Azt változtatja meg, hogy a támadó a kihasználás után meddig jut el.
A frissítés is másképp működik: minden konténer-image-et, amely sérülékeny PHP alap-image-re épül, újra kell építeni és újra kell telepíteni. A régi image-dzsel futó podok sérülékenyek maradnak akkor is, ha a hosztot már frissítették.
A kulcskérdések:
- Eléri-e egy kompromittált pod a felhős metaadat-szolgáltatást, és el tud-e lopni hozzáférési adatokat?
- Szabadon kommunikálhat-e más szolgáltatásokkal?
- Van-e az identitásának több jogosultsága, mint amennyire szüksége van?
Felhős példa: AWS EKS és Azure AKS
| Kontrollterület | AWS EKS | Azure AKS |
|---|---|---|
| Perem / WAF | AWS WAF az Application Load Balanceren vagy a CloudFronton. A menedzselt PHP és Core szabálykészletek bekapcsolása, plusz egyedi PHP2Shell-szabályok. | Azure WAF az Application Gateway-en (v2 vagy for Containers) vagy a Front Door Premiumon, menedzselt szabálykészlettel és egyedi PHP2Shell-szabályokkal. |
| Frissítés | Image-ek újraépítése a javított php:8.x tagekre, szkennelés ECR image scanninggel vagy Inspectorral, majd rolling redeploy. | Image-ek újraépítése, szkennelés Defender for Containersszel vagy ACR-rel, majd rolling redeploy. |
| Hálózati szegmentálás | Kubernetes NetworkPolicy-k, security group podokhoz, RDS privát alhálózatban. | Kubernetes NetworkPolicy-k, NSG-k, Azure Database Private Endpointon keresztül. |
| Identitás | Legkisebb jogosultság IRSA / EKS Pod Identity segítségével. IMDSv2 kötelezővé tétele 1-es hop limittel, hogy a podok ne lophassák el a node hozzáférési adatait. | Legkisebb jogosultságú Microsoft Entra Workload ID. A podok hozzáférésének tiltása a példány metaadat-szolgáltatásához, ahol lehetséges. |
| Titkok | AWS Secrets Manager – nem egyszerű környezeti változók az image-ben. | Azure Key Vault a CSI driverrel. |
| Észlelés | GuardDuty EKS Runtime Monitoring és VPC Flow Logs. | Defender for Containers és Azure Monitor / Sentinel. |
WAF-szemlélet: indokolt egy ideiglenesen szigorúbb szabályzat
Több mint 20 éve tervezek, vezetek be és üzemeltetek tűzfalakat és webalkalmazás-tűzfalakat. Ezalatt kialakítottam és folyamatosan finomítottam a saját szabálykészleteimet és támadási mintáimat. A tapasztalatom a PHP2Shellhez hasonló, kritikus és aktívan kihasznált sérülékenységeknél egyértelmű: korlátozott időre a tudatosan szigorúbb WAF-szabályzat a helyes döntés.
Igen, a szigorúbb szabályok miatt elromolhat néhány funkció, például egy ritkán használt feltöltő űrlap vagy egy szokatlanul működő bővítmény. Ez elfogadható, átmeneti kompromisszum. Egy hibás funkciót órák alatt ki lehet javítani. Egy ellopott ügyféladatbázist nem lehet visszaszerezni, a reputációs és szabályozói következmények pedig évekig tarthatnak. A szigorú szabályok megőrzik az adatokat, védik az ügyfeleket, és csökkentik a hatást, ha egy támadás mégis sikeres.
Az általam javasolt ideiglenes, szigorú szabályzat a PHP2Shellre:
- tiltja a multipart/form-data kéréseket minden olyan végponton, amely nem fogad legitim fájlfeltöltést;
- korlátozza a kérés törzsének méretét, a POST-mezők és fájlok számát, valamint a paraméterek beágyazási mélységét;
- tiltja a PHP session upload-progress mezőt, amely az egyik ismert támadási útvonal;
- elutasítja a hibás formátumú multipart kéréseket;
- mindezt PHP-konfigurációs megerősítéssel párosítja:
session.upload_progress.enabled = 0, alacsonypost_max_size, és PHP 8.5 eseténfatal_error_backtraces = 0.
A konkrét ModSecurity- és IIS-szabályokat a WAF-ról szóló oldalon gyűjtöttem össze. Ha minden rendszer frissítve van és ellenőriztük, a szabályzat kontrolláltan visszalazítható a megszokott alapszintre.
Azonnali ellenőrzőlista
- Leltár: minden szerver és konténer, ahol PHP fut – megosztott IIS-hosztok és régi rendszerek is.
- Frissítés: PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35, majd minden PHP-worker újraindítása vagy a konténerek újratelepítése.
- Ideiglenes védelem: szigorú WAF-szabályok és PHP-konfigurációs megerősítés, amíg a frissítés minden rendszeren fel nem kerül.
- Kompromittálódás jeleinek keresése: új admin-fiókok, ismeretlen PHP-fájlok (web shellek), módosított fizetési szkriptek, szokatlan kimenő forgalom vagy nagy adatbázis-exportok.
- Eszkaláció: kompromittálódásra utaló bármilyen jel esetén incidenskezelés és adatvédelmi incidenskezelés.
- Döntés a BCDR alapján: ha a frissítés nem kerülhet fel azonnal, a leállításról vagy a kockázat dokumentált vállalásáról a BCDR és a kockázati tűrőképesség alapján kell dönteni – erről itt írtam részletesen.
Teljes körű hatáselemzés és biztonsági szolgáltatások
Ez a kézikönyv általános, forgatókönyv-alapú képet ad. Minden környezet más. Egy teljes körű hatáselemzés kiegészíthető valószínűségi besorolással, kockázati pontozással, KPI-okkal, kompenzáló kontrollokkal és priorizált helyreállítási tervvel.
Ha GRC-felülvizsgálatra, kockázatelemzésre, WAF- és tűzfal-megerősítésre vagy más biztonsági szolgáltatásra van szükséged, keress a kapcsolati oldalon, a CSE Business oldalán vagy a LinkedInen.
Csaba Stefan Bako – PMI PMP, ISACA CISM. A kézikönyv a 2026. október 23-án nyilvánosan elérhető információkat tükrözi, és új részletek esetén frissítem.
Kapcsolódó oldalak
- PHP2Shell sérülékenység (CVE-2026-109618, CVE-2026-109619) – mit jelent, és hogyan csökkenthető a kockázat
- Mi a WAF, és miért nem gondoltam, hogy 2026-ban erről kell írnom? – szabályokkal a saját tudásbázisomból
- BCDR és IT-üzemeltetés – „Csaba, mit csináljunk?” „Mutasd a BCDR-t!”
- Biztosítási adatkezelési incidens – mit tehetünk, ha a személyes adataink rossz kezekbe kerülnek
- Autosecurit / Skyguard teljes leállás – BCDR, RTO és RPO a gyakorlatban