CVE-2026-82881 Overview
CVE-2026-82881 is a stored cross-site scripting (XSS) vulnerability affecting Aix-DB through version 1.2.4. The application renders markdown with raw HTML enabled into Vue v-html bindings without sanitization. Attackers with low-privilege access can inject malicious HTML and JavaScript through markdown content in chat responses, skill descriptions, or knowledge messages. The injected payload executes in the browser of any user who views the affected content, enabling session theft, credential harvesting, and unauthorized actions performed as the victim. The vulnerability is tracked under CWE-79.
Critical Impact
Authenticated attackers can persist arbitrary JavaScript in Aix-DB content stores, executing code in other users' browser sessions when the content is rendered.
Affected Products
- Aix-DB versions up to and including 1.2.4
- web/src/components/MarkdownPreview/plugins/markdown.ts markdown rendering plugin
- web/src/views/knowledge/demand-manager.vue knowledge view component
Discovery Timeline
- 2026-08-31 - CVE-2026-82881 published to NVD
- 2026-09-02 - Last updated in NVD database
Technical Details for CVE-2026-82881
Vulnerability Analysis
Aix-DB uses markdown-it and marked to convert user-supplied markdown into HTML on the client. The rendered output is then bound to the DOM using Vue's v-html directive, which injects the string as live HTML rather than as text. Because the markdown renderer is configured with raw HTML enabled, any <script>, <img onerror=...>, or event-handler payload embedded in markdown flows directly into the DOM. No sanitization layer sits between the parser and the binding.
The attack surface is broad. Injectable sinks include chat responses, skill descriptions, and knowledge messages — all fields that legitimate users routinely author and other users routinely view. A stored payload persists in the backend and executes whenever a victim loads the affected view.
Root Cause
The root cause is the combination of a permissive markdown parser configuration and unsafe DOM binding. The rendering pipeline in web/src/components/MarkdownPreview/plugins/markdown.ts produced HTML that was passed unmodified into v-html. No output encoding, allow-listing, or HTML sanitizer such as DOMPurify was applied before the assignment.
Attack Vector
An authenticated attacker submits crafted markdown containing raw HTML or JavaScript into any writable content field. When another user opens the record, the payload runs in their browser under the Aix-DB origin. User interaction is required to view the content, but exploitation does not require elevated privileges. The following patch commit shows how the maintainers introduced sanitization:
+import DOMPurify from 'dompurify'
import MarkdownIt from 'markdown-it'
import hljs from './highlight'
import { preWrapperPlugin } from './preWrapper'
Source: GitHub commit b568a0f3
A parallel change was applied to the knowledge view:
<script setup>
-import { marked } from 'marked' // 引入 marked 库
+import DOMPurify from 'dompurify'
+import { marked } from 'marked'
import { NLayout, NLayoutContent, NLayoutHeader } from 'naive-ui'
import * as GlobalAPI from '@/api'
Source: GitHub commit b568a0f3
Detection Methods for CVE-2026-82881
Indicators of Compromise
- Markdown records containing <script>, <iframe>, <svg onload=...>, or on* event-handler attributes in chat, skill, or knowledge fields.
- Outbound browser requests from Aix-DB user sessions to attacker-controlled domains carrying cookies, tokens, or form data.
- Anomalous administrative or API actions initiated from legitimate user sessions shortly after viewing shared content.
Detection Strategies
- Scan the Aix-DB backend content store for raw HTML tags and JavaScript URI schemes inside markdown fields.
- Deploy a Content Security Policy (CSP) in report-only mode to surface inline-script violations originating from rendered markdown.
- Review browser network telemetry for unusual cross-origin requests generated by the Aix-DB web application.
Monitoring Recommendations
- Log and alert on markdown submissions that contain HTML sinks such as <script, javascript:, or on\w+= patterns.
- Monitor authentication and session activity for suspicious follow-on actions after a user views user-generated content.
- Track deployed Aix-DB versions and flag any host still running 1.2.4 or earlier.
How to Mitigate CVE-2026-82881
Immediate Actions Required
- Upgrade Aix-DB to a release that includes the fix merged in Pull Request #231.
- Audit existing chat responses, skill descriptions, and knowledge messages for stored payloads and purge malicious entries.
- Restrict who can author markdown content until the patched version is in place.
Patch Information
The fix, delivered in commit b568a0f3, introduces DOMPurify to sanitize rendered HTML before it is bound to the DOM in both web/src/components/MarkdownPreview/plugins/markdown.ts and web/src/views/knowledge/demand-manager.vue. The change is tracked in Issue #230 and the VulnCheck advisory.
Workarounds
- Disable raw HTML in the markdown renderer configuration until upgrading is possible.
- Apply a strict Content Security Policy that forbids inline scripts and untrusted script sources.
- Front the application with a WAF rule that blocks markdown submissions containing <script> tags or on* event handlers.
# Example Content-Security-Policy header for the Aix-DB web tier
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none';";
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.