CVE-2025-52916
Executive Summary
CVE-2025-52916 identifies a security weakness in the Yealink RPS (Redirection and Provisioning Service) prior to the 2025-06-04 update. The vulnerability stems from a lack of Server Number (SN) verification attempt limits, allowing an unauthenticated, remote attacker to perform brute-force enumeration of the last five digits of device serial numbers. This low-severity issue (CVSS 2.2) could enable an attacker to map valid device identities, potentially leading to targeted attacks or service disruption. No public proof-of-concept (PoC) or exploit code is available at this time, and the patch status remains unknown.
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: 2.2 (Low)
- Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
- Attack Vector: Network
- Attack Complexity: High (requires knowledge of the first part of the SN or other enumeration techniques)
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low (partial disclosure of valid SNs)
- Integrity Impact: None
- Availability Impact: None
The low score reflects the limited impact (only partial disclosure of device identifiers) and the high attack complexity. However, in a targeted attack, this enumeration could be a stepping stone for further exploitation.
Deep Dive & Mechanics
The Yealink RPS is a cloud-based service used to redirect and provision Yealink devices (e.g., IP phones). Each device has a unique serial number (SN) that is used for authentication and provisioning. The vulnerability lies in the SN verification endpoint, which does not implement rate limiting or attempt throttling.
An attacker can send repeated requests to the RPS API, guessing the last five digits of a device SN. Since the first part of the SN is often predictable (e.g., based on model or batch), the effective search space is only 100,000 possibilities. Without rate limiting, an attacker can enumerate valid SNs in a reasonable timeframe.
Attack Flow:
- Attacker identifies the RPS endpoint for SN verification (e.g.,
https://rps.yealink.com/api/verify). - Attacker crafts requests with a base SN prefix (e.g.,
YEA12345XXXXX) and iterates through the last five digits. - The server responds differently for valid vs. invalid SNs (e.g., HTTP 200 vs. 404, or a specific JSON response).
- Attacker collects valid SNs for further attacks (e.g., device takeover, provisioning manipulation).
Vulnerable vs. Patched Code
No specific code diff is available. The vulnerability is a missing rate-limiting mechanism. A patched version would likely include:
- Vulnerable: No attempt limits on the SN verification endpoint.
- Patched: Implementation of rate limiting (e.g., max 5 attempts per IP per minute) or CAPTCHA after a threshold.
Exploitation & Lab Setup
Red Team
Lab Setup:
- Target: Yealink RPS instance (e.g.,
https://rps.yealink.com) - Tool: Custom Python script or Burp Suite Intruder
Exploitation Steps:
- Identify the SN verification endpoint (e.g., via API documentation or reverse engineering).
- Use a script to iterate through possible last-five-digit combinations.
- Monitor response codes or messages to identify valid SNs.
Example Python Script (Conceptual):
import requests
base_sn = "YEA12345" # Example prefix
url = "https://rps.yealink.com/api/verify"
for i in range(100000):
sn = f"{base_sn}{i:05d}"
response = requests.post(url, json={"sn": sn})
if response.status_code == 200:
print(f"Valid SN found: {sn}")
Note: This is a conceptual example. Actual implementation may require specific headers or payloads.
Blue Team
Detection:
- Monitor for high volumes of requests to the SN verification endpoint from a single IP.
- Look for sequential or patterned SN values in logs.
- Alert on repeated 404/400 responses followed by a 200.
Mitigation:
- Implement rate limiting on the RPS API.
- Use CAPTCHA or IP reputation checks.
- Monitor for brute-force patterns and block offending IPs.
Indicators of Compromise (IOCs)
- Network:
- High frequency of requests to
https://rps.yealink.com/api/verify(or similar endpoint). - Sequential SN values in request payloads.
- High frequency of requests to
- Logs:
- Multiple failed SN verification attempts from a single IP.
- Sudden spike in 404/400 errors followed by a 200 success.
- System:
- Unusual provisioning requests from unknown devices.
Detection Engineering
YARA Rule
rule CVE_2025_52916_Yealink_RPS_BruteForce {
meta:
description = "Detects brute-force attempts against Yealink RPS SN verification"
author = "Valters IT"
date = "2025-06-04"
reference = "CVE-2025-52916"
strings:
$s1 = "/api/verify" ascii wide nocase
$s2 = "sn" ascii wide nocase
$s3 = "YEA" ascii wide nocase // Example prefix, adjust as needed
condition:
all of ($s*) and #s1 > 10
}
Sigma Rule
title: Yealink RPS Brute-Force Enumeration
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects multiple SN verification attempts to Yealink RPS
author: Valters IT
date: 2025-06-04
logsource:
category: web
product: generic
detection:
selection:
cs-uri-query|contains: "/api/verify"
cs-method: "POST"
condition: selection | count() by src_ip > 100 within 1m
falsepositives:
- Legitimate provisioning of many devices
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-52916 Yealink RPS Brute-Force Attempt"; flow:to_server; content:"POST"; http_method; content:"/api/verify"; http_uri; content:"sn"; http_client_body; threshold: type both, track by_src, count 50, seconds 60; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Apply the vendor patch if available. If not, implement rate limiting on the SN verification endpoint.
- Workaround: Restrict access to the RPS API to trusted IPs only.
- Long-term: Implement CAPTCHA or multi-factor authentication for device provisioning.
- Monitoring: Enable logging and alerting for brute-force patterns.
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.