Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft URL-encoded XSS payload in search path
-
DeliveryDistribute crafted link via phishing or embedded referral
-
ExploitVictim clicks link with active site session
-
Executionurldecode() expands payload after HTML encoding
-
PersistScript tag renders in browser page
-
ImpactSession cookie or credentials exfiltrated to attacker
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 | Exploitation requires that the target Serendipity installation is running a version between 2.3.5 and 2.6.0 inclusive, and that the clean-URL routing mode is active so that the /search/<term> route is handled by serveSearch() in include/functions_routing.inc.php - the vulnerable decode-after-encode pipeline only exists in that code path. The attacker requires no authentication and no account on the site. Exploitation is bounded by the requirement for victim interaction: the victim must follow a crafted link while their browser holds an active session on the targeted Serendipity site. The realistic impact ceiling is determined by the victim's privilege level - if the victim is an anonymous visitor the attacker gains little; if the victim is an authenticated administrator, the attacker can leverage the stolen session to modify site content or escalate further through normal admin capabilities. |
| Impact | The CVSS 4.0 base score of 5.3 reflects a medium-severity, network-accessible flaw that requires victim interaction (UI:P) - a meaningful constraint that limits opportunistic mass exploitation. Attack complexity is low and no privileges are required, so any external attacker can craft the malicious URL without an account on the target site. No EPSS data was supplied and the vulnerability does not appear in CISA KEV, and no public exploit code has been identified at time of analysis, together suggesting the flaw has not been broadly weaponized. Even so, a mid-sized municipal IT team in sanok running a public-facing Serendipity blog should treat this as a meaningful operational risk, since reflected XSS is trivially weaponized for session hijacking and phishing via spear-targeted links. Impact on confidentiality and integrity of both the vulnerable and subsequent browser session is rated Low, consistent with scope-limited session attacks rather than server-side compromise. The primary real-world risk is session cookie theft or credential harvesting against authenticated site administrators, which could escalate to full CMS compromise through normal admin functions. |
| Exploit ScenarioDerived | An attacker constructs a URL of the form https://target-site.example/search/%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E and delivers it to a logged-in Serendipity administrator via a phishing email or embedded link. When the administrator clicks the link, the application decodes the payload after sanitization, rendering the script tag in the page and exfiltrating the session cookie to an attacker-controlled host. No public proof-of-concept has been identified, but the attack pattern is elementary and replicable from the description alone. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 13, 2026
Reflected cross-site scripting in Serendipity CMS versions 2.3.5 through 2.6.0 enables arbitrary JavaScript execution in a victim's browser via the clean-URL search route. The flaw in include/functions_routing.inc.php's serveSearch() inverts the sanitization order - urldecode() runs after htmlspecialchars() and strip_tags(), so a URL-encoded payload survives HTML encoding intact and is decoded back into executable markup before page rendering. No public exploit code has been identified at time of analysis, and a vendor-released patch is available in version 2.6.1.
RemediationAI
Upgrade Serendipity to version 2.6.1, which corrects the sanitization pipeline in include/functions_routing.inc.php so that urldecode() is applied before HTML-encoding functions rather than after. The fix is documented in the vendor security advisory at https://github.com/s9y/Serendipity/security/advisories/GHSA-6c2x-mjmq-vx4q. If immediate upgrade is not feasible, a compensating control is to configure a web application firewall rule blocking search URL path segments containing URL-encoded HTML metacharacters such as %3C, %3E, and %22; note that this may block legitimate search queries containing those characters, and is not a substitute for patching. Alternatively, disabling the clean-URL routing mode for the search endpoint would remove the vulnerable code path at the cost of less readable search URLs - verify whether the CMS configuration exposes this toggle before relying on it.
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
Serendipity is a PHP-based blogging and content management platform (CPE: cpe:2.3:a:s9y:serendipity:*:*:*:*:*:*:*:*). The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a pipeline-ordering defect: the application applies strip_tags() and htmlspecialchars() to the search term extracted from the clean URL, but then calls urldecode() on the result before embedding it in the rendered page. A payload such as %3Cscript%3Ealert(1)%3C/script%3E passes the HTML-encoding checks as percent-encoded text, is then decoded into a live script element, and executes in the browser. This is a classic double-decoding or decode-after-encode antipattern that defeats sanitization regardless of how thorough the encoding step is.
Know when Serendipity 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:L/VI:L/VA:N/SC:L/SI:L/SA:N
Network-delivered reflected XSS; no privileges needed; user interaction required; scope changes as JavaScript executes in victim browser context.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Serendipity versions >= 2.3.5 and <= 2.6.0 contain a reflected cross-site scripting vulnerability in the search clean-URL route (/search/<term>). In include/functions_routing.inc.php serveSearch(), the sanitisation pipeline runs urldecode() after HTML-encoding, so a single URL-encoded HTML payload survives strip_tags() and htmlspecialchars() and is then decoded back into live HTML in the page. A crafted search link can execute arbitrary JavaScript in the victim's browser. Fixed in 2.6.1.
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.
More in Serendipity
View allAn arbitrary file upload vulnerability in Serendipity 2.4-beta1 allows attackers to execute arbitrary code via a crafted
SQL injection vulnerability in serendipity/serendipity_admin.php in Serendipity before 1.6.1 allows remote attackers to
Cross-site scripting (XSS) vulnerability in serendipity/serendipity_admin_image_selector.php in Serendipity before 1.6.1
Multiple incomplete blacklist vulnerabilities in the serendipity_isActiveFile function in include/functions_images.inc.p
include/functions_installer.inc.php in Serendipity through 2.0.5 is vulnerable to File Inclusion and a possible Code Exe
SQL injection vulnerability in the serendipity_checkCommentToken function in include/functions_comments.inc.php in Seren
Serendipity before 2.3.4 on Windows allows remote attackers to execute arbitrary code because the filename of a renamed
Multiple cross-site scripting (XSS) vulnerabilities in Serendipity before 2.0.5 allow remote authenticated users to inje
Cross-site scripting (XSS) vulnerability in Serendipity before 2.0.3 allows remote attackers to inject arbitrary web scr
Stored XSS in Serendipity v2.1-rc1 allows an attacker to steal an admin's cookie and other information by composing a ne
SQL injection vulnerability in include/functions_entries.inc.php in Serendipity 2.0.5 allows remote authenticated users
Serendipity through 2.0.5 allows CSRF for the installation of an event plugin or a sidebar plugin. Rated high severity (
EUVD-2026-57797
GHSA-4g8w-wg6x-gvqc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB