CVE-2026-100176: Stored Cross-Site Scripting (XSS) in AIL Framework Username Timeline Tooltip
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/timelinebasic.js.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Apply the existing sanitize_text() helper to the user-controlled username value d.obj immediately before interpolating it into the D3 tooltip HTML string.
AIL Framework — var/www/static/js/d3/timeline_basic.js Username tooltip rendering = sanitize_text(d.obj)
Event History
Frequently Asked Questions
Who is exposed to this issue?
Authenticated analysts who can access the username timeline are exposed, particularly when they hover over a timeline entry containing a crafted imported or crawled username.
What does an attacker need to do to exploit it?
An attacker needs to cause a crafted username containing malicious HTML, such as an event handler, to be imported from chats or collected from crawled forums. They must then induce an authenticated analyst to view the timeline and hover over the corresponding entry.
What is the impact if exploitation succeeds?
JavaScript can execute in the analyst's authenticated browser session. This can enable session hijacking, data exfiltration, or unauthorized actions using that analyst's access.
Where is the vulnerable client-side code located?
The affected code is in var/www/static/js/d3/timeline_basic.js, where the username value is interpolated into tooltip HTML through D3's html() method without sanitization.