Čo sa deje
WordPress opravil pred-autentifikačnú reflektovanú XSS zraniteľnosť na prihlasovacej obrazovke, ktorá postihuje každú verziu systému. Výskumníci z pwn.ai ukázali, ako sa dá reťaz zneužitia rozšíriť až na spustenie PHP kódu na serveri, ak prihlásený administrátor interaguje s útočníkom kontrolovanou stránkou.
Zraniteľnosť
Označená ako CVE-2026-64638 (CVSS skóre 8.9), vysoko závažná zraniteľnosť nevyžaduje žiadne oprávnenia útočníka. XSS na prihlasovacej stránke nevyžaduje autentifikáciu — stačí, aby vytvorené používateľské meno skončilo na chybovej stránke po neúspešnom prihlásení, a výsledný JavaScript sa spustí v prehliadači návštevníka bez ďalšej interakcie.
Cesta k spusteniu kódu
Táto časť si vyžaduje obeť už prihlásenú ako Administrátor a jej explicitnú interakciu s útočníkovou stránkou — v demonštrácii pwn.ai stačilo jedno bežné kliknutie. Útok funguje proti štandardným inštaláciám WordPressu bez nutnosti nezvyčajného hostingu. Výskumníci uvádzajú viacero ciest od XSS k spusteniu kódu, vrátane variantov inštalujúcich plugin alebo nahrávajúcich ľubovoľný ZIP súbor.
Samotný WordPress je k zneužiteľnosti opatrnejší — jeho advisory upozorňuje, že eskalácia na RCE závisí od podmienok mimo kontroly útočníka a vyžaduje úspešný social engineering plus explicitnú interakciu obete.
Ako to technicky funguje
Chyba začína v spracovaní používateľského mena z neúspešného prihlásenia. Hodnota prechádza cez sanitize_user() a wp_strip_all_tags() (postavené na PHP funkcii strip_tags()), pričom reťazec podobný tagu s medzerou po otváracom < dokáže týmto parserom prejsť ako text. Neskôr WordPress spracuje rovnakú hodnotu cez wp_kses_post(), ktorého iný parser ju interpretuje ako povolené HTML — výsledkom sú útočníkom kontrolované živé DOM elementy priamo na stránke.
Tieto elementy potom interagujú s WordPressovým user-profile.js, skriptom pre správu profilu, ktorý sa načítava aj na prihlasovacej stránke (kvôli obnove hesla). Chýbajúce vstupy sa vyhodnotia ako undefined, čo prejde kontrolou rovnosti, a premenná ajaxurl sa dá prepísať injektovaným DOM elementom — to nasmeruje WordPressov vlastný JavaScript na REST požiadavku zvolenú útočníkom.
Výskumníci využili podporu JSONP v REST API WordPressu na premenu tejto požiadavky na JavaScript spustený v origin webu. Pri nasadeniach, kde anonymné REST požiadavky vracajú HTTP 401, parameter _envelope=1 zabalí zamietnutie do vonkajšej HTTP 200 odpovede, čo umožní jQuery pokračovať v spracovaní ako skriptu. Nonce-based Content Security Policy so strict-dynamic túto cestu podľa testov nezablokovala.
Demonštrovaný útok — od XSS po prevzatie servera
Jedna z ciest využíva XSS na vyvolanie natívneho ovládacieho prvku na schválenie Application Password priamo v relácii prihláseného administrátora. WordPress vytvorí API prihlasovacie údaje a presmeruje ich na útočníkom zvolenú HTTPS success_url. Keďže Application Passwords sú odvolateľné poverenia určené na API prístup, útok nepotrebuje ukradnúť hlavné heslo administrátora.
Výskumníci použili tieto poverenia na autentifikovaný REST prístup a publikovali stránku s JavaScriptom v rovnakom origin. Keď zachovaná relácia administrátora túto stránku otvorila, skript získal nonce pre nahrávanie pluginov a nahral útočníkom dodaný ZIP súbor. PHP potom bolo možné volať priamo z extrahovaného pluginu — bez nutnosti ho aktivovať.
Rozsah overenia
Dôkazy poskytnuté The Hacker News sa zastavujú pri XSS — výskumníci samostatne reprodukovali XSS bez cookies proti dvom nasadeniam WordPress 7.0.2 v čerstvých Chrome profiloch bez cookies či prihlasovacích údajov. Kompletnú reťaz až po spustenie PHP kódu demonštrovali samostatne na čistej lokálnej inštalácii WordPress 7.0.2.
Oprava a dopad
Chyba bola opravená 6. augusta vo verzii WordPress 7.0.3, s backportom až po vetvu 4.7. WordPress odporúča okamžitú aktualizáciu; weby s automatickými aktualizáciami na pozadí by ju mali dostať automaticky. Verzie staršie ako 4.7 zostávajú zraniteľné a sú mimo rozsahu backportu.
Úspešné spustenie PHP kódu by odhalilo databázové prihlasovacie údaje vo wp-config.php, umožnilo vytvorenie trvalého administrátorského účtu a zmeny obsahu, odhalilo súbory a tajomstvá čitateľné PHP workerom a umožnilo spúšťanie systémových príkazov s jeho oprávneniami.
Zaujímavosť k objavu
Výskumníci nazvali reťaz útoku XSS2Shell a uviedli, že ich autonómny systém objavil a zreprodukoval túto reťaz zraniteľností na základe Same Origin Method Execution (SOME) výskumu Paulosa Yibela z roku 2022. Práca trvala takmer štyri dni s open-source modelmi a multi-agentovým workflow — reťaz zreprodukovali 26. júla a nahlásili WordPressu nasledujúci deň.
WordPress ocenil tím pwn.ai za objavenie a zodpovedné nahlásenie zraniteľnosti. K 7. augustu advisory projektu neuvádza žiadne zneužitie v praxi.
Viac informácii:
https://thehackernews.com/2026/08/new-wordpress-pre-auth-xss-could-lead.html