Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:L/VA:N/SC:L/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
PR:L reflects attacker need to influence crawler-ingested URLs; S:C applies because XSS executes in the analyst's browser beyond the AIL server boundary; no availability impact is present.
Primary rating from Vendor (5a6e4751-2f3f-4070-9419-94fb35b644e8).
CVSS VectorVendor: 5a6e4751-2f3f-4070-9419-94fb35b644e8
Lifecycle Timeline
2DescriptionCVE.org
AIL Framework contains a stored cross-site scripting vulnerability in the crawler domain view. Crawled URLs were embedded directly into the JavaScript onclick handler used to display a stored screenshot, without context-appropriate encoding.
An attacker who can cause a specially crafted URL to be recorded in the crawler history can inject JavaScript syntax into the stored URL value. The payload remains stored by AIL and is subsequently included in the domain view. When an authenticated analyst clicks the screenshot icon associated with the malicious URL, the injected JavaScript executes in the analyst’s browser within the security context of the AIL Framework application.
Successful exploitation could allow an attacker to access information available to the analyst’s session, modify displayed content, or perform application actions using the analyst’s privileges. Exploitation requires the victim to interact with the affected screenshot entry.
The vulnerability was corrected by serializing the crawled URL with Jinja’s tojson filter before inserting it into the JavaScript handler. This safely escapes characters that could otherwise terminate the JavaScript string and introduce executable code.
AnalysisAI
Stored XSS in AIL Framework's crawler domain view (versions ≤ 7.0.0) lets a low-privileged attacker embed executable JavaScript inside crawled URL values that persist in the AIL datastore. The payload triggers within an authenticated analyst's browser session the moment they click the screenshot icon for the malicious crawler entry, granting the attacker access to session data and the ability to perform application actions as that analyst. No CISA KEV listing or public exploit code has been identified at time of analysis; the CVSS 4.0 score of 6.9 reflects high confidentiality impact tempered by required user interaction and low-privilege preconditions.
Technical ContextAI
AIL Framework is an open-source analysis platform (ENISA EUVD-2026-54184, package ail-framework) used by CERTs and threat intelligence teams to process leaks and web crawler output. The vulnerability resides in the Jinja2 HTML template var/www/templates/crawler/crawler_splash/showDomain.html, where crawled URLs were interpolated directly into a JavaScript onclick handler via standard Jinja2 syntax ({{ item['crawler']['url'] }}). Jinja2's default HTML auto-escaping encodes HTML-special characters but does not apply JavaScript string encoding, so characters such as single quotes can terminate the JS string literal and introduce executable code - the classic CWE-79 (Improper Neutralization of Input During Web Page Generation) failure in a JS context. The upstream fix in commit 37aabee8b23503a7782ed5effb92b11ab7db5150 replaces the raw interpolation with the Jinja2 tojson filter, which JSON-serializes the value before insertion into the handler, correctly escaping all characters that could break the JavaScript string boundary.
RemediationAI
Apply the upstream fix from commit 37aabee8b23503a7782ed5effb92b11ab7db5150 (https://github.com/ail-project/ail-framework/commit/37aabee8b23503a7782ed5effb92b11ab7db5150) by updating to a version of AIL Framework that includes this change, or by manually patching showDomain.html to replace the raw {{ item['crawler']['url'] }} interpolation in the onclick handler with {{ item['crawler']['url'] | tojson }}. Note that no specific tagged release version confirming inclusion of this fix has been independently verified from the provided data - administrators should confirm the commit is present in their installed version. As a compensating control prior to patching, restricting access to the crawler domain view to only the most trusted analysts narrows the exploitation window but does not neutralize the stored payload. Implementing a Content Security Policy header that disallows inline script execution (script-src 'self' without 'unsafe-inline') would generically mitigate stored XSS of this class; however, enabling strict CSP in AIL Framework may require additional frontend changes if the application relies on inline scripts elsewhere, and administrators should evaluate compatibility before deployment.
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-54184
GHSA-8rfq-f9pf-jjm3