Broken Access Control Exposes Email Verification Status and Privacy Settings via API Endpoint
Low
W
WakaTime
Submitted None
Actions:
Reported by
ctrl_cipher
Vulnerability Details
Technical details and impact analysis
The /api/v1/users/{username} endpoint leaks sensitive email-related metadata (e.g., is_email_confirmed, is_email_public) without proper authorization checks. Attackers can abuse this to:
Identify verified/active accounts for targeted attacks.
Determine users’ email privacy preferences (even if the email itself is hidden).
This behavior allows me to distinguish whether an account's email address is confirmed or not.
#Steps to Reproduce
1. Authenticate as a valid user (e.g. user/current).
2. Intercept a request to your own profile:
>GET /api/v1/users/attacker_user HTTP/2
Host: wakatime.com
Cookie:
3. Modify the username in the URL to access another user’s blocked:
>GET /api/v1/users/<any name> HTTP/2
Host: wakatime.com
Cookie:
4. Observe the response:
>{
"is_email_confirmed": true,
"is_email_public": false,
"public_email": null,
// ... other sensitive fields
}
## Impact
Account Enumeration:
Attackers can confirm valid/verified accounts (is_email_confirmed: true), enabling targeted credential stuffing or phishing.
Privacy Violations:
Knowing a user’s email privacy preference (is_email_public: false) leaks their intent to keep their email private.
Attack Surface Expansion:
Combined with other vulnerabilities (e.g., password reset flaws), attackers can prioritize high-value accounts.
Report Details
Additional information and metadata
State
Closed
Substate
Resolved
Submitted
Weakness
Improper Access Control - Generic