☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON 🐛 CWE-639
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-55621

CVE-2025-55621 Insecure Direct Object Reference in Reolink
📅 PUBLISHED: 2025-08-22 00:00 UTC 🔄 UPDATED: 2026-08-12 09:03 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.09%
👁️
0.09% probability
2.1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: v4.54.0.4.20250526
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
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-55621 is a disputed Insecure Direct Object Reference (IDOR) vulnerability in Reolink firmware version v4.54.0.4.20250526. The vulnerability allows unauthorized attackers to access and download other users' profile photos by manipulating a URL parameter. The vendor (Reolink) disputes this as intentional behavior, claiming the photos are part of a social platform where users expect to find one another. However, from a security perspective, the lack of proper authorization checks on direct object references constitutes a security flaw that could lead to privacy violations and data exposure.

⚡ 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 is not related to any NPM, PyPI, Go, or Ruby package. It is a firmware-level issue in Reolink's embedded system.

CVSS Breakdown & Threat Level

  • CVSS Score: 0.0 (Disputed, no official vector)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: High (C:H) – unauthorized access to profile photos
  • Integrity Impact: None (I:N)
  • Availability Impact: None (A:N)
  • Threat Level: Medium (due to disputed status but real privacy risk)

Deep Dive & Mechanics

The vulnerability is an Insecure Direct Object Reference (IDOR) in Reolink's social platform feature. The application exposes user profile photos via URLs that contain predictable or enumerable object identifiers (e.g., user IDs or photo IDs). An attacker can craft a URL by changing the identifier to access another user's profile photo without proper authorization checks.

Root Cause: The application fails to verify that the requesting user has permission to access the specific resource (profile photo). The object reference (e.g., /photos/12345) is directly used to fetch the resource without an access control layer.

Attack Vector: An attacker can enumerate user IDs or photo IDs (e.g., sequential numbers) and send GET requests to the vulnerable endpoint. The server returns the profile photo without validating the requester's identity or relationship to the target user.

Impact: Unauthorized access to private profile photos, leading to privacy violations, potential stalking, or identity theft.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

@app.route('/photos/<photo_id>')
def get_photo(photo_id):
    # No authorization check
    photo = Photo.query.get(photo_id)
    return send_file(photo.path)

Patched Code (Conceptual):

@app.route('/photos/<photo_id>')
def get_photo(photo_id):
    # Authorization check
    photo = Photo.query.get(photo_id)
    if not photo.is_public and current_user.id != photo.owner_id:
        abort(403)
    return send_file(photo.path)

Note: Since the vendor disputes this as intentional, no official patch is available. The above is a recommended fix.

Exploitation & Lab Setup

Red Team

Lab Setup:

  1. Deploy a Reolink device with firmware v4.54.0.4.20250526.
  2. Create two user accounts (UserA and UserB) with profile photos.
  3. Log in as UserA and obtain a valid session token.

Exploitation Steps:

  1. Intercept a request to view UserA's profile photo (e.g., https://reolink-device/photos/12345).
  2. Modify the photo ID to another user's ID (e.g., 12346).
  3. Send the request without any additional authorization headers.
  4. Observe that the server returns UserB's profile photo.

Proof of Concept (Python):

import requests

target_url = "https://reolink-device/photos/12346"
response = requests.get(target_url)
if response.status_code == 200:
    with open("stolen_photo.jpg", "wb") as f:
        f.write(response.content)
    print("Photo stolen successfully")
else:
    print("Failed to access photo")

Blue Team

Detection Steps:

  1. Monitor for unusual patterns in photo access logs (e.g., rapid enumeration of photo IDs).
  2. Implement rate limiting on photo endpoints.
  3. Add authorization checks to all resource access endpoints.
  4. Use Web Application Firewall (WAF) rules to block suspicious URL patterns.

Hunting Query (Splunk):

index=web_logs source="/photos/*"
| stats count by src_ip, uri
| where count > 10
| table src_ip, uri, count

Indicators of Compromise (IOCs)

  • URL Pattern: /photos/[0-9]+ (sequential numeric IDs)
  • HTTP Requests: GET requests to /photos/ with varying numeric IDs in short timeframes
  • Response Size: Large image files (profile photos) returned without proper authentication
  • Source IPs: Multiple requests from same IP to different photo IDs

Detection Engineering

YARA Rule

rule Reolink_IDOR_Photo_Access {
    meta:
        description = "Detects potential IDOR exploitation attempts on Reolink photo endpoints"
        author = "Valters IT"
        date = "2025-06-01"
        reference = "CVE-2025-55621"
    strings:
        $url_pattern = "/photos/" ascii wide nocase
        $sequential = /\/photos\/\d{4,}/ ascii wide
    condition:
        $url_pattern and #sequential > 5
}

Sigma Rule

title: Reolink IDOR Photo Enumeration
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects rapid enumeration of photo IDs on Reolink devices
author: Valters IT
date: 2025-06-01
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-uri-stem|startswith: '/photos/'
        cs-uri-stem|re: '\/photos\/\d+'
    condition: selection | count() by src_ip > 10 within 60s
falsepositives:
    - Legitimate photo browsing
level: medium

Suricata Rule

alert http any any -> any any (msg:"Reolink IDOR Photo Enumeration Attempt"; flow:to_server; content:"GET"; http_method; content:"/photos/"; http_uri; pcre:"/\/photos\/\d{4,}/"; threshold: type both, track by_src, count 10, seconds 60; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action: Implement proper authorization checks on all photo access endpoints. Verify that the requesting user has permission to view the specific photo.
  2. Short-term: Use non-predictable identifiers (e.g., UUIDs) for photo IDs to prevent enumeration.
  3. Long-term: Conduct a full security audit of the social platform feature. Implement role-based access control (RBAC) and enforce the principle of least privilege.
  4. Workaround: If the vendor does not provide a patch, consider disabling the social platform feature or restricting access to authenticated users only.
  5. Monitoring: Deploy the detection rules above to identify and block exploitation attempts.

Valters IT
Securing Digital Frontiers

👁️ SHODAN DORKS (THREAT HUNTING)

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.

Reolink
Reolink camera
Reolink social platform

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-55621/ · 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.