Summary
OpenAEV lessons endpoints can be accessed without authentication and trust a
client-supplied user identifier without confirming the caller's identity or
exercise membership. An unauthenticated attacker who knows an exercise UUID
may read lessons-learned content and author identities, or create and
overwrite answers attributed to other users.
OpenAEV lessons endpoints can be accessed without authentication and trust a
client-supplied user identifier without confirming the caller's identity or
exercise membership. An unauthenticated attacker who knows an exercise UUID
may read lessons-learned content and author identities, or create and
overwrite answers attributed to other users.
Affected context
The vulnerability affects default OpenAEV installations where the
/api/player/** lessons endpoints are reachable without authentication.
Risk arises when the API accepts a userId query parameter as authoritative
without verifying the caller's identity, permissions, or membership in the
relevant cyber exercise. Exposure depends on the endpoints being accessible
and exercise identifiers being discoverable or obtained by an attacker.
The vulnerability affects default OpenAEV installations where the
/api/player/** lessons endpoints are reachable without authentication.
Risk arises when the API accepts a userId query parameter as authoritative
without verifying the caller's identity, permissions, or membership in the
relevant cyber exercise. Exposure depends on the endpoints being accessible
and exercise identifiers being discoverable or obtained by an attacker.
Exploit preconditions
- Attack surface: HTTP requests to the
/api/player/**lessons endpoints - Required access: No authenticated account is required on affected default installations
- Trigger point: Reading, creating, or updating lesson answers through the API
- Required knowledge: An exercise UUID or another valid exercise identifier
- Why exploitation is possible: The service omits authentication checks and
accepts a client-controlled userId without enforcing ownership or exercise
membership
- Attack surface: HTTP requests to the
/api/player/**lessons endpoints - Required access: No authenticated account is required on affected default installations
- Trigger point: Reading, creating, or updating lesson answers through the API
- Required knowledge: An exercise UUID or another valid exercise identifier
- Why exploitation is possible: The service omits authentication checks and
accepts a client-controlled userId without enforcing ownership or exercise
membership
Why this happens
The underlying issue is a failure to enforce authentication and authorization
at protected API boundaries. The application treats a client-supplied user
identifier as trusted rather than deriving identity from an authenticated
security context and verifying access to the target exercise. This behavior
maps primarily to CWE-306: Missing Authentication for Critical Function,
with related exposure to CWE-639: Authorization Bypass Through User-Controlled Key and CWE-862: Missing Authorization.
The underlying issue is a failure to enforce authentication and authorization
at protected API boundaries. The application treats a client-supplied user
identifier as trusted rather than deriving identity from an authenticated
security context and verifying access to the target exercise. This behavior
maps primarily to CWE-306: Missing Authentication for Critical Function,
with related exposure to CWE-639: Authorization Bypass Through User-Controlled Key and CWE-862: Missing Authorization.
Potential impact
- An unauthenticated party may read lessons-learned questions and answers
- Author identities and other exercise-related information could be disclosed
- Attackers may create answers attributed to arbitrary users
- Existing answers could be overwritten or tampered with
- Exercise records and participant trust may be damaged
- Manipulated content could affect reporting, training outcomes, or incident analysis
- An unauthenticated party may read lessons-learned questions and answers
- Author identities and other exercise-related information could be disclosed
- Attackers may create answers attributed to arbitrary users
- Existing answers could be overwritten or tampered with
- Exercise records and participant trust may be damaged
- Manipulated content could affect reporting, training outcomes, or incident analysis
General mitigation guidance
Mitigation generally focuses on enforcing authentication and object-level
authorization for every lessons endpoint.
Common defensive patterns include:
- Require an authenticated security context before processing player requests
- Derive the effective user identity from the authenticated session or token
rather than trusting a request parameter
- Verify that the authenticated user belongs to the referenced exercise and
has the required operation-specific permission
- Apply authorization checks consistently to reads, creates, updates, and
deletes
- Use deny-by-default policies and avoid exposing exercise identifiers as
sufficient authorization material
- Enforce least privilege for participant and administrative roles
- Validate ownership and resource relationships on the server side
- Record and monitor authorization failures and unusual answer modifications
Mitigation generally focuses on enforcing authentication and object-level
authorization for every lessons endpoint.
Common defensive patterns include:
- Require an authenticated security context before processing player requests
- Derive the effective user identity from the authenticated session or token
rather than trusting a request parameter
- Verify that the authenticated user belongs to the referenced exercise and
has the required operation-specific permission
- Apply authorization checks consistently to reads, creates, updates, and
deletes
- Use deny-by-default policies and avoid exposing exercise identifiers as
sufficient authorization material
- Enforce least privilege for participant and administrative roles
- Validate ownership and resource relationships on the server side
- Record and monitor authorization failures and unusual answer modifications
How teams detect issues like this
Detection approaches can include:
- Static analysis rules identifying unauthenticated controller or route
handlers for sensitive resources
- Code review checks for direct use of
userIdor similar identity fields
from query parameters, request bodies, or URL paths
- Verification that every read and write path performs both authentication
and object-level authorization
- API tests that attempt anonymous access and cross-user or cross-exercise
operations
- Policy checks requiring security middleware on all
/api/player/**routes - Runtime monitoring for anonymous requests, mismatched authenticated and
supplied identities, and repeated answer overwrites
Automated application-security testing and code-review tools may help identify
missing route protections, but authorization behavior should also be validated
with integration tests.
Detection approaches can include:
- Static analysis rules identifying unauthenticated controller or route
handlers for sensitive resources
- Code review checks for direct use of
userIdor similar identity fields
from query parameters, request bodies, or URL paths
- Verification that every read and write path performs both authentication
and object-level authorization
- API tests that attempt anonymous access and cross-user or cross-exercise
operations
- Policy checks requiring security middleware on all
/api/player/**routes - Runtime monitoring for anonymous requests, mismatched authenticated and
supplied identities, and repeated answer overwrites
Automated application-security testing and code-review tools may help identify
missing route protections, but authorization behavior should also be validated
with integration tests.
Sources
| Source | Link |
|---|---|
| github. | github.com/ |

