CVE-2026-100521
Executive Summary
CVE-2026-100521 is a reflected cross-site scripting (XSS) vulnerability in the Cotonti content management system through version 1.0.0, specifically in the search plugin's highlight parameter, which performs no HTML or JavaScript escaping on user-supplied input. Any unauthenticated remote attacker can craft a malicious link that executes arbitrary JavaScript in the browser of a victim who opens it — including authenticated administrators. Due to the reflected nature of the flaw and the involvement of the search functionality, exploitation is trivial to attempt at scale via phishing or link-injection vectors, though it requires user interaction (CVSS 6.1, UI:R).
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability resides in the Cotonti search plugin. Per the NVD description, the highlight parameter passed to the search plugin is reflected back into the generated HTML page without any HTML or JavaScript encoding/escaping. This is a classic CWE-79 reflected cross-site scripting condition: the application takes attacker-controlled request data and writes it directly into the response document body (or into a script-executable context) without canonicalizing or encoding dangerous characters such as <, >, ", ', or &.
The attack surface is the search endpoint of any Cotonti installation up to and including 1.0.0 that has the search plugin enabled. Because the parameter is processed server-side and echoed into the response, no authentication is needed to deliver the payload — the request itself is unauthenticated (PR:N), but the payload only fires in the browser of whoever opens the link (UI:R). The scope change (S:C) in the CVSS vector reflects that the injected script executes in the origin/security context of the vulnerable Cotonti site, enabling access to that site's cookies, session tokens, and DOM.
The CVSS vector AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N indicates: network-reachable, low attack complexity, no privileges required, user interaction required, scope changed, and limited confidentiality and integrity impact. Availability is unaffected because reflected XSS does not inherently disrupt service.
No public proof-of-concept, Nuclei template, or exploit code is available as of this report, and the description provides no specific function names, file paths, or parameter parsing details beyond the highlight parameter of the search plugin. All exploitation reasoning must therefore remain at the vulnerability-class level; specific downstream implementation details cannot be asserted.
Exploitation Scenarios
Because no PoC is public, the attack chain below is inferred strictly from the vulnerability class (reflected XSS in a query parameter) and the NVD description. No specific function names or endpoints beyond the highlight parameter are assumed.
Reconnaissance / target identification. An attacker identifies Cotonti installations running version 1.0.0 or earlier, for example via search-engine fingerprinting, HTTP response headers, or Shodan queries matching Cotonti HTML markers. The attacker confirms the search plugin is reachable and that the
highlightparameter is reflected in the response.Triggering the flaw class. The attacker constructs a URL to the site's search functionality that supplies a crafted value in the
highlightparameter. Because the parameter is emitted into the response without HTML/JavaScript escaping, an injected script tag or event handler is interpreted by the browser rather than displayed as inert text.Payload / execution method. The attacker delivers the crafted link to a target — typically via phishing email, chat message, forum post, or a third-party site that links to the vulnerable page. When the victim opens the link, the browser renders the response and executes the injected JavaScript in the context of the Cotonti origin. No public payload is available, so no specific byte-for-byte payload can be cited; at the class level, standard reflected-XSS payloads that break out of the reflected context apply.
Post-exploitation impact. Executed script runs with the privileges of the victim's session in the Cotonti origin. This enables theft of session cookies or tokens, session riding / forced actions on behalf of the victim, credential-harvesting via injected fake login forms, and redirection to attacker infrastructure. The CVSS scope change (
S:C) and the explicit note that administrators can be targeted mean the realistic worst case is privileged administrative account compromise if an admin opens the link while authenticated.
Note: No public PoC is available; the attack chain above is inferred from the reflected-XSS vulnerability class and should be validated in a controlled environment before operational use.
Impact Assessment
- Confidentiality (
C:L): Limited — attacker can read data accessible to the victim's browser session (cookies, tokens, page content) in the vulnerable origin. - Integrity (
I:L): Limited — attacker can modify the rendered page or submit actions as the victim. - Availability (
A:N): None — reflected XSS does not degrade service availability. - Scope (
S:C): Changed — injected script operates in the security context of the Cotonti site, enabling cross-boundary impact on that origin's users and sessions.
Business impact is highest for sites where Cotonti is used by authenticated administrators or content editors: a successful phishing link delivered to an admin yields a session-hijack path to the administrative panel, which can translate into full site compromise (content injection, webshell upload, defacement, or data exfiltration). Blast radius is any visitor who opens a crafted link — including non-authenticated users, but severity escalates sharply when the victim is privileged. Because the flaw is unpatched and the endpoint is unauthenticated, the exposed population is the entire set of internet-facing Cotonti <= 1.0.0 deployments with the search plugin active. No evidence of active exploitation in the wild, no CISA KEV listing, and no public exploit code are currently recorded.
Detection Guidance
Sigma Rule
title: Cotonti Search Plugin Reflected XSS via highlight Parameter
id: 8f2c1a44-7b9e-4d2a-9c31-cve2026100521
status: experimental
description: Detects reflected XSS attempts against the Cotonti search plugin highlight parameter (CVE-2026-100521)
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-100521
author: valtersit.com
date: 2026/01/01
logsource:
category: webserver
detection:
selection_param:
cs-uri-query|contains:
- 'highlight='
selection_payload:
cs-uri-query|contains:
- '<script'
- '%3Cscript'
- 'javascript:'
- 'onerror='
- 'onload='
- 'alert('
- '%3C%2Fscript%3E'
condition: selection_param and selection_payload
falsepositives:
- Legitimate search terms containing angle brackets (rare)
level: high
tags:
- attack.t1189
- cve.2026-100521
- cwe.79
YARA Rule
rule CVE_2026_100521_Cotonti_Reflected_XSS
{
meta:
description = "Detects reflected XSS payloads targeting the Cotonti search plugin highlight parameter"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-100521"
author = "valtersit.com"
date = "2026-01-01"
cve = "CVE-2026-100521"
strings:
$param = "highlight=" ascii nocase wide
$src1 = "<script" ascii nocase
$src2 = "javascript:" ascii nocase
$src3 = "onerror=" ascii nocase
$src4 = "onload=" ascii nocase
$enc1 = "%3Cscript" ascii nocase
$enc2 = "%3C%2Fscript%3E" ascii nocase
condition:
uint16(0) == 0x3C21 or uint16(0) == 0x7B25 or filesize < 2MB
and $param
and any of ($src*, $enc*)
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-100521 Cotonti Search Plugin Reflected XSS Attempt (highlight parameter)"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"highlight="; nocase; http.uri; content:"<script"; nocase; http.uri; content:"javascript:"; nocase; http.uri; content:"onerror="; nocase; classtype:web-application-attack; reference:cve,2026-100521; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-100521; sid:2026100521; rev:1;)
Elastic Detection
sequence by source.ip with maxspan=30s
[ network where url.query contains "highlight=" and
(url.query contains "<script" or url.query contains "javascript:"
or url.query contains "onerror=" or url.query contains "onload=") ]
Splunk SPL Query
index=web sourcetype=access_combined
| eval q=urldecode(uri_query)
| where match(q, "(?i)highlight=")
| where match(q, "(?i)(<script|javascript:|onerror=|onload=|alert\\(|%3Cscript)")
| stats count min(_time) as first_seen max(_time) as last_seen values(q) as payloads by src_ip, uri_path, http_user_agent
| where count > 0
| sort - count
Wazuh OSSEC Rule
<group name="web,cotonti,xss,">
<rule id="2026105" level="12">
<if_sid>31100</if_sid>
<id>^40[0-9]$</id>
<match>highlight=</match>
<regex type="pcre2">(?i)(%3Cscript|<script|javascript:|onerror=|onload=|alert\()</regex>
<description>CVE-2026-100521: Cotonti search plugin reflected XSS attempt via highlight parameter</description>
<mitre>
<id>T1189</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 — UNPATCHED. No patch, vendor advisory, or fixed version is evidenced by any tracked source. The following are interim risk-reduction measures, not a vendor fix.
Immediate mitigations
- Deploy a Web Application Firewall (WAF) or reverse-proxy rule that rejects or neutralizes requests to the search endpoint whose
highlightparameter contains HTML/JavaScript metacharacters (<,>,",',(,),javascript:,onerror, etc.). - Apply output encoding at the edge where possible, or restrict access to the search endpoint for untrusted traffic.
- Until a patch exists, consider disabling the Cotonti search plugin if it is not operationally required.
- Set session cookies with
HttpOnlyandSecureflags to limit cookie theft via injected script; enforce a strictContent-Security-Policythat disallows inline script andunsafe-eval.
- Deploy a Web Application Firewall (WAF) or reverse-proxy rule that rejects or neutralizes requests to the search endpoint whose
Patch / upgrade steps
- No fixed version is currently available. Monitor the Cotonti project for a vendor release addressing CVE-2026-100521 and apply it immediately when published.
- Track NVD and the vendor's official release channel for updates; once a patched release appears, stage, test, and roll out to all instances.
Long-term hardening
- Enforce context-aware output encoding for all reflected user input across the application, prioritizing the search plugin.
- Adopt a secure development lifecycle with static/dynamic application security testing (SAST/DAST) covering reflected-input sinks.
- Deploy CSP with nonce/hash-based script policies and disable inline execution to make future XSS classes harder to exploit.
- Maintain an asset inventory of Cotonti deployments and subscribe to CVE feeds for the product.
References
- NVD — CVE-2026-100521: https://nvd.nist.gov/vuln/detail/CVE-2026-100521
- MITRE CWE-79 (Improper Neutralization of Input During Web Page Generation / Cross-site Scripting): https://cwe.mitre.org/data/definitions/79.html
- MITRE ATT&CK T1189 (Drive-by Compromise): https://attack.mitre.org/techniques/T1189/
- OWASP Cross Site Scripting Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
- CISA KEV Catalog (not listed as of this report): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
No threat actor campaigns or exploit-in-the-wild evidence are currently associated with CVE-2026-100521 per the provided intelligence.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.