CVE-2026-29082 Overview
CVE-2026-29082 is a stored Cross-Site Scripting (XSS) vulnerability affecting Kestra, an event-driven orchestration platform. The vulnerability exists in Kestra's execution-file preview functionality, which renders user-supplied Markdown files (.md) using markdown-it configured with html:true. The resulting HTML is then injected into the page using Vue's v-html directive without proper sanitization, allowing attackers to execute arbitrary JavaScript in the context of authenticated user sessions.
Critical Impact
Authenticated attackers can inject malicious JavaScript through crafted Markdown files, potentially stealing session tokens, performing actions on behalf of users, or compromising the orchestration platform's integrity.
Affected Products
- Kestra versions 1.1.10 and prior
- Kestra orchestration platform with execution-file preview enabled
- Self-hosted and cloud deployments using vulnerable versions
Discovery Timeline
- 2026-03-06 - CVE CVE-2026-29082 published to NVD
- 2026-03-10 - Last updated in NVD database
Technical Details for CVE-2026-29082
Vulnerability Analysis
This vulnerability is classified as CWE-79 (Improper Neutralization of Input During Web Page Generation), commonly known as Cross-Site Scripting (XSS). The root issue stems from a dangerous combination of insecure configuration and missing output sanitization in Kestra's frontend rendering pipeline.
The attack requires low privileges (an authenticated user account) and user interaction (a victim must view the malicious Markdown file preview). The vulnerability has a changed scope, meaning successful exploitation can impact resources beyond the vulnerable component itself—potentially allowing attackers to access other users' sessions or manipulate orchestration workflows.
The impact is primarily on confidentiality and integrity, as attackers can steal sensitive information displayed in the UI and perform unauthorized actions through the victim's authenticated session. There is no direct availability impact, though secondary effects could disrupt orchestration operations.
Root Cause
The vulnerability originates from two security misconfigurations working in tandem:
Insecure markdown-it Configuration: The markdown-it library is instantiated with the html:true option, which allows raw HTML tags within Markdown content to be preserved and rendered. This configuration is explicitly warned against in the markdown-it documentation when processing untrusted content.
Missing Output Sanitization: After markdown-it processes the Markdown content into HTML, the output is directly bound to the DOM using Vue.js's v-html directive. This directive does not perform any sanitization, relying on developers to ensure the content is safe before binding.
The combination means that any HTML, including <script> tags, event handlers (e.g., onerror, onload), or other XSS vectors embedded in Markdown files, will be executed in the browser context.
Attack Vector
The attack is network-based and exploits the execution-file preview feature in Kestra's web interface. An authenticated attacker with the ability to upload or create workflow files can craft a malicious Markdown file containing JavaScript payloads. When another user (potentially an administrator) previews this file through the Kestra UI, the malicious script executes in their browser session.
Typical attack scenarios include:
- Session Hijacking: Extracting authentication tokens or cookies and exfiltrating them to attacker-controlled servers
- Privilege Escalation: Performing administrative actions through the victim's elevated permissions
- Workflow Manipulation: Modifying orchestration workflows to execute malicious commands or exfiltrate data
- Phishing: Rendering fake login forms to capture credentials
The vulnerability is particularly concerning in multi-tenant environments or organizations where workflows may be shared across teams with different privilege levels.
Detection Methods for CVE-2026-29082
Indicators of Compromise
- Markdown files containing <script> tags, <iframe> elements, or HTML event handlers such as onerror, onload, onclick
- Unexpected outbound network requests from user browsers when viewing file previews
- JavaScript execution errors in browser console logs during Markdown preview operations
- Workflow files with suspicious .md content containing encoded or obfuscated HTML
Detection Strategies
- Implement Content Security Policy (CSP) headers that restrict inline script execution and report violations
- Monitor web application firewall (WAF) logs for XSS payload patterns in requests to file preview endpoints
- Enable browser-side XSS auditor reporting in supported environments
- Review audit logs for unusual file upload or workflow modification activity followed by preview requests from different users
Monitoring Recommendations
- Configure CSP reporting to capture and alert on script-src or unsafe-inline violations
- Deploy endpoint detection and response (EDR) solutions to monitor for anomalous browser behavior following Kestra UI interactions
- Establish baseline network traffic patterns and alert on unexpected connections from client browsers during workflow management sessions
How to Mitigate CVE-2026-29082
Immediate Actions Required
- Restrict access to the execution-file preview functionality to trusted administrators only
- Implement network-level restrictions on the Kestra web interface to limit exposure
- Review recent Markdown file uploads and workflow changes for potentially malicious content
- Consider disabling the Markdown preview feature entirely until a patch is available
Patch Information
At the time of publication, there are no publicly available patches for this vulnerability. Users should monitor the GitHub Security Advisory GHSA-r36c-83hm-pc8j for updates on official remediation. For reference, Kestra Release v1.0.30 is available, though users should verify whether it addresses this specific vulnerability.
Workarounds
- Deploy a reverse proxy with HTML sanitization rules to strip dangerous content from Markdown preview responses
- Implement strict Content Security Policy headers that block inline script execution and restrict resource loading
- Use web application firewall rules to detect and block common XSS payloads in file upload and preview requests
- Consider deploying a custom frontend modification that sanitizes HTML output using libraries like DOMPurify before rendering
# Example Content Security Policy header configuration for nginx
# Add to nginx server block to mitigate XSS impact
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors 'none'; base-uri 'self'; form-action 'self';" always;
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


