Skip to main content

Rapyd Admin CVE-2026-109565

| EUVDEUVD-2026-97888 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-12 disclosure@vulncheck.com GHSA-96m9-5rqq-wq2v
5.3
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Self-register account with unauthenticated access
  2. Delivery
    Submit display name containing script payload
  3. Exploit
    Payload stored in user name field
  4. Execution
    Admin opens Activity log Author filter
  5. Persist
    Unescaped label executes script in admin session
  6. Impact
    Perform 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

rapyd-admin 9.4.0 <9.20.0

Affected Packages

euvd rapyd_admin fix: 9.20.0

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

Vendor (vulncheck) PRIMARY 5.3 MEDIUM
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
vuln.today AI 6.1 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 12, 2026 - 22:03 EUVD

DescriptionCVE.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

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Low
niche open-source Laravel admin/CRUD package, limited production footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2017-16894 HIGH POC
7.5 Nov 20

In Laravel framework through 5.5.21, remote attackers can obtain sensitive information (such as externally usable passwo

CVE-2025-54068 CRITICAL POC
9.8 Jul 17

Laravel Livewire v3 through v3.6.3 contains a critical remote code execution vulnerability (CVE-2025-54068, CVSS 9.8) th

CVE-2025-53833 CRITICAL POC
10.0 Jul 14

LaRecipe versions prior to 2.8.1 contain a Server-Side Template Injection (SSTI) vulnerability that can lead to Remote C

CVE-2026-28289 CRITICAL POC
10.0 Mar 03

File upload bypass in FreeScout 1.8.206 — patch bypass for CVE-2026-27636. PoC and patch available. CVSS 10.0.

CVE-2026-27636 HIGH POC
8.8 Feb 25

Remote code execution in FreeScout prior to version 1.8.206 allows authenticated users to upload `.htaccess` files that

CVE-2018-15133 HIGH POC
8.1 Aug 09

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

CVE-2025-70841 CRITICAL POC
10.0 Feb 03

Dokans SaaS e-commerce platform v3.9.2 has a CVSS 10.0 authentication bypass allowing unauthenticated attackers to obtai

CVE-2026-27637 CRITICAL POC
9.8 Feb 25

Predictable password reset tokens in FreeScout help desk before 1.8.206. Weak random number generation allows attackers

CVE-2026-21448 CRITICAL POC
9.8 Jan 02

Bagisto eCommerce platform before 2.3.10 is vulnerable to server-side template injection (SSTI) through customer address

CVE-2026-21446 CRITICAL POC
9.8 Jan 02

Bagisto eCommerce platform (2.3 branch before 2.3.10) leaves installation API routes active after setup, allowing unauth

CVE-2022-2870 CRITICAL POC
9.8 Aug 17

A vulnerability was found in laravel 5.1 and classified as problematic. Rated critical severity (CVSS 9.8), this vulnera

CVE-2026-114509 CRITICAL POC
9.2 Oct 21

Laravel TokenGuard authentication bypass is a genuine high-priority issue, not an inflated CVSS score: unauthenticated a

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy