Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
AV:N and PR:N because the attacker serves the malicious page; UI:R required since victim must click; C:L/I:L reflects limited admin-action impact with no availability effect.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
3DescriptionCVE.org
ajenti through v2.2.13 has a clickjacking weakness in the browser-facing login and administrative UI. In ajenti-core/aj/http.py, the core HTTP response path initializes an empty header list, forwards handler-added headers verbatim, and finalizes responses through WSGI start_response() without adding anti-framing protections such as X-Frame-Options or a Content-Security-Policy frame-ancestors restriction.
AnalysisAI
Clickjacking in Ajenti's browser-facing login and administrative UI through v2.2.13 exposes authenticated administrators to UI redress attacks. The root cause is in ajenti-core/aj/http.py, where the core HTTP response pipeline finalizes responses via WSGI without injecting X-Frame-Options or a Content-Security-Policy frame-ancestors directive, allowing the Ajenti UI to be embedded in attacker-controlled iframes. No active exploitation has been identified - EPSS sits at 0.14% (4th percentile), SSVC exploitation is rated none, and no CISA KEV listing exists - placing this firmly in the low-urgency queue despite its medium CVSS score.
Technical ContextAI
Ajenti is a Python-based web server management panel whose HTTP layer (ajenti-core/aj/http.py) constructs responses through a handler-chaining model that initializes an empty header list and passes handler-supplied headers verbatim to WSGI start_response(). Because no middleware or finalization step appends anti-framing headers, the browser has no instruction to refuse embedding in a cross-origin frame. CWE-1021 (Improper Restriction of Rendered UI Layers or Frames) describes this class of defect: the server fails to communicate frame-embedding policy to the client, enabling UI redress (clickjacking) attacks. Notably, the intelligence tags include 'XSS', which appears to be a misclassification - the described vulnerability mechanism is strictly clickjacking, not cross-site scripting. CPE data provided is a placeholder (cpe:2.3:a:n/a:n/a), so a formal CPE string for Ajenti has not been confirmed in the NVD record.
RemediationAI
The primary remediation is to update Ajenti beyond v2.2.13 once a patched release incorporating commit e54e83888fc7cb10061a18b04c1a7e3100d77f03 is tagged; monitor https://github.com/ajenti/ajenti for a release. As a workaround that does not require an application upgrade, configure any reverse proxy (nginx, Apache, Caddy) fronting Ajenti to inject 'X-Frame-Options: DENY' or 'Content-Security-Policy: frame-ancestors none' on all responses - this mirrors the fix's intent and is effective immediately. The trade-off of X-Frame-Options: DENY is that it also blocks embedding in same-origin contexts, which is generally acceptable for an admin panel. Alternatively, frame-ancestors 'self' permits same-origin framing while blocking cross-origin embedding, with the trade-off that a subdomain takeover on the same domain would still permit framing. If Ajenti is only accessed internally, restricting network-level access to trusted IP ranges via firewall rules reduces exposure to phishing-delivered clickjacking campaigns. No vendor advisory URL beyond the NVD record (https://nvd.nist.gov/vuln/detail/CVE-2026-38979) was available in the provided data.
LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr
Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han
A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi
Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc
Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula
Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root
LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(
Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti
Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr
SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg
Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ
Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-41978
GHSA-677j-gfv9-ppcc