Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconPlant crafted username in crawled chat/forum
-
DeliveryAIL imports and stores username unsanitized
-
ExploitAnalyst opens username timeline view
-
InstallAnalyst hovers over malicious entry
-
C2D3 html() renders payload in tooltip
-
ExecuteJavaScript executes in analyst session
-
ImpactSession hijack / data exfiltration
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 (1) the attacker to seed a malicious username into a source that AIL crawls (a monitored chat or forum), which needs no authentication to AIL itself; and (2) a victim who is an authenticated analyst with access to the username timeline view AND who actively hovers over the crafted timeline entry to trigger the D3 html() tooltip. The specific vulnerable component is the client-side file var/www/static/js/d3/timeline_basic.js, where d.obj is interpolated into an HTML string without sanitization. Limiting factors: mandatory user interaction (hover), the victim must have analyst access to the timeline feature, and only unpatched versions predating commit 455dd92c are affected - the fix wraps the value in sanitize_text(). |
| Impact | This is a stored/DOM-based XSS (CWE-79) in the AIL Framework's username timeline, confirmed by CIRCL (the vendor/reporter) with a patch already available (commit 455dd92c). The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N) rates it 8.5, but the score is tempered by UI:A - successful execution requires an authenticated analyst to actively hover over the malicious timeline entry. Injection itself needs no authentication (attacker simply plants a crafted username in a chat/forum that AIL crawls), which supports PR:N. There is NO EPSS score, NO CISA KEV listing, and NO public POC available in the provided data, so this is best characterized as 'no public exploit identified at time of analysis' rather than an actively exploited threat. The high VI:H (integrity) rating in the vendor vector is somewhat generous for an XSS whose primary demonstrated impact is script execution in the analyst's session; real impact is more credibly session hijacking and data exfiltration (confidentiality-leaning). Net: a legitimate but not urgent priority - a genuine analyst-session compromise vector, mitigated by the required hover interaction, niche product footprint, and absence of any exploitation signal. Patch and single-line sanitization fix make remediation trivial. |
| Exploit ScenarioDerived | An attacker posts a message on a forum or chat channel that AIL crawls, using a username containing an HTML payload such as '<img src=x onerror=alert(1)>'. AIL imports and stores the username verbatim; later, an authenticated analyst opens the username timeline and hovers over that entry, causing D3's html() tooltip to render the payload and execute JavaScript in the analyst's authenticated session (enabling session hijacking or data exfiltration). No public exploit code is identified, though the trivial single-line payload lowers the bar for reproduction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Stored cross-site scripting in the AIL Framework's username timeline lets a remote, unauthenticated attacker execute arbitrary JavaScript in an authenticated analyst's browser by seeding a crafted username - for example an <img> tag with an onerror handler - into a chat or forum that AIL monitors. The malicious username is stored without character restrictions and fires when the analyst hovers over the corresponding timeline entry, because var/www/static/js/d3/timeline_basic.js interpolates the value d.obj directly into D3's html() tooltip without sanitization. CIRCL reports the issue and an upstream fix commit (455dd92c) is available; no public exploit and no CISA KEV entry were identified at time of analysis, and successful exploitation can lead to session hijacking, data exfiltration, or unauthorized actions taken within the analyst's authenticated session.
RemediationAI
The primary fix is to apply upstream commit 455dd92c (https://github.com/ail-project/ail-framework/commit/455dd92c4179c53204368d93681ded4b57e31643), which wraps the username value in sanitize_text() before it is passed to D3's html() in var/www/static/js/d3/timeline_basic.js; per the available data this is an upstream fix available via commit and a released, tagged patched version is not independently confirmed, so administrators pulling from source should verify the commit hash is present and rebuild/redeploy the static assets and clear browser caches so the corrected JavaScript is served. Patch status is therefore best described as upstream fix available (commit); released patched version not independently confirmed. Where immediate upgrading is not possible, compensating controls include never exposing the username timeline to untrusted networks, restricting timeline access to the smallest set of trusted analysts and requiring re-authentication or short session lifetimes to limit session-hijacking value, deploying a Content-Security-Policy that forbids inline script and inline event handlers (which blocks the onerror-style payload but can break legitimate inline UI code and must be tested against the dashboard), and sanitizing or escaping usernames at ingestion in the AIL feed pipeline so stored values never contain markup - this last option trades storage-layer cleanliness for the need to reprocess already-stored malicious usernames, which otherwise remain active until the code fix is deployed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a stored (persistent) cross-site scripting issue, class CWE-79, in the AIL Framework's client-side timeline rendering code. AIL ingests usernames from monitored chats and crawled forums and persists them without applying character restrictions, so attacker-controlled markup survives into the datastore. When an analyst opens the username timeline, the vulnerable file var/www/static/js/d3/timeline_basic.js builds a tooltip with D3's html() method, which injects its argument as live HTML rather than as text: the string ${d.obj}<br>... places the raw username (d.obj) ahead of the formatted start/end timestamps. Because no escaping or sanitization is applied at that point, any HTML event handler embedded in a username is parsed and executed by the victim's browser on hover. The vendor's fix wraps the username in a sanitize_text() call before it reaches html(), converting the value into an inert string. The CPE string cpe:2.3:a:ail_project:ail_framework:*:*:*:*:*:*:*:* indicates the defect is tracked against the AIL Framework product line generally, with only builds predating commit 455dd92c affected.
Know when Ail Framework 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:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Injection is unauthenticated via crawled sources (PR:N), but script execution requires the analyst to hover (UI:R); XSS crosses into the browser (S:C) with session-hijack confidentiality impact (C:H) and limited integrity (I:L).
Primary rating from Vendor (CIRCL).
CVSS VectorVendor: CIRCL
DescriptionCVE.org
The AIL Framework's username timeline feature is vulnerable to stored cross-site scripting (XSS). Usernames imported from chats and crawled forums are stored without character restrictions. When an authenticated analyst views the username timeline, the application renders these stored usernames into the DOM using D3's html() method in the tooltip. Because the username value (d.obj) is interpolated directly into an HTML string without sanitization, a crafted username containing HTML event handlers (e.g., <img src=x onerror=alert(1)>) will execute arbitrary JavaScript in the analyst's browser when the analyst hovers over the corresponding timeline entry. The attack requires the victim to be an authenticated analyst with access to the timeline view and to interact with the malicious timeline entry (hover). Successful exploitation can lead to session hijacking, data exfiltration, or unauthorized actions performed within the analyst's authenticated session. The vulnerability resides in the client-side JavaScript file var/www/static/js/d3/timeline_basic.js.
Executive ViewAI
A stored cross-site scripting flaw in the AIL Framework, an open-source threat-intelligence platform used to collect and correlate data from monitored chats and forums, allows malicious content seeded by an external party to execute in the browsers of authenticated analysts. Because the payload fires inside an analyst's logged-in session, a successful attack could enable session hijacking, exfiltration of collected intelligence, or unauthorized actions performed under the analyst's identity. No public exploit code or confirmed active exploitation was identified at time of analysis, and an upstream fix is available, so the primary risk is exposure of sensitive investigative data if remediation is delayed.
Apply vendor patch.
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 Ail Framework
View allStored cross-site scripting in AIL Framework <6.8 allows authenticated high-privilege attackers to inject malicious Java
Stored cross-site scripting in AIL Framework allows an authenticated attacker who can influence matched, tracked, or tag
Authenticated path traversal in AIL Framework (CIRCL's Analysis Information Leak threat-intel platform) lets a low-privi
Global.py in AIL framework 2.8 allows path traversal. Rated high severity (CVSS 7.5), this vulnerability is remotely exp
Path traversal in AIL Framework's PDF object handling lets an authenticated user read files outside the intended PDF sto
Non-blind SSRF in AIL Framework's crawler submission interface allows low-privileged authenticated users to pivot throug
Crafted URL injection in the Onion module of the AIL Framework lets unauthenticated content publishers push arbitrary no
Stored cross-site scripting (XSS) in the AIL Framework crawler splash domain page allows an authenticated user-role API
Cross-tenant authorization bypass in the AIL Framework crawler task API (api_add_crawler_task) lets an authenticated use
Path traversal in AIL Framework's `/objects/item/diff` endpoint exposes gzip-compressed server-side files to authenticat
Stored cross-site scripting (XSS) in the AIL Framework tag selector (var/www/static/js/tags.js) allows an authenticated
Unlimited OTP brute-force against AIL Framework's two-factor authentication endpoint allows an attacker who already poss
EUVD-2026-87089
GHSA-gr26-vj67-v262
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB