Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege author
-
DeliverySubmit article with crafted content payload
-
ExploitPayload stored via insertData unsanitized
-
ExecutionReviewer/admin opens content in backend
-
PersistScript executes in victim's session
-
ImpactHijack privileged CMS session
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 an authenticated account with privilege to submit/author article content (PR:L) - not anonymous: the attacker injects a payload into the rich-text content argument handled by ModelDataService.insertData (articles/detail.html, Content Rendering component), which is stored without sanitization. Execution additionally requires victim interaction (UI:P): a reviewer or administrator must view the stored content in the backend, where the template renders ${info.content} raw in the same session domain, as the patch comments explicitly describe. Limiting factors: exploitation is bounded by the need for a submission-capable account AND a privileged user opening the malicious content; the payload does not fire against anonymous visitors on its own, and the pre-patch render-side filtering in the review drawer may partially blunt some vectors though it does not clean the stored value. |
| Impact | This is a stored (persistent) cross-site scripting flaw (CWE-79) in sunkaifei FlyCMS, rated moderate at CVSS 5.1 under the vendor-supplied CVSS 4.0 vector CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N. The signals are internally consistent and point to a real-but-bounded issue rather than a mass-exploitation emergency: network attack vector and low complexity make the injection easy to deliver, but PR:L means the attacker must already hold a (low-privilege) authenticated account able to submit article content, and UI:P means a victim - per the patch's own code comments, a reviewer or administrator viewing the submission in the backend - must open the poisoned content for the payload to fire. The vendor/VulDB decision label is 'this_month' (not act_now/emergency), which matches the picture. KEV status is NOT listed and no EPSS score was provided, so there is no evidence of active or automated exploitation; the only exploitation signal is a public PoC reference (a GitHub issue) that is not verified as working exploit code. The source-code evidence corroborates the mechanism strongly: the fix adds a server-side Jsoup ContentSanitizer because the front-end template emits ${info.content} raw, confirming a genuine stored-XSS channel into the same session domain used by reviewers and admins. Net: a legitimate flaw worth patching on a normal cycle, not a drop-everything priority, and its impact (admin/reviewer session in the CMS backend) can be more serious than the modest base score implies if a high-privilege user is the one who views the content. |
| Exploit ScenarioDerived | A user with a low-privilege authoring account submits an article whose rich-text content embeds a malicious payload (e.g. a <script>, an onerror handler, or a javascript: pseudo-protocol), which ModelDataService.insertData stores unsanitized. When a reviewer or administrator later opens that content in the backend - which renders ${info.content} raw in articles/detail.html - the script executes in their authenticated session. A public PoC reference exists (GitHub issue #18); it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 10, 2026
Stored cross-site scripting in FlyCMS allows users who can submit or author rich-text article content to inject HTML or JavaScript through the content argument processed by ModelDataService.insertData and rendered from articles/detail.html. The malicious content is stored without server-side sanitization and can execute when a reviewer or administrator opens it in the backend, within the same session domain. The vendor fixed this in commit 714521a9262e7bc9ca5713c873f57e96a4845352; a public PoC reference exists but is not verified as working exploit code, and no CISA KEV entry confirms active exploitation.
RemediationAI
Apply the upstream fix commit 714521a9262e7bc9ca5713c873f57e96a4845352 (or a later build that includes it); the commit introduces server-side ContentSanitizer processing for article bodies and is the vendor-recommended remediation, with the patch link at https://github.com/sunkaifei/FlyCms/commit/714521a9262e7bc9ca5713c873f57e96a4845352. No separate workaround is documented in the supplied references, and the commit comments indicate that render-side filtering alone does not clean stored content, so until the fix is deployed the practical compensating controls are to restrict who can submit or author rich-text articles and to treat stored article content as untrusted when viewed in privileged backend sessions; these controls reduce exposure but do not sanitize existing stored payloads. After deployment, existing article content may need review or resanitization because the fix addresses write-side handling; no fixed release version is listed due to the project's rolling-release model.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
FlyCMS is a Java-based content management system whose rich-text article bodies are rendered unescaped by the front-end template (${info.content}), so HTML markup is intentional and cannot simply be escaped. CWE-79 applies because the content argument reaching ModelDataService.insertData was persisted before any write-side sanitization; the supplied patch adds a ContentSanitizer built on Jsoup Safelist.relaxed, extends allowed rich-text tags and attributes, restricts URL protocols to http/https/mailto/tel, removes iframes/video/audio whose hosts are not on an allowlist, and adds rel=noopener noreferrer to target=_blank links. The assessed CVSS 3.1 vector is AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, reflecting a submission-capable authenticated attacker and a victim who must view the stored content; a pre-patch render-side filter in the review drawer may blunt some payloads but does not clean the stored value. CPE coverage is the wildcard cpe:2.3:a:sunkaifei:flycms:*:*:*:*:*:*:*:* and the product uses rolling releases, so no discrete version boundary is available.
Know when Flycms 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:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:P
Authenticated author submits stored payload (PR:L) that runs only when a victim views it (UI:R) in a different security context (S:C), yielding limited confidentiality/integrity impact on the privileged session.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A security flaw has been discovered in sunkaifei FlyCMS up to e71738e0cfb7ffd48c2ce74242a2dbb43f84f25a. Affected by this vulnerability is the function ModelDataService.insertData of the file articles/detail.html of the component Content Rendering. Performing a manipulation of the argument content results in cross site scripting. The attack can be initiated remotely. The exploit has been released to the public and may be used for attacks. Continious delivery with rolling releases is used by this product. Therefore, no version details of affected nor updated releases are available. The patch is named 714521a9262e7bc9ca5713c873f57e96a4845352. It is recommended to apply a patch to fix this issue.
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.
FlyCms v1.0 was discovered to contain a Cross-Site Request Forgery (CSRF) via the component system/site/webconfig_updagt
FlyCms v1.0 was discovered to contain a Cross-Site Request Forgery (CSRF) via the component /system/site/config_footer_u
FlyCms v1.0 was discovered to contain a Cross-Site Request Forgery (CSRF) via the component /system/site/userconfig_upda
Cross Site Request Forgery vulnerability in FlyCms v.1.0 allows a remote attacker to execute arbitrary code via the syst
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/email/email_templets_update. Rated hi
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerbility via /system/site/filterKeyword_save. Rated high se
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/email/email_conf_updagte. Rated high
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/links/add_link. Rated high severity (
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/admin/update_group_save. Rated high s
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/admin/add_group_save. Rated high seve
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/user/group_update. Rated high severit
FlyCms v1.0 contains a Cross-Site Request Forgery (CSRF) vulnerability via /system/user/group_save. Rated high severity
EUVD-2026-120672
GHSA-vh8h-v2jf-8659
NVD
CVE.org
VulDB
Exploit-DB