Skip to main content
Vulnerability Database/CVE-2026-92463

CVE-2026-92463: yshop-crm Authorization Bypass Vulnerability

CVE-2026-92463 is an authorization bypass flaw in yshop-crm that allows authenticated users to enumerate the complete user directory without proper permissions. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-92463 Overview

CVE-2026-92463 is a missing authorization vulnerability [CWE-862] in yshop-crm through version 2.1.3. The flaw resides in the GET /admin-api/system/user/page endpoint, where the @PreAuthorize annotation is commented out in the source code. Any authenticated back-office user can invoke the endpoint without holding the system:user:list permission. When the authenticated account also carries a role with data scope ALL, the endpoint returns the full user directory. Exposed fields include login names, nicknames, departments, email addresses, mobile numbers, and last login information. Attackers can weaponize this directory listing for follow-on phishing, credential stuffing, and lateral movement inside the CRM.

Critical Impact

Authenticated attackers can enumerate every user account in a yshop-crm deployment, harvesting personally identifiable information and credential targets from a single unauthorized API call.

Affected Products

  • yshop-crm through version 2.1.3
  • The yshop-module-system-biz component (UserController) shipped with the affected releases
  • Deployments where authenticated back-office roles are assigned data scope ALL

Discovery Timeline

  • 2026-09-16 - CVE-2026-92463 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-92463

Vulnerability Analysis

The yshop-crm project exposes administrative operations under /admin-api/system/user/page. This endpoint is intended to be gated by the Spring Security @PreAuthorize("@ss.hasPermission('system:user:list')") annotation on the UserController.getUserPage handler. In the affected releases the annotation is present in source but commented out, so the Spring method security interceptor never evaluates the required authority. The framework still requires a valid authentication token, so unauthenticated callers are rejected, but any low-privilege back-office user passes the check.

Downstream, AdminUserServiceImpl delegates result filtering to the DeptDataPermissionRule. When the caller's role is configured with data scope ALL, the rule returns unrestricted results across every department. The combination of the disabled annotation and permissive data scope collapses two independent access controls into a single failure mode, producing a full-directory disclosure.

Root Cause

The root cause is a broken authorization check [CWE-862]. Method-level authorization was designed but disabled by commenting out @PreAuthorize, leaving the controller relying only on authentication. The tenant-level data permission rule then applies no row filtering for ALL scope, so no defense-in-depth compensates for the missing method check.

Attack Vector

Exploitation requires network access to the /admin-api surface and valid credentials for any back-office account whose role includes data scope ALL. The attacker authenticates, obtains a session or bearer token, and issues a GET request to /admin-api/system/user/page with a large pageSize parameter. The response returns the paginated directory including login names, nicknames, department identifiers, email addresses, mobile numbers, and last login timestamps. A public proof-of-concept script demonstrates the enumeration flow; see the GitHub PoC for yshop-crm and the VulnCheck Advisory on yshop-crm for technical details.

// No verified exploit code block is reproduced here.
// Refer to the public proof-of-concept linked above for the exact request structure.

Detect Identity Attacks the Moment Authentication Fails

Singularity™ Identity surfaces credential misuse, lateral movement, and privilege escalation in real time, so you can contain the breach before it spreads.

Stop Identity Attacks

Detection Methods for CVE-2026-92463

Indicators of Compromise

  • Requests to GET /admin-api/system/user/page originating from user accounts that do not hold the system:user:list permission.
  • Repeated paginated calls to the same endpoint with increasing pageNo values or unusually large pageSize values.
  • Application logs where UserController.getUserPage returns HTTP 200 for principals whose role definitions exclude system user listing.

Detection Strategies

  • Correlate authenticated API access logs against the role-to-permission mapping to flag calls that would have been rejected by an active @PreAuthorize check.
  • Build an alert on any single session pulling more than one page of /admin-api/system/user/page within a short window.
  • Perform authenticated code review or SAST against the yshop-module-system-biz module to confirm the state of the @PreAuthorize annotation in deployed builds.

Monitoring Recommendations

  • Forward yshop-crm application and access logs to a centralized analytics platform and retain them for outbound abuse investigations.
  • Baseline normal usage of /admin-api/system/user/* endpoints per role and alert on deviations.
  • Monitor identity providers and mail gateways for spikes in phishing directed at addresses that match the exposed user directory.

How to Mitigate CVE-2026-92463

Immediate Actions Required

  • Restrict network exposure of /admin-api to trusted management networks or VPN segments until a patched build is deployed.
  • Audit all back-office roles and remove data scope ALL from accounts that do not require organization-wide visibility.
  • Rotate credentials for any account whose directory data may have been exposed and enforce multi-factor authentication on back-office logins.

Patch Information

No fixed version is listed in the NVD entry at the time of publication. Track the upstream GitHub Repository for yshop-crm for a release beyond 2.1.3 that restores the @PreAuthorize("@ss.hasPermission('system:user:list')") annotation on UserController.getUserPage. Operators building from source can re-enable the annotation locally as an interim fix and rebuild the yshop-module-system-biz artifact.

Workarounds

  • Re-enable the commented-out @PreAuthorize annotation on the getUserPage handler in UserController.java and redeploy.
  • Place a reverse proxy or web application firewall rule in front of /admin-api/system/user/page that enforces an allow-list of administrator source addresses.
  • Reconfigure the DeptDataPermissionRule policy so that no production role is granted data scope ALL by default.
bash
# Example NGINX rule limiting the vulnerable endpoint to a management CIDR
location = /admin-api/system/user/page {
    allow 10.10.0.0/24;   # admin jump network
    deny  all;
    proxy_pass http://yshop_backend;
}

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.