CVE-2026-100172: Stored XSS in AIL Framework extracted-match popovers via unescaped dynamic values in HTML-enabled data-content attributes
The AIL Framework (ail-project/ail-framework) contains a stored cross-site scripting (XSS) vulnerability in two Jinja2 templates that render popovers for matched, tracked, or tagged content: var/www/templates/chatsexplorer/blockmessage.html and var/www/templates/objects/item/showitem.html. In both templates, dynamic values associated with this content, including icon color, icon style, icon glyph, subtype, identifier, name, description, and matched value, are interpolated directly into the data-content HTML attribute of Bootstrap popover elements without appropriate output encoding. Because the popovers are configured with data-html="true", the content is interpreted as HTML in the victim's browser. An authenticated attacker who can influence matched, tracked, or tagged content may inject arbitrary HTML or JavaScript into these values. When a victim displays the affected popover, the injected markup may execute in the victim's session, potentially enabling data exfiltration or actions with the victim's privileges. The vulnerability is classified as stored XSS because the malicious payload can persist in the affected match, tracking, or tag-related data and be delivered to users who view the affected content.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
In var/www/templates/chats_explorer/block_message.html and var/www/templates/objects/item/show_item.html, apply double HTML-escaping using Jinja2 forceescape|forceescape to every dynamic value interpolated into the HTML-enabled data-content attribute of the Bootstrap popover elements, including icon color, icon style, icon glyph, subtype, identifier, name, description, and matched value.
Event History
Frequently Asked Questions
What level of access does an attacker need to exploit this issue?
The attacker must be authenticated and able to influence content that is matched, tracked, or tagged. The malicious values can then be stored in the related data and presented to other users.
What causes the malicious payload to run for a victim?
Execution occurs when a victim displays an affected Bootstrap popover. The popovers render their data-content value as HTML, allowing injected markup or JavaScript to execute in the victim's browser session.
How can I determine whether an installation contains the affected rendering paths?
Check whether the installation includes var/www/templates/chats_explorer/block_message.html and var/www/templates/objects/item/show_item.html, and whether those templates interpolate dynamic match-, tracking-, or tag-related values into HTML-enabled popover content.