@payloadcms/next has Stored XSS in Admin PanelGHSA-mmxc-95ch-2j7c
HIGHGHSA-mmxc-95ch-2j7c is a high-severity (CVSS 8.7) Cross-site Scripting (XSS) vulnerability in @payloadcms/next. A fix is available for @payloadcms/next — see the affected versions and patch details below.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.
@payloadcms/nextnpmDescription
Impact
A stored Cross-site Scripting (XSS) vulnerability existed in the admin panel. An authenticated user with write access to a collection could save content that, when viewed by another user, would execute in their browser.
Consumers are affected if ALL of these are true:
- Payload version < v3.78.0
- At least one collection with versions enabled
- An authenticated user has
createorupdateaccess to that collection
Patches
This vulnerability has been patched in v3.78.0. Output encoding has been added to prevent user-supplied content from being interpreted as markup.
Users should upgrade to v3.78.0 or later.
Workarounds
If consumers cannot upgrade immediately:
- Restrict
createandupdateaccess to versioned collections to trusted roles only.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | @payloadcms/next | all versions | 3.78.0npm install @payloadcms/next@3.78.0 |
Affected Products
payloadpayloadcmsDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for @payloadcms/next, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update @payloadcms/next to 3.78.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-mmxc-95ch-2j7c is resolved across your whole dependency graph.
Workarounds
Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.
Frequently Asked Questions
Is GHSA-mmxc-95ch-2j7c in your dependencies?
Find it across npm, including transitive dependencies.