/

CVE-2026-61671

Severity:

HIGH RISK

(8.1)

Broken Object Authorization (CWE-639) in WeGIA CRUD

CVE-2026-61671

Deferred

Vulnerability type

Category:

Broken Access Control

CWE:

CWE-352, CWE-639

Impact:

Unauthorized data access, modification, and deletion

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

WeGIA contains broken object-level authorization in CRUD controllers exposed through its control dispatch endpoint, allowing an authenticated user to access or change records belonging to other users. In some affected workflows, missing CSRF protections may also allow a malicious website to trigger state-changing requests through an authenticated victim's browser.

WeGIA contains broken object-level authorization in CRUD controllers exposed through its control dispatch endpoint, allowing an authenticated user to access or change records belonging to other users. In some affected workflows, missing CSRF protections may also allow a malicious website to trigger state-changing requests through an authenticated victim's browser.

Affected context

The issue affects WeGIA deployments using the vulnerable control dispatch and CRUD flows for attended persons, internal users, employees, and volunteers. Risk increases when request parameters select controller classes, methods, or record identifiers without reliable server-side ownership checks, and when state-changing operations lack CSRF validation.

The issue affects WeGIA deployments using the vulnerable control dispatch and CRUD flows for attended persons, internal users, employees, and volunteers. Risk increases when request parameters select controller classes, methods, or record identifiers without reliable server-side ownership checks, and when state-changing operations lack CSRF validation.

Exploit preconditions

  • Attack surface: The web-based /controle/control.php dispatch endpoint and associated CRUD methods
  • Required access: An authenticated WeGIA account; authorization scope may depend on the deployment's roles and permissions
  • Trigger point: Requests containing controller, method, and record identifier parameters
  • Additional condition: The selected operation must accept an object identifier without verifying that the requester owns or is authorized to access the object
  • CSRF condition: For affected methods without CSRF validation, a victim may only need to visit a malicious page while authenticated
  • Why exploitation is possible: Object-level authorization is missing or insufficient after attacker-controlled dispatch parameters are accepted
  • Attack surface: The web-based /controle/control.php dispatch endpoint and associated CRUD methods
  • Required access: An authenticated WeGIA account; authorization scope may depend on the deployment's roles and permissions
  • Trigger point: Requests containing controller, method, and record identifier parameters
  • Additional condition: The selected operation must accept an object identifier without verifying that the requester owns or is authorized to access the object
  • CSRF condition: For affected methods without CSRF validation, a victim may only need to visit a malicious page while authenticated
  • Why exploitation is possible: Object-level authorization is missing or insufficient after attacker-controlled dispatch parameters are accepted

Why this happens

The underlying flaw is an authorization design failure in which the application trusts request-supplied record identifiers without enforcing ownership or permission checks at the object boundary. Using extract($_REQUEST) also increases the risk of unintended parameter control and broadens the dispatch surface by allowing request data to influence controller and method selection.

This maps primarily to CWE-639: Authorization Bypass Through User-Controlled Key, because a user-controlled identifier can be used to reach another user's record. The missing request-origin validation in several state-changing methods also maps to CWE-352: Cross-Site Request Forgery.

The underlying flaw is an authorization design failure in which the application trusts request-supplied record identifiers without enforcing ownership or permission checks at the object boundary. Using extract($_REQUEST) also increases the risk of unintended parameter control and broadens the dispatch surface by allowing request data to influence controller and method selection.

This maps primarily to CWE-639: Authorization Bypass Through User-Controlled Key, because a user-controlled identifier can be used to reach another user's record. The missing request-origin validation in several state-changing methods also maps to CWE-352: Cross-Site Request Forgery.

Potential impact

  • Sensitive personal, medical, identity, address, financial, or employee data could be disclosed
  • An authenticated user could modify records belonging to other users
  • Records could be deleted or rendered unavailable
  • Victims could have account or profile information altered without authorization
  • CSRF-based requests could cause unauthorized state changes through an authenticated browser
  • Data integrity, privacy, and operational workflows could be disrupted
  • Sensitive personal, medical, identity, address, financial, or employee data could be disclosed
  • An authenticated user could modify records belonging to other users
  • Records could be deleted or rendered unavailable
  • Victims could have account or profile information altered without authorization
  • CSRF-based requests could cause unauthorized state changes through an authenticated browser
  • Data integrity, privacy, and operational workflows could be disrupted

General mitigation guidance

Mitigation should center on centralized, server-side object authorization and narrowly defined request dispatching.

Common defensive patterns include:

  • Enforcing ownership or role-based authorization for every read, create, update, and delete operation
  • Deriving permitted object scope from the authenticated principal rather than trusting request identifiers
  • Replacing dynamic request extraction and unrestricted method selection with explicit allowlists and typed request handling
  • Applying CSRF protection to every state-changing browser operation, including methods that appear internal
  • Using secure-by-default authorization middleware or policy checks at controller and service boundaries
  • Limiting privileged operations through least-privilege roles and narrowly scoped permissions
  • Returning consistent authorization failures without revealing whether another user's record exists
  • Validating identifiers and enforcing schema constraints without treating validation as a substitute for authorization

Mitigation should center on centralized, server-side object authorization and narrowly defined request dispatching.

Common defensive patterns include:

  • Enforcing ownership or role-based authorization for every read, create, update, and delete operation
  • Deriving permitted object scope from the authenticated principal rather than trusting request identifiers
  • Replacing dynamic request extraction and unrestricted method selection with explicit allowlists and typed request handling
  • Applying CSRF protection to every state-changing browser operation, including methods that appear internal
  • Using secure-by-default authorization middleware or policy checks at controller and service boundaries
  • Limiting privileged operations through least-privilege roles and narrowly scoped permissions
  • Returning consistent authorization failures without revealing whether another user's record exists
  • Validating identifiers and enforcing schema constraints without treating validation as a substitute for authorization

How teams detect issues like this

Organizations can look for:

  • Static analysis findings involving extract($_REQUEST), dynamic controller or method dispatch, and direct use of request identifiers in CRUD queries
  • Code review signals showing database operations that lack an authorization check tied to the authenticated principal
  • Tests that access, modify, and delete objects across users, roles, and tenants
  • Checks confirming CSRF tokens are required for every state-changing request and validated server-side
  • Runtime monitoring for repeated cross-account identifier access, unusual CRUD activity, and authorization failures
  • Policy enforcement requiring centralized authorization middleware and explicit dispatch allowlists

Automated security review tools may help identify dynamic request handling and missing authorization patterns, but application-specific access-control tests remain important.

Organizations can look for:

  • Static analysis findings involving extract($_REQUEST), dynamic controller or method dispatch, and direct use of request identifiers in CRUD queries
  • Code review signals showing database operations that lack an authorization check tied to the authenticated principal
  • Tests that access, modify, and delete objects across users, roles, and tenants
  • Checks confirming CSRF tokens are required for every state-changing request and validated server-side
  • Runtime monitoring for repeated cross-account identifier access, unusual CRUD activity, and authorization failures
  • Policy enforcement requiring centralized authorization middleware and explicit dispatch allowlists

Automated security review tools may help identify dynamic request handling and missing authorization patterns, but application-specific access-control tests remain important.

Sources

SourceLink
github.comgithub.com/LabRedesCefetRJ/WeGIA/commit/5fd072a416e3c85817f8b77d47a6d970345b0fc2
github.comgithub.com/LabRedesCefetRJ/WeGIA/commit/83ae8d1b417e0d8ef6a603ec5745f0967426ca6d
github.comgithub.com/LabRedesCefetRJ/WeGIA/issues/492
github.comgithub.com/LabRedesCefetRJ/WeGIA/releases/tag/3.8.7
github.comgithub.com/LabRedesCefetRJ/WeGIA/security/advisories/GHSA-rf87-2prr-f2p2

Frequently asked

questions

It may be exploitable through the web application by an authenticated user who can reach the affected dispatch and CRUD endpoints. The exact scope depends on deployment permissions and exposed functionality.

Authentication is generally required. Exploitation also depends on being able to submit requests containing target record identifiers and reach methods that do not enforce object-level authorization.

No. The advisory identifies missing CSRF validation in affected AtendidoControle and InternoControle operations, while some FuncionarioControle and VoluntarioControle methods have CSRF checks. CSRF protection does not replace ownership or authorization checks.

Enforce centralized, server-side authorization for every object operation, derive access scope from the authenticated user, restrict dispatch to explicit handlers, and require CSRF validation for all browser-based state changes.

Combine object-level authorization tests, role and tenant boundary testing, secure request parsing, explicit endpoint allowlists, least-privilege access, and continuous review of CRUD operations.

It may be exploitable through the web application by an authenticated user who can reach the affected dispatch and CRUD endpoints. The exact scope depends on deployment permissions and exposed functionality.

Authentication is generally required. Exploitation also depends on being able to submit requests containing target record identifiers and reach methods that do not enforce object-level authorization.

No. The advisory identifies missing CSRF validation in affected AtendidoControle and InternoControle operations, while some FuncionarioControle and VoluntarioControle methods have CSRF checks. CSRF protection does not replace ownership or authorization checks.

Enforce centralized, server-side authorization for every object operation, derive access scope from the authenticated user, restrict dispatch to explicit handlers, and require CSRF validation for all browser-based state changes.

Combine object-level authorization tests, role and tenant boundary testing, secure request parsing, explicit endpoint allowlists, least-privilege access, and continuous review of CRUD operations.

Find out what's already
exploitable in your codebase.