Skip to main content

Filament CVE-2026-55409

HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-06-17 https://github.com/filamentphp/filament GHSA-m9cv-24rx-8mv7
7.6
CVSS 3.1 · Vendor: https://github.com/filamentphp/filament
Share

Severity by source

Vendor (https://github.com/filamentphp/filament) PRIMARY
7.6 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
vuln.today AI
7.6 HIGH

Network-reachable stored XSS requiring a low-privileged author (PR:L) and a victim viewing the disabled form (UI:R); script in victim's browser yields scope change with high confidentiality and limited integrity impact.

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

Primary rating from Vendor (https://github.com/filamentphp/filament).

CVSS VectorVendor: https://github.com/filamentphp/filament

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
Low
Availability
None

Lifecycle Timeline

2
Source Code Evidence Fetched
Jun 18, 2026 - 01:37 vuln.today
Analysis Generated
Jun 18, 2026 - 01:37 vuln.today

DescriptionCVE.org

In Filament v3, a disabled RichEditor field rendered its raw state without sanitizing HTML. Where the data stored in this field's state isn't sanitized already when the form state was filled, an attacker could plant malicious HTML or JavaScript and achieve XSS that executes for users who view the form.

Please note that Filament v4 and above does not use the same mechanism for rendering a disabled RichEditor so this advisory does not apply.

AnalysisAI

Stored XSS in Filament v3 PHP admin panel framework occurs when a RichEditor form field is rendered in disabled mode, because the disabled view binds raw state via Alpine's x-html directive without HTML sanitization. Authenticated attackers who can write into the underlying field state can plant HTML or JavaScript that executes in the browser of any user later viewing the form, with no public exploit identified at time of analysis and no KEV listing.

Technical ContextAI

Filament is a TALL-stack (Tailwind, Alpine, Laravel, Livewire) admin panel and form builder distributed as the Composer package filamentphp/filament (CPE pkg:composer/filament_forms). The vulnerable code path is packages/forms/resources/views/components/rich-editor.blade.php, where the disabled-state branch wrapped the entangled Livewire state in an Alpine x-data block and rendered it through x-html="state", causing the DOM to interpret stored HTML attributes such as onerror as live script. This is a textbook CWE-79 (Improper Neutralization of Input During Web Page Generation) instance: the framework trusted that upstream code had pre-sanitized the persisted RichEditor content, but provided no defense-in-depth at render time. The fix replaces the Alpine x-html binding with a server-side Blade echo through Filament's str()->sanitizeHtml() helper, neutralizing event-handler attributes and script payloads before they reach the browser.

RemediationAI

Vendor-released patch: Filament 3.3.53 - upgrade filamentphp/filament (and the forms sub-package) via composer update filamentphp/filament:^3.3.53, referencing the release at https://github.com/filamentphp/filament/releases/tag/v3.3.53 and the fix in https://github.com/filamentphp/filament/pull/20029. If upgrading immediately is not possible, sanitize RichEditor content at write time using a server-side HTML sanitizer (for example HTMLPurifier or Laravel's str()->sanitizeHtml()) inside model mutators or form afterStateUpdated hooks, or avoid using ->disabled() on RichEditor fields and switch to a read-only Placeholder/View component that renders escaped text - note that this changes UX and loses formatting. Restricting who can author content into RichEditor-backed columns reduces, but does not eliminate, exposure since any historical unsanitized data remains dangerous on render.

Share

CVE-2026-55409 vulnerability details – vuln.today

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