/

CVE-2026-97060

Severity:

HIGH RISK

(7.2)

Broken Object Authorization (CWE-639) in X-SpringBoot

CVE-2026-97060

Awaiting Analysis

Vulnerability type

Category:

Broken Object-Level Authorization

CWE:

CWE-639

Impact:

Unauthorized Account and Privilege Modification

Severity:

HIGH RISK

(7.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A broken object-level authorization vulnerability in X-SpringBoot user-management endpoints allows sub-administrators to act on accounts they do not own or manage. An attacker with user-management permissions may reset passwords, change roles, or delete users, including a super-administrator account, when ownership and target authorization are not enforced.

Affected context

The issue occurs in X-SpringBoot deployments through version 6.0 where user-management operations rely on a caller's general administrative permission without verifying authorization for the specific target account. The affected operations include requests to /sys/user/update and /sys/user/delete, particularly when sub-administrators can reach these endpoints and the application does not enforce object-level ownership or scope checks.

Exploit preconditions

  • Attack surface: Authenticated user-management HTTP endpoints
  • Required access: A sub-administrator account or another identity with user-management permissions
  • Target condition: The attacker must be able to identify or submit another user's account identifier
  • Trigger points: POST /sys/user/update and POST /sys/user/delete
  • Why exploitation is possible: The application checks broad endpoint permission without consistently verifying whether the caller is authorized to modify or delete the selected user object

Why this happens

The underlying bug is an authorization design failure in which permission checks are applied to an operation or endpoint but not to the individual user record being accessed. This insecure pattern permits a caller with partial administrative privileges to supply a different account target and perform sensitive actions without an ownership, tenant, hierarchy, or role-scope validation. The behavior maps to CWE-639: Authorization Bypass Through User-Controlled Key, because a user-controlled identifier can select an object beyond the caller's authorized scope.

Potential impact

  • An attacker may reset passwords for other accounts
  • An attacker could rebind roles or alter account privileges
  • A super-administrator account may be modified or removed
  • User-management access may be expanded or disrupted
  • The application could experience account takeover, administrative lockout, or data-access escalation

General mitigation guidance

Mitigation generally focuses on enforcing authorization for every requested user object rather than relying only on endpoint-level permissions.

Common defensive patterns include:

  • Applying server-side object-level authorization before every update, password reset, role change, or deletion
  • Deriving the permitted target scope from the authenticated identity and trusted server-side claims
  • Rejecting client-supplied identifiers that fall outside the caller's tenant, ownership, or administrative hierarchy
  • Separating high-impact operations, such as super-administrator changes, behind stronger authorization and approval controls
  • Using least-privilege roles and secure-by-default administrative scopes
  • Returning consistent authorization failures without exposing sensitive account details

How teams detect issues like this

Organizations can identify this class of issue through:

  • Static analysis and code review checks for update or delete operations that use request-supplied user identifiers without adjacent authorization checks
  • Review of controller, service, and repository flows to confirm authorization is enforced before object retrieval or mutation
  • Policy tests that attempt cross-scope updates, password resets, role changes, and deletions using lower-privileged administrative identities
  • API gateway or application policy monitoring for unusual administrative actions affecting unrelated accounts
  • Audit-log correlation for bulk account changes, modifications to privileged users, and administrative actions outside expected ownership boundaries
  • Automated security testing and code-review tools configured to flag missing object-level authorization patterns

Sources

SourceLink
github.comgithub.com/LinYuanyi1/cve-request-poc/blob/master/x-springboot/03_user-admin-cross-object-bola.py
github.comgithub.com/yzcheng90/X-SpringBoot
github.comgithub.com/yzcheng90/X-SpringBoot/blob/d74ddba989c0449948ff1ddb0d211b6a7ce81bfa/src/main/java/com/suke/czx/modules/sys/controller/SysUserController.java#L190-L216
vulncheck.comvulncheck.com/advisories/x-springboot-through-6.0-authorization-bypass-via-user-management

Frequently asked

questions

It can be exploitable through the exposed HTTP endpoints when they are reachable by an authenticated sub-administrator whose permissions are not limited to the targeted user object.

The attacker generally needs valid credentials for an account with user-management permissions. Anonymous access is not implied by the described behavior.

Enforce server-side object-level authorization for each requested account before allowing any sensitive mutation or deletion, with separate controls for highly privileged users.

Use deny-by-default administrative scopes, avoid trusting client-supplied object identifiers, test cross-tenant and cross-role access boundaries, and maintain audit policies for sensitive account operations.

Find out what's already
exploitable in your codebase.