/

CVE-2026-111722

Severity:

HIGH RISK

(8.1)

IDOR (CWE-639) in LingGuo-Drama Project API Endpoints

CVE-2026-111722

Deferred

Vulnerability type

Category:

Insecure Direct Object Reference

CWE:

CWE-639

Impact:

Unauthorized access and modification of user projects

Severity:

HIGH RISK

(8.1)

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

LingGuo-Drama contains an insecure direct object reference in project management endpoints because project lookups do not verify ownership. A registered user may enumerate numeric project identifiers to read, overwrite, reassign, or delete projects belonging to other users.

LingGuo-Drama contains an insecure direct object reference in project management endpoints because project lookups do not verify ownership. A registered user may enumerate numeric project identifiers to read, overwrite, reassign, or delete projects belonging to other users.

Affected context

The issue occurs in the administrative project API when authenticated users can reach project operations through numeric identifiers. It becomes risky when authorization is based only on a valid session or identifier lookup and the application does not confirm that the requested project belongs to the requesting user or an explicitly authorized administrative scope.

The issue occurs in the administrative project API when authenticated users can reach project operations through numeric identifiers. It becomes risky when authorization is based only on a valid session or identifier lookup and the application does not confirm that the requested project belongs to the requesting user or an explicitly authorized administrative scope.

Exploit preconditions

  • Attack surface: Authenticated project-management API endpoints
  • Required access: A registered user account capable of sending requests to the project API
  • Trigger point: Requests to project operations using a project identifier
  • Why exploitation is possible: Numeric identifiers can be iterated, while the project retrieval and mutation logic lacks an effective ownership or authorization check
  • Attack surface: Authenticated project-management API endpoints
  • Required access: A registered user account capable of sending requests to the project API
  • Trigger point: Requests to project operations using a project identifier
  • Why exploitation is possible: Numeric identifiers can be iterated, while the project retrieval and mutation logic lacks an effective ownership or authorization check

Why this happens

The underlying bug is an authorization failure in object-level access control. The application retrieves a project using a client-supplied identifier but does not consistently verify that the authenticated principal owns the object or has an approved administrative relationship to it. This behavior maps to CWE-639: Authorization Bypass Through User-Controlled Key, commonly referred to as an insecure direct object reference.

The underlying bug is an authorization failure in object-level access control. The application retrieves a project using a client-supplied identifier but does not consistently verify that the authenticated principal owns the object or has an approved administrative relationship to it. This behavior maps to CWE-639: Authorization Bypass Through User-Controlled Key, commonly referred to as an insecure direct object reference.

Potential impact

  • An attacker may read other users' project information
  • An attacker could overwrite or reassign projects
  • An attacker may delete projects belonging to other users
  • Project ownership and data integrity could be undermined
  • Dependent short-drama workflows may be disrupted
  • An attacker may read other users' project information
  • An attacker could overwrite or reassign projects
  • An attacker may delete projects belonging to other users
  • Project ownership and data integrity could be undermined
  • Dependent short-drama workflows may be disrupted

General mitigation guidance

Mitigation generally focuses on enforcing object-level authorization at every read and mutation boundary.

Common defensive patterns include:

  • Resolve objects through an authorization-aware query scoped to the current principal
  • Verify ownership or an explicitly granted administrative role before every project operation
  • Treat all client-supplied identifiers as untrusted references
  • Prefer non-guessable identifiers as a defense-in-depth measure, without relying on them as authorization
  • Return consistent authorization failures without revealing whether unrelated objects exist
  • Apply least privilege to administrative roles and separate read, update, reassignment, and deletion permissions
  • Log and rate-limit repeated identifier access patterns

Mitigation generally focuses on enforcing object-level authorization at every read and mutation boundary.

Common defensive patterns include:

  • Resolve objects through an authorization-aware query scoped to the current principal
  • Verify ownership or an explicitly granted administrative role before every project operation
  • Treat all client-supplied identifiers as untrusted references
  • Prefer non-guessable identifiers as a defense-in-depth measure, without relying on them as authorization
  • Return consistent authorization failures without revealing whether unrelated objects exist
  • Apply least privilege to administrative roles and separate read, update, reassignment, and deletion permissions
  • Log and rate-limit repeated identifier access patterns

How teams detect issues like this

Organizations can identify this class of issue through:

  • Static analysis and code review rules for object lookups that use request parameters without nearby authorization checks
  • Review of controller, service, and repository methods for ownership-scoped queries
  • Tests that access the same object under multiple user identities and verify denial for unauthorized principals
  • API policy checks requiring object-level authorization on every read and mutation route
  • Monitoring for sequential identifier enumeration, repeated authorization failures, and cross-account project access

Automated code review and API security testing tools may help detect missing authorization paths, but should be supplemented with application-specific access-control tests.

Organizations can identify this class of issue through:

  • Static analysis and code review rules for object lookups that use request parameters without nearby authorization checks
  • Review of controller, service, and repository methods for ownership-scoped queries
  • Tests that access the same object under multiple user identities and verify denial for unauthorized principals
  • API policy checks requiring object-level authorization on every read and mutation route
  • Monitoring for sequential identifier enumeration, repeated authorization failures, and cross-account project access

Automated code review and API security testing tools may help detect missing authorization paths, but should be supplemented with application-specific access-control tests.

Sources

SourceLink
github.comgithub.com/LingGuoAI/LingGuo-Drama/blob/8a6924adf8142678919b4d9a08b9d60c49dcfbed/server/app/http/controllers/admin/v1/projects_controller.go#L173-L198
github.comgithub.com/LingGuoAI/LingGuo-Drama/blob/8a6924adf8142678919b4d9a08b9d60c49dcfbed/server/app/models/projects/projects_utils.go#L11-L14
github.comgithub.com/LingGuoAI/LingGuo-Drama/blob/8a6924adf8142678919b4d9a08b9d60c49dcfbed/server/routes/admin.go#L26-L31
hackmd.iohackmd.io/@hieuPenguinnn/lingguo-drama-broken-access-control
vulncheck.comvulncheck.com/advisories/lingguo-drama-through-commit-8a6924a-idor-via-admin-v1-projects-id-api

Frequently asked

questions

Yes, within the application's authenticated API surface, if a registered user can send requests to the affected project endpoints.

The attacker generally needs a valid user account and access to the project-management API. They do not necessarily need the target user's credentials.

Enforce server-side, object-level authorization for every project read and mutation, using ownership or an explicitly permitted role as part of the authorization decision.

Use authorization-aware data-access patterns, test cross-account access systematically, avoid trusting client-supplied object identifiers, and monitor for identifier enumeration.

Yes, within the application's authenticated API surface, if a registered user can send requests to the affected project endpoints.

The attacker generally needs a valid user account and access to the project-management API. They do not necessarily need the target user's credentials.

Enforce server-side, object-level authorization for every project read and mutation, using ownership or an explicitly permitted role as part of the authorization decision.

Use authorization-aware data-access patterns, test cross-account access systematically, avoid trusting client-supplied object identifiers, and monitor for identifier enumeration.

Find out what's already
exploitable in your codebase.