Láncolt PHP2Shell sebezhetőség 25 szervert rootolt meg

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Egyedi PHP2Shell exploit kernel LPE-vel láncolva: 25 tűzfal rootolása éles rendszereken

Október 25-én a Dream kutatói olyan nyomokra bukkantak, amelyek egy kínai, mesterséges intelligenciával támogatott kampányra utaltak. A támadók 25 szervert rootoltak, köztük egy amerikai kormányzati kapcsolódású környezet rendszereit is. A támadó a PHP2Shell exploitot kombinálta egy kernel jogosultságkiterjesztő exploittal, és így tört be a kitett rendszerekre.

Az érintett eszközök egy nagy gyártó tűzfal szoftverének bizonyos verzióit futtatják. Biztonsági okokból nem hozzuk nyilvánosságra sem a gyártó nevét, sem az érintett verziókat, a gyártót azonban értesítették.

A támadó ezután az Active Directory ellen indított támadásokat. A visszanyert nyomok igazolják, hogy kiszivárogtatták a hitelesítő adatokat, és feltérképezték a címtárat.

A művelet jól mutatja, hogy egy kitett menedzsment felület hogyan válhat kapuvá egy szervezet identitás-infrastruktúrája felé. Kormányzati védők számára a sebezhetőség felfedezése csak a kezdet. A valódi kihívás onnan indul, hogy nemcsak a sérülékeny rendszereket kell azonosítani, hanem azt is meg kell érteni és korlátozni, milyen hozzáférést tesz lehetővé egy sikeres kompromittálás.

Az alábbi kutatást proaktív fenyegetésvadászat során végezték a Dream autonóm kiberkutató termékével, a Hero-val.

Felfedezés

A Dream kutatói egy teljes támadási műveletet azonosítottak, amelyben egy egyedileg testre szabott PHP2Shell exploitlánc (CVE-2026-109618/CVE-2026-109619) szerepelt, összekapcsolva a Fragnesia kernel jogosultságkiterjesztéssel (CVE-2026-46300), célpontlistákkal, exploit naplókkal és mintegy 40 egyedi, utólagos kihasználást végző script-tel.

Olyan kampány nyomai is előkerültek, amely 25 szervert rootolt az Egyesült Államokban, Japánban, Tajvanon és Dél-Koreában. Miután root jogot szerzett, a támadó három konkrét szerverre összpontosított egy amerikai kormányzati kapcsolódású környezetben.

A felfedezett nyomok alapján a művelet egy laboratóriumi exploitfejlesztéssel indult, és egy amerikai kormányzati szervezet belső Active Directory tartományához fenntartott, tartós hozzáféréssel ért véget.

MI használata a támadásban

A támadási infrastruktúrában az MI-alapú eszközhasználat több jelét is megfigyeltük:

  • Telepítették a Claude Code-ot
  • Beállítottak egy aiscan nevű, MI-alapú támadó biztonsági platformot a kínai DeepSeek és Kimi LLM-ekkel
  • Jelen voltak API kulcsok a kínai FOFA felderítő platformhoz

Bár nincs közvetlen bizonyítékunk arra, hogy az MI-eszközöket kifejezetten az exploit vagy az utólagos kihasználást végző scriptek megírására használták, a kód felépítése, a kommentelés stílusa és a mintegy 40 script közötti következetesség MI-vel támogatott fejlesztésre utal. Ugyanakkor ez a művelet nem tűnik teljesen autonóm, állami hátterű támadásnak.

Az exploit: két sebezhetőség egyetlen kérésbe láncolva

A támadó két külön exploitot fejlesztett, majd összeláncolta őket, így bármelyik, egy nagy gyártó tűzfal­szoftverének bizonyos verzióit futtató tűzfalon root jogot tudott szerezni. Minderre egyetlen, hitelesítés nélküli HTTP kérésből volt képes.

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) — távoli kódfuttatás

Az általunk visszafejtett exploit egy egyedi, nem nyilvános build. Nem egyezik egyetlen ismert, nyilvános PHP2Shell exploittal sem. Ugyanarra az alapelvre épül, de láthatóan önállóan fejlesztették, és kifejezetten a célba vett tűzfalplatformra szabták.

A sebezhetőség a PHP session.upload_progress mechanizmusát támadja a tűzfal appweb menedzsment szerverén. A tűzfal operációs rendszere PHP 8.0.30-at használ magas memóriakorláttal, ami lehetővé teszi a támadás memóriakorrupciós fázisait.

A támadás négy, gondosan összehangolt lépésből áll:

  • A1 — Memóriakimerítés (~383 MB): A támadó speciálisan összeállított multipart POST kérésekkel árasztja el a szervert. Ezek óriási fájlneveket és session progress adatokat tartalmaznak. Így a PHP memóriakezelője a határáig terhelődik, és a rendszer jól előre jelezhető memórialayoutba kényszerül.
  • B1 — Információszivárgás: A második kérés meghamisítja az A1-ből származó, elavult session ID hosszát, és ezzel out-of-bounds olvasást kényszerít ki. A szerver Set-Cookie válaszfejléce hordozza a kiszivárgott mutatóértéket, ami megadja a támadónak a libphp.so báziscímét a futó folyamatban.
  • A2 — Elavult referencia előkészítése (~500 MB): Egy újabb memóriaterhelés inicializál egy sessiont, amelyben a http_session_vars élő zend_reference marad. Ezután egy második OOM állapot mod_data=NULL értéket hagy maga után, így jön létre az a „stale” referencia, amelyet a támadó a B2 fázisban meghamisíthat.
  • B2 — Kódfuttatás: Az utolsó kérés egy PHP HashTable bejegyzést hamisít meg a felszabadított memóriaterületen. A hamis bejegyzés pDestructor callbackje a zif_systemre (a PHP system() függvénye) mutat, az adatrész pedig egy shell parancssor karakterláncra. Amikor a PHP takarító rutinja bejárja a HashTable-t, meghívja a hamis destruktort, így tetszőleges parancsot futtat a nobody felhasználó nevében.

Fragnesia (CVE-2026-46300) — kernel jogosultságkiterjesztés

Önmagában a nobody felhasználóként elért kódfuttatás nem elég, mert az SELinux httpd_t kontextusban erősen korlátozza a rendszerfájlok módosítását. A root jog megszerzéséhez a támadó egy második exploitot is bevetett: egy Linux kernel sebezhetőséget az XFRM ESP-in-TCP alrendszerben.

A Fragnesia page-cache írásokat használ, hogy felülírja az /etc/pam.d/su fájlt, és az eredeti hitelesítési szabályokat pam_permit.so-ra (mindent elfogad) cserélje. Mivel a PAM fájl mindössze 774 bájtos, az exploit bájtonkénti „splicing” változatot alkalmaz a pontos felülíráshoz. A módosítás után a su root jelszó nélkül is sikerrel jár.

A két exploit egyetlen B2 HTTP kérésen belül fut le. A teljes lánc – a hitelesítés nélküli HTTPS kapcsolattól a tartós root webshellig – kevesebb mint 15 perc alatt végigfut.

A labor: verzióprofilozás nagyban

Az exploit nem egyetlen „eldobható” payload. Pontos memóriaoffsetekre van szüksége, amelyek tűzfal-OS verziónként eltérnek – ilyen például a zval_ptr_dtor címe, a zif_system címe, a HashTable struktúrák mérete, illetve azok a memória-geometriai paraméterek, amelyek az egyes fázisokban a heap elrendezését szabályozzák.

A visszafejtett fájlok között 11 JSON verzióprofilt találtunk – minden egyes, laborban tesztelt tűzfal-OS verzióhoz egyet:

Minden profil tartalmazza az adott verzió libphp.so binárisából kinyert pontos offseteket – a könyvtárak SHA256 hashét, az ELF build ID-ket, valamint a memória-geometriai paramétereket (chunkméretek, feltöltési számok, ürítési számok, spray offsetek), amelyeket laboratóriumi teszteléssel hangoltak be.

Jól látszik a különbség a „kalibrált” és az „ideiglenes” profilok között. A kalibrált azt jelenti, hogy a támadó egy futó VM-en is kipróbálta az adott verziót, és megerősítette, hogy a memória-geometria működik. Az ideiglenes profilnál csak a binárisból számolták ki az offseteket, de élő rendszeren még nem ellenőrizték.

A kampány tölcsére: 19 000 felderített célpontból 25 sikeres exploit

Miután elkészült az exploit, és megvoltak a profilok 9 kihasználható verzióhoz, a támadó egy jól felépített célzókampányt indított:

1. fázis: Globális felderítés (19 000 célpont)

A FOFA – egy, a Shodanhoz hasonló kínai internetes eszközkereső – segítségével a támadó világszerte mintegy 19 000, internet felé nyitott, a célzott gyártótól származó tűzfalat azonosított. Ezek olyan eszközök voltak, amelyeknek a menedzsmentfelülete kilógott az internetre, és tanúsítvány-ujjlenyomatok, illetve HTTP-válaszok jellemzői alapján fel lehetett őket ismerni.

2. fázis: Verzió-ujjlenyomatvétel (5 000 élő)

Egy egyedi verziószkenner 200 párhuzamos szálon futott a 19 000 célponton, és felmérte, mely eszközök érhetők el ténylegesen, illetve pontosan milyen OS-verzió fut rajtuk. Körülbelül 5 000 eszköz válaszolt verzióinformációval.

3. fázis: Földrajzi és verzió szerinti szűrés (240 célpont)

Az 5 000 élő eszköz közül a támadó csak az Egyesült Államokban, Japánban, Tajvanon és Dél-Koreában található szervereket hagyta meg. Ezután tovább szűrt azokra a verziókra, amelyek illeszkedtek az exploit profiljaihoz (az újabb release ágakra, ahol PHP 8.0.30 futott). Így állt össze a végső, 240 tűzfalból álló célpontlista.

Mivel az Egyesült Államok, Japán, Tajvan és Dél-Korea a kínai állami hátterű kiberműveletek elsődleges stratégiai ellenfelei és hírszerzési célpontjai a csendes-óceáni térségben, ez erősen utal egy potenciális állami szereplőre.

4. fázis: Automatizált kihasználás (24 rootolt)

A 240 célpontot egy automatizált batch futtató kapta meg, amely egyszerre öt eszközt támadott, célpontonként 1800 másodperces (30 perces) timeouttal. Minden sikeres támadásnál a batch a következőket hajtotta végre:

  • Végigfuttatta a teljes PHP2Shell + Fragnesia láncot
  • Elhelyezett egy 103 bájtos PHP root webshellt a tűzfal egy nyilvánosan elérhető könyvtárában
  • Root jogosultságot ellenőrzött az id parancs webshellen keresztüli futtatásával

Rögzítette a célpont hostnevét és IP-címét egy sikeres találatokat tartalmazó CSV-ben

Tovább lépett a következő célpontra

Ezen a ponton 24 tűzfalat rootolt sikeresen.

5. fázis: Triage (2 tűzfal kapott prioritást)

A 24 rootolt tűzfalból 22 esetében a támadó nem tett semmit azon túl, hogy elhelyezte a webshellt. Nem épített ki perzisztenciát, nem hozott létre alagutakat, nem telepített utólagos kihasználást segítő eszközöket. A szerverek gyakorlatilag a birtokában voltak, de „parkolta” őket, így bármikor vissza tudott térni a webshellen keresztül.

Két szerver, amelyek láthatóan ugyanahhoz a célponthoz tartoztak, túljutott ezen a fázison. Úgy tűnt, mindkettő egy amerikai kormányzati kapcsolódású környezet része.

6. fázis: A pivot (váltás a tűzfalról a tartományra)

A 24 rootolt tűzfal közül kettő egy amerikai kormányzati kapcsolódású szervezethez tartozott. Az első tűzfalról kinyert futó konfiguráció olyan jellemzőket mutatott, amelyek kormányzati kötődésre utaltak: CAC (Common Access Card) alapú hitelesítés, egy jellegzetes névprefix, valamint szabványos, kormányzati stílusú eszköznév-séma. A konfigurációs fájl tartalmazta a szervezet teljes belső hálózati topológiáját: tartományvezérlőket, egy központi tűzfalmenedzsment szervert, egy Keycloak SSO szervert, egy GitLab példányt, VPN átjárókat és az Active Directory tartományt.

Az első tűzfalat október 23-án 18:14 UTC-kor rootolta az automatizált batch futtatás közben. Röviddel ezután azonban összeomlott – feltehetően a ~900 MB-nyi exploit forgalom miatt – és soha nem állt helyre. A támadó két órán át 240 automatizált próbával figyelte, hogy visszatér-e. Nem tért vissza. A második tűzfal, amelynek tanúsítványadatai egyértelműen a célzott szervezethez kötötték, az eredeti batch során timeoutba futott.

Miután az első tűzfal konfigurációjából felmérte a szervezet értékét, a támadó egy külön, dedikált kampányt indított, és október 24-én 10:09 UTC-kor sikeresen kihasználta a sebezhetőséget.

Néhány órán belül a támadó:

Tartós alagutat épített ki a belső hálózat felé.

Egy 8 portot használó reverse SSH alagút kötötte össze a kompromittált tűzfalat az üzemeltető infrastruktúrájával, és továbbította az elérést az alábbiakhoz:

  • Tartományvezérlők (LDAP, LDAPS, RDP)
  • A belső tűzfalmenedzsment szerver
  • VPN infrastruktúra
  • Egy SOCKS5 proxy tetszőleges belső hálózati eléréshez

Az alagutat egy systemd szolgáltatás és egy rc.local boot hook csomagolta körbe – túléli az újraindításokat, és automatikusan újracsatlakozik.

A menedzsment szerver kihasználása az alagúton keresztül. 11:35 UTC-kor, kevesebb mint 90 perccel a második tűzfal rootolása után a támadó az újonnan szerzett szerverhozzáférést, valamint ugyanazt a PHP2Shell + Fragnesia láncot használta egy harmadik kormányzati szerver ellen – a belső tűzfalmenedzsment szerver ellen, amely csak az alagúton át volt elérhető. Ez a szerver központilag kezeli a szervezet összes tűzfalát. A kompromittálásával a támadó hozzáférést szerzett az összes menedzselt tűzfal konfigurációjához, hitelesítő adataihoz és hálózati beállításaihoz. Ezzel a kihasznált szerverek száma 25-re nőtt.

AD támadókampány indítása a menedzsment szerverről. Mivel a menedzsment szerver már rendelkezett LDAP kapcsolattal az Active Directoryhoz (erre van szüksége a VPN-felhasználók hitelesítéséhez), a támadó ezt használta kiindulópontként a tartomány elleni támadásokhoz:

  • Visszafejtette az LDAP szolgáltatásfiók jelszavát – az eszköz konfigurációja titkosítva tárolja, de root jogosultsággal a támadó hozzáfér a mesterkulcshoz. A jelszót kiolvasta tiszta szövegként, és beégette minden további scriptbe.
  • LDAP lekérdezésekkel felsorolta a tartomány összes felhasználóját és csoportját.
  • Jelszószórást indított minden felhasználói fiók ellen, a szervezetre jellemző jelszavakkal. A tartományban lockoutThreshold=0 volt beállítva, vagyis nem volt fiókzárolás, így korlátlan számú próbálkozást tehetett.
  • Megpróbált hátsó ajtóként szolgáló AD fiókokat létrehozni – egy felhasználói fiókot (minden OU-ban próbálkozott), valamint egy gépfiókot (a MachineAccountQuota alapértelmezett beállítását kihasználva).
  • Elemezte az AD ACL láncokat jogosultságnövelési útvonalak után kutatva.
  • Megpróbálta kinyerni a SAML aláíró kulcsot a Keycloak IdP konfigurációjából.
  • Próbálkozott a Keycloak SSO hitelesítésének megkerülésével.

A támadás eredményei – hogy a jelszószórás talált-e érvényes hitelesítő adatokat, létrejöttek-e a hátsó ajtós fiókok, vagy sikerült-e SAML kulcsokat kinyerni – a menedzsment szerver helyi fájlrendszerén maradtak, és nem tartoztak azok közé az artefaktumok közé, amelyeket sikerült begyűjtenünk. Emiatt nem tudjuk pontosan megállapítani a kompromittálás teljes mértékét.

Menedzsment szerver → Active Directory

Mi van most a támadó kezében?

A visszanyert artefaktumok alapján biztosan állíthatjuk, hogy a támadó rendelkezik a következőkkel:

  • Tartós, távoli hozzáférés a szervezet belső hálózatához egy újraindítást túlélő reverse alagúton és SOCKS proxy-n keresztül – nagy valószínűséggel még mindig aktív
  • Root webshell két tűzfalon és a tűzfalmenedzsment szerveren – nagy valószínűséggel még mindig aktív
  • Az Active Directory teljes felhasználói és csoportlistája – a szervezet teljes felépítésének térképe
  • Visszafejtett LDAP szolgáltatásfiók hitelesítő adatok – bármikor lehetővé teszik a közvetlen AD lekérdezéseket
  • A tűzfal fájlrendszeréről begyűjtött privát kulcsok – HA replikációs kulcsok, SSL/TLS tanúsítványkulcsok és eszközhitelesítési kulcsok
  • Teljes hálózati topológia – minden IP-cím, hostnév, alhálózat, szerver szerepkör és VPN gateway
  • SAML IdP konfiguráció gyenge biztonsági beállításokkal (validate-idp-certificate: no)

22 további, az USA-ban, Japánban, Tajvanon és Dél-Koreában található „parkolt” tűzfal – bármikor bevethetők egy újabb támadáshoz

Nem tudjuk megállapítani, hogy a jelszószórás, a hátsó ajtós fiókok létrehozása vagy a SAML kulcsok kinyerése sikerrel járt-e. Ha bármelyik támadás működött, a kompromittálás messze túlnyúlik a peremvédelmi tűzfalakon, és eléri a szervezet teljes identitáskezelő infrastruktúráját.

Összegzés

A művelet előkészítése és kivitelezése messze meghaladja az alkalmi, „adódó lehetőségeket” kihasználó támadások szintjét. A támadó komoly munkát fektetett a sebezhetőség kutatásába: megszerezte a gyártó firmware-ét, visszafejtette, kinyerte a PHP könyvtárakat, pontos memória­profilokat épített 9 különböző szoftververzióhoz, és laborban finomhangolta az exploit geometriáját. Maga a kihasználás automatizált és hatékony volt: egyetlen körben 240 célpontot támadott, a rendszer pedig automatikusan választotta ki a verzióspecifikus profilokat.

A célpontválasztás egyértelműen a kormányzati rendszerekre koncentrált.

A támadó 19 000 tűzfalat szkennelt, 24-et rootolt, és azonnal kiszúrta azt a kettőt, amely igazán számított. Néhány órával azután, hogy kompromittált egy amerikai kormányzati kapcsolódású tűzfalat, már be is alagútazott a belső hálózatba, ugyanazzal a PHP2Shell exploittal feltört egy harmadik szervert, és teljes körű Active Directory támadási kampányt indított – mindezt egy olyan láncon keresztül, amely egyetlen, hitelesítés nélküli HTTPS kérésből indult ki egy menedzsment felület felé, amelyet eleve nem lett volna szabad az internetre kitenni.

A másik 22 rootolt tűzfal továbbra is „parkol”, aktív webshell-lel. Az amerikai kormányzati szervezet felé kiépített tartós alagút nagy valószínűséggel még mindig működik. A támadó pedig továbbra is rendelkezik 19 000 ujjlenyomatozott célponttal, amelyekhez bármikor visszatérhet, ahogy újabb operációs rendszer verziókhoz készít profilokat.

Ahogy mindig, most is azt javasoljuk, hogy a szervezetek minél gyorsabban telepítsék a vonatkozó javítócsomagokat. További részletekért kövessék a gyártó útmutatását ezzel a problémával kapcsolatban.

A felfedezés és védekezés közötti rés szűkítése

Kormányzati és kritikus infrastruktúrák esetében egy sebezhetőség megtalálása csak a kezdet. A védőknek fel kell deríteniük a kitett rendszereket, meg kell érteniük, mit tudnak a támadók ténylegesen kihasználni, és lépniük kell, mielőtt a kezdeti lábnyom szélesebb körű kompromittálássá válik.

A Dream ezt a kihívást két, egymást kiegészítő kiberbiztonsági platformmal kezeli:

  • A Sphere országos szintre méretezi a kiber­védelmet. Feltérképezi a kitettséget, rangsorolja a kockázatokat, és észleli, illetve kezeli a támadásokat a kormányzati hálózatokon, az adott ország fenyegetéseihez és infrastruktúrájához igazítva.
  • A Hero a kiberkutatást méretezi fel. Autonóm kutatóügynökei segítik a szakértőket a fenyegetések vizsgálatában, a sebezhetőségek felderítésében és megerősítésében – még forráskód nélküli szoftverekben is –, valamint az elhárítási útmutatók és javítócsomagok kidolgozásában. Ezt az eszközt használták a Dream kutatói a jelen bejegyzésben ismertetett vizsgálat során.

Együtt hidat képeznek a mélyebb vizsgálat és a védekezés között a teljes nemzeti támadási felületen.