Új WordPress pre-auth XSS sebezhetőség PHP-kódfuttatáshoz vezethet – frissíts azonnal

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

A WordPress kijavított egy előzetes hitelesítés nélküli, visszaverődő cross-site scripting (XSS) sebezhetőséget a bejelentkező felületén, amely a tartalomkezelő rendszer minden verzióját érinti. A pwn.ai bemutatta, hogyan lehet a hibát úgy összefűzni, hogy a szerveren PHP-kód futását érjék el, amikor egy bejelentkezett adminisztrátor egy támadó által irányított oldallal lép interakcióba.

A CVE-2026-64638 azonosítót kapott, 8,9-es CVSS pontszámú, súlyos sebezhetőség kihasználásához a támadónak nincs szüksége jogosultságokra. A hibát felfedező és a technikai részleteket a The Hacker News-szal megosztó pwn.ai szerint a bejelentkező oldal XSS sebezhetősége nem igényel hitelesítést. Ha az ügyesen megfogalmazott felhasználónév eljut a sikertelen bejelentkezést jelző hibaoldalig, az így létrejövő JavaScript a látogató böngészőjében lefut, további interakció nélkül azon az oldalon.

A kódfuttatáshoz vezető lánc olyan áldozatot igényel, aki már adminisztrátorként be van jelentkezve, és kifejezetten interakcióba lép egy támadó által irányított oldallal. A pwn.ai demonstrációjában ez az interakció egyetlen, teljesen hétköznapi kattintás volt.

A kutatók a The Hacker News-nak elmondták, hogy a támadás alapértelmezett WordPress telepítések ellen is működik, és nem igényel szokatlan hoszting- vagy telepítési beállításokat. Több útvonalat is találtak az XSS-től a kódfuttatásig, köztük olyan változatokat, amelyek egy bővítmény telepítésével vagy egy tetszőleges ZIP-fájl feltöltésével érik el a célt.

A WordPress saját figyelmeztetése óvatosabban értékeli a sebezhetőség kihasználhatóságát. Kiemeli, hogy a távoli kódfuttatásra (RCE) való eszkaláció olyan feltételektől függ, amelyek a támadó számára nem irányíthatók, és sikeres social engineeringet, valamint az áldozat kifejezett interakcióját igénylik.

A problémát augusztus 6-án javították a WordPress 7.0.3 kiadásban, a javításokat pedig visszavezették egészen a 4.7-es ágig. A WordPress azonnali frissítést javasol, az automatikus háttérfrissítést támogató oldalaknak pedig automatikusan meg kell kapniuk a security kiadást. A 4.7-nél régebbi verziók továbbra is érintettek, de már nem tartoznak a projekt aktuális visszaportolási körébe.

A kutatók, akik az egész támadási láncot XSS2Shell néven emlegetik, elmondták, hogy autonóm rendszerük fedezte fel és reprodukálta a sebezhetőségi láncot, miután kiindulópontként megkapta Paulos Yibelo 2022-es Same Origin Method Execution (SOME) kutatását.

A cég szerint a munka közel négy napig tartott, nyílt forráskódú modellekkel és több ügynökből álló workflow-val. A láncot július 26-án sikerült reprodukálniuk, és másnap jelentették a WordPressnek.

A hiba onnan indul, ahogyan a WordPress a sikertelen bejelentkezéskor megadott felhasználónevet kezeli. A kutatók szerint az érték először a sanitize_user() és a wp_strip_all_tags() függvényen megy át, utóbbi a PHP strip_tags() függvényére támaszkodik. Egy olyan, tag-szerű szöveg, amelyben a nyitó < jel után szóköz szerepel, ezen az elemzőn szövegként átcsúszhat. Később a WordPress a wp_kses_post() függvényen is átengedi az értéket, amelynek külön parser-e ugyanazt a bemenetet engedélyezett HTML-ként értelmezi. Így a sikertelen bejelentkezési oldalon támadó által vezérelt, élő DOM-elemek jelenhetnek meg.

Ezek az elemek ezután kölcsönhatásba lépnek a WordPress saját user-profile.js állományával, egy profilkezelő script-tel, amely a jelszó-visszaállítás miatt a bejelentkező oldalon is betöltődik.

A script által várt egyes profil-elemek ezen az oldalon hiányoznak: két hiányzó input is undefined értékre fut ki, ami miatt egy egyenlőségvizsgálat átmehet, miközben a normál esetben undefined ajaxurl változót egy befecskendezett DOM-elemmel felül lehet írni. Így a WordPress saját JavaScriptje egy támadó által választott, azonos eredetű REST kérés felé terelhető.

A kutatók a WordPress REST JSONP támogatását használják fel arra, hogy ebből a kérésből olyan JavaScript legyen, amely a webhely eredetén fut. Azoknál a telepítéseknél, ahol a névtelen REST kérések HTTP 401 választ adnak, az _envelope=1 paraméter a megtagadást egy külső HTTP 200 válaszba csomagolhatja, így a jQuery továbbra is scriptként dolgozza fel a választ.

A tesztek során azt is megállapították, hogy egy nonce-alapú, strict-dynamic direktívát használó Content Security Policy sem blokkolta a bemutatott támadási útvonalat.

Az XSS-től a PHP-kódfuttatásig vezető lánc Yibelo korábbi SOME technikájára épül, amely egy engedélyezett JSONP property-láncot használ fel arra, hogy egy másik böngészőablakban metódust hívjon meg.

A pwn.ai által bemutatott egyik útvonal a WordPress-eredetű XSS-t használja arra, hogy egy bejelentkezett adminisztrátor munkamenetében meghívja a natív Application Password jóváhagyó vezérlőt. A WordPress ezután létrehoz egy API-hitelesítési adatot, és átirányítja azt egy támadó által választott HTTPS success_url címre.

Az Application Passwords visszavonható, API-hozzáférésre szánt hitelesítési adatok, ezért ezen az útvonalon nincs szükség az adminisztrátor elsődleges jelszavának ellopására. A kutatók ezt a hitelesítési adatot használták fel hitelesített REST hozzáféréshez, hogy közzétegyenek egy WordPress oldalt, amely azonos eredetű JavaScriptet tartalmazott. Amikor a még érvényes adminisztrátori munkamenet megnyitotta az oldalt, a script megszerezte a WordPress plugin-feltöltési nonce értékét, és feltöltött egy támadó által készített ZIP-et. A kicsomagolt pluginból közvetlenül lehetett PHP-t kérni. A plugint nem kellett aktiválni.

A The Hacker Newsnak átadott, éles környezetből származó bizonyíték az XSS-nél megáll. A kutatók külön is reprodukálták a sütik nélküli, bejelentkező oldali XSS-t két WordPress 7.0.2 telepítésen, friss Chrome profilokkal, WordPress sütik és hitelesítési adatok nélkül.

A kutatók ezeken a rendszereken nem próbáltak Application Passwordöt létrehozni, fájlokat feltölteni, tartós jelenlétet kiépíteni vagy PHP-kódot futtatni. A teljes, PHP-futtatásig tartó láncot külön, egy tiszta, helyi WordPress 7.0.2 telepítésen mutatták be.

Hangsúlyozták, hogy a WordPress ismert megerősítési lépései önmagukban nem jelentik a mögöttes XSS teljes kivédését, ezért mindenképpen szükséges a biztonsági frissítés telepítése.

Egy sikeres PHP-kódfuttatás felfedné a WordPress adatbázis-hitelesítési adatait a wp-config.php fájlban, lehetővé tenné tartós adminisztrátori fiók létrehozását és a tartalom módosítását, hozzáférést adna a PHP worker által olvasható fájlokhoz és titkokhoz, és operációs rendszer szintű parancsok futtatását tenné lehetővé a worker jogosultságaival.

WordPress a pwn.ai csapatát ismerte el a sebezhetőség felfedezéséért és felelős bejelentéséért. Augusztus 7-ig a projekt biztonsági közleménye nem számolt be arról, hogy a hibát aktívan kihasználnák.