Skip to content

Authenticated user-list exposed data via public `/api/allusers` endpoint

Moderate
lin-snow published GHSA-m983-7426-5hrj Mar 22, 2026

Package

Ech0

Affected versions

4.1.9

Patched versions

4.2.0

Description

Summary

A public access-control flaw allows unauthenticated users to retrieve the full user list from GET /api/allusers. This exposes user profile metadata to anyone who can reach the application and enables remote user enumeration.

Details

The vulnerable route is registered as a public endpoint:

  • internal/router/user.go:17
    • appRouterGroup.PublicRouterGroup.GET("/allusers", h.UserHandler.GetAllUsers())

However, the handler appears to have been intended as an authenticated endpoint:

  • internal/handler/user/user.go:177-185
    • API annotations indicate an authentication requirement via @Security ApiKeyAuth

This creates a mismatch between the documented security model and the actual routing configuration. As a result, requests to GET /api/allusers succeed without authentication and return user records, including profile metadata such as usernames, email addresses, role-related flags, avatar values, and locale information.

A negative control against another endpoint that correctly requires authentication further supports that this exposure is unintended: GET /api/user returns 401 Unauthorized when no token is supplied, while GET /api/allusers remains publicly accessible.

Impact

  • Type: Access control bypass / unauthenticated data exposure
  • Who is impacted: Any deployment exposing the API to untrusted networks, and all users whose profile metadata is returned by the endpoint
  • Security impact: Enables remote user enumeration and disclosure of user profile metadata, which may facilitate account reconnaissance, phishing, and targeted credential attacks
  • Attack preconditions: None beyond network access to the affected API endpoint

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

CVE ID

CVE-2026-33638

Weaknesses

Missing Authorization

The product does not perform an authorization check when an actor attempts to access a resource or perform an action. Learn more on MITRE.

Credits