Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSelf-register account with unauthenticated access
-
DeliverySubmit display name containing script payload
-
ExploitPayload stored in user name field
-
ExecutionAdmin opens Activity log Author filter
-
PersistUnescaped label executes script in admin session
-
ImpactPerform actions as administrator
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that open/self-service user registration be enabled, allowing an anonymous attacker to choose their own display name; the attacker sets a name containing '<'/'>' and script markup. The payload only fires when a privileged user views a view that renders the name through the vulnerable x-rpd::select-list component - specifically the Logs → Activity Author filter, and the users and permissions forms. Limiting factors: exploitation depends on administrator user interaction (UI:P) to open the affected view, impact is confined to the admin's browser session rather than the server, and instances where registration is closed or names are otherwise sanitized are not exposed. Versions 9.20.0 and later escape the labels and reject names containing '<' or '>'. |
| Impact | This is a stored (persistent) XSS (CWE-79) in the zofe/rapyd-admin Laravel admin package, affecting 9.4.0 before 9.20.0. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N, score 5.3) is internally consistent with the description: AV:N and PR:N reflect that any unauthenticated attacker can self-register, UI:P reflects that an administrator must passively view the Activity log Author filter for the payload to fire, and the impact is modeled on the subsequent system (SC:L/SI:L) - i.e. the admin's browser session - rather than the vulnerable component itself, with no direct VC/VI/VA. No EPSS score, KEV entry, or public exploit was provided in the input. Exploitation status is therefore 'no public exploit identified at time of analysis'; this is NOT confirmed active exploitation. Real-world risk is moderate-but-conditional rather than a drop-everything priority: the unauthenticated entry point is attractive, but exploitation is gated on open self-registration being enabled and on an administrator actually opening the affected filter/forms, and impact is limited to actions within the admin's authenticated session (which, given the companion account-takeover fixes in the same release, could be chained to meaningful damage). The product footprint is small (an open-source developer package), which tempers aggregate risk. Note the CWE/description say stored XSS while the base CVSS reports C:N/I:N on the vulnerable system - this is expected for XSS scored on the subsequent system and is not a contradiction. |
| Exploit ScenarioDerived | An attacker visits the open registration page of a Rapyd Admin instance and signs up with a display name containing a JavaScript/HTML payload instead of a real name. The malicious name is stored and later rendered unescaped in the select-list option labels of the Activity log Author filter (and the users/permissions forms); when an administrator opens that view, the script executes in the admin's authenticated session. No public proof-of-concept was provided in the input, though the fixing commit (acd6ee8) clearly documents the vulnerable sink. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Stored cross-site scripting in zofe/rapyd-admin (Rapyd Admin) 9.4.0 before 9.20.0 lets an unauthenticated attacker who can self-register pick a display name containing HTML/JavaScript, which the x-rpd::select-list Blade component renders unescaped and which then executes in a privileged administrator's browser session - specifically when the admin opens Logs → Activity (Author filter) or the users and permissions forms. The CVSS vector confirms PR:N (no authentication) but UI:P/UI:R, so exploitation depends on open self-service registration plus an administrator viewing the affected screen; impact is confined to the admin's browser session, consistent with the assessed CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N. There is no public exploit identified at time of analysis and the flaw is not in CISA KEV; the vendor addressed it in 9.20.0 by escaping the option labels and rejecting names containing '<' or '>'.
RemediationAI
Upgrade to Rapyd Admin 9.20.0 or later: the release tag v9.20.0 (fix contained in commit acd6ee85f9e5ccec67199673b039c605d161406a) escapes the x-rpd::select-list option labels and adds the CreateNewUser validation rule not_regex:/[<>]/ so display names can no longer contain angle brackets. If an immediate upgrade is not possible, the highest-value compensating control is to disable open/self-service registration so no attacker-controlled display name enters the system - accept the trade-off that legitimate users can no longer self-signup and must be provisioned by an administrator. As a partial mitigation, add server-side validation rejecting '<' and '>' (and HTML entities) in the name field on registration and profile updates, and audit existing user records for stored markup; note that validation alone does not fix other unescaped sinks, so it should not be treated as equivalent to the patch. Because the same vendor security release also fixed an account-takeover path via UsersModalEditEmbed/UsersEdit and a hard-coded default admin credential (admin@laravel / admin seeded by AuthSeeder), administrators on affected versions should additionally rotate or delete the admin@laravel account (or set RAPYD_ADMIN_PASSWORD) and review permissions, and verify no account has been silently promoted. Reference your deployment against the project release notes and the VulnCheck advisory (https://www.vulncheck.com/advisories/rapyd-admin-9.4.0-before-9.20.0-stored-xss-via-select-list-component) when confirming remediation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation / cross-site scripting) in a Laravel admin-panel package. User-supplied display names are stored verbatim at registration (the CreateNewUser Fortify action only enforced required/string/max:255) and then rendered as option labels by the x-rpd::select-list Blade component, which echoed the label raw instead of using Blade's auto-escaping ({{ }}) as the sibling x-rpd::select component does. Because the component is reused across admin screens - the Logs → Activity Author filter and the users and permissions forms - the payload persists in the database (stored/persistent XSS) and fires in the context of any administrator who opens one of those views. The same security release also hardened a second stored-XSS sink, x-rpd::rich-text, which piped browser-written rich-text values through a new rapyd_clean_html() helper backed by ezyang/htmlpurifier with an allow-list (rapyd.html_allowed), and bundled unrelated fixes (privilege escalation in UsersModalEditEmbed/UsersEdit and a hard-coded default admin account admin@laravel/admin in AuthSeeder). No CPE strings were supplied, but the code evidence pins the affected artifact to the zofe/rapyd-admin PHP package, with the vulnerable label rendering still present at resources/views/components/select-list.blade.php line 108 in v9.19.0.
Know when Laravel gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Unauthenticated self-registration gives PR:N; the admin must view the log so UI:R; the script runs in the admin's session, a different scope, so S:C with limited C:L/I:L and no availability impact.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
Rapyd Admin from 9.4.0 before 9.20.0 contains a stored cross-site scripting vulnerability that allows unauthenticated attackers to inject scripts through self-registered display names. Attackers can register with an HTML or JavaScript name rendered unescaped in the Activity log Author filter, executing in an administrator's session.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
In Laravel framework through 5.5.21, remote attackers can obtain sensitive information (such as externally usable passwo
Laravel Livewire v3 through v3.6.3 contains a critical remote code execution vulnerability (CVE-2025-54068, CVSS 9.8) th
LaRecipe versions prior to 2.8.1 contain a Server-Side Template Injection (SSTI) vulnerability that can lead to Remote C
File upload bypass in FreeScout 1.8.206 — patch bypass for CVE-2026-27636. PoC and patch available. CVSS 10.0.
Remote code execution in FreeScout prior to version 1.8.206 allows authenticated users to upload `.htaccess` files that
In Laravel Framework through 5.5.40 and 5.6.x through 5.6.29, remote code execution might occur as a result of an unseri
Dokans SaaS e-commerce platform v3.9.2 has a CVSS 10.0 authentication bypass allowing unauthenticated attackers to obtai
Predictable password reset tokens in FreeScout help desk before 1.8.206. Weak random number generation allows attackers
Bagisto eCommerce platform before 2.3.10 is vulnerable to server-side template injection (SSTI) through customer address
Bagisto eCommerce platform (2.3 branch before 2.3.10) leaves installation API routes active after setup, allowing unauth
A vulnerability was found in laravel 5.1 and classified as problematic. Rated critical severity (CVSS 9.8), this vulnera
Laravel TokenGuard authentication bypass is a genuine high-priority issue, not an inflated CVSS score: unauthenticated a
EUVD-2026-97888
GHSA-96m9-5rqq-wq2v
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB