Enterprise API Triage & Proof-Driven Release Gates
BOLA — User record access by manipulating ID
Broken Object Level Authorization: any authenticated user can access any other user's data by changing the ID parameter.
JWT 'none' algorithm accepted — Authentication bypass
The API accepts JWTs signed with alg:none, allowing attackers to forge tokens without a secret key.
GraphQL introspection enabled in production
GraphQL introspection is enabled allowing full schema discovery — all types, queries, mutations, and internal structures exposed.
No rate limiting on authentication endpoint
The login endpoint accepts unlimited requests without throttling, lockout, or CAPTCHA.
Password hash returned in API response
The admin user detail endpoint includes the bcrypt password hash in the JSON response.
Mass assignment allows privilege escalation
The user update endpoint binds all request properties including sensitive fields like is_admin and role.
CORS — Origin reflection with credentials allowed
The API reflects arbitrary Origin headers and sets Access-Control-Allow-Credentials: true.
Swagger UI exposes internal API endpoints in production
Interactive Swagger UI accessible in production exposes all endpoints including internal admin and debug routes.
BOLA — User record access by manipulating ID
GET /api/v2/users/1001 HTTP/1.1 Host: api.acme.com Authorization: Bearer <user_1000_token>
HTTP/1.1 200 OK
{"id":1001,"name":"Jane Smith","email":"jane@corp.com","ssn_last4":"7821","salary":94000}