☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Bmc logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N 🐛 CWE-285
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-1604

CVE-2024-1604 Improper Access Control in Bmc
📅 PUBLISHED: 2024-03-18 09:59 UTC 🔄 UPDATED: 2026-08-21 19:33 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.07%
👁️
0.07% probability
1.7× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1553
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: United States License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: H Integrity High
A: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

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.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
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:

  1. Attacker authenticates to the BMC Control-M web interface with low-privileged credentials.
  2. Attacker enumerates or guesses report IDs (e.g., sequential integers, UUIDs from other users, or via information disclosure).
  3. Attacker sends a crafted HTTP request (e.g., GET or POST) to the report management API endpoint, including the target report ID.
  4. The server processes the request without proper authorization, returning the report data or applying changes.
  5. 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:

  1. Authenticate: Log in to the Control-M web interface with the compromised credentials.
  2. 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
    
  3. 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
    
  4. 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:

  1. 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.
  2. Correlate with User Activity: Check if the user has a history of accessing reports. Sudden access to many reports is suspicious.
  3. Review Report Changes: Use version control or audit logs to detect unauthorized modifications to reports.
  4. 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.
  • 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:

  1. 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.
  2. Restrict Network Access: Limit access to the Control-M web interface to trusted IP ranges using firewalls or VPNs.
  3. Review User Accounts: Audit all user accounts and remove any that are unnecessary or have excessive permissions.
  4. 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

👁️ SHODAN DORKS (THREAT HUNTING)

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.

BMC Control-M
Control-M report management
BMC Control-M 9.0.20
BMC Control-M 9.0.21

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-1604/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.