[Majeur] Endpoints [Roles] sans [Authorize] : 500 NullReferenceException pour un appel anonyme #95
Labels
No labels
bug
enhancement
feature
groupe/chat-data
groupe/friends-blocking
groupe/input-validation
groupe/realtime-presence
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/backend#95
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité : Majeur
Rapports QA d'origine : AUTH-13, ADMIN-01, SECURITY_UX-03
PATCH /users/{id}/role/{roleId}etDELETE /roles/{id}plantent dansRolesMiddlewaresans session, avec stack trace dans la réponse.Détails des rapports
[AUTH-13] Endpoints protégés seulement par `[Roles]` sans `[Authorize]` : 500 NullReferenceException au lieu de 401 sans session — Gravité : Mineur
PATCH /api/users/{u}/role/{r}etDELETE /api/roles/{id}sans cookie -> 500 (stack trace dans le corps).PatchRoleEndpoint.cs:11,DeleteRoleEndpoint.cs:10,RolesMiddleware.cs:21(tk.User.Rolesur null). Pas de contournement constaté (le NRE bloque la requête), mais protection accidentelle.[ADMIN-01] DELETE /roles/{id} et PATCH /users/{id}/role/{id} sans authentification -> 500 NullReferenceException + stack trace exposée — Gravité : Majeur
DELETE /api/roles/{id},PATCH /api/users/{userId}/role/{roleId}curl -X DELETE http://localhost:5173/api/roles/xxx2. idemcurl -X PATCH http://localhost:5173/api/users/a/role/bPOST /api/roles-> 401).System.NullReferenceExceptionavec corps ProblemDetails contenantexception.details(stack trace avec cheminsserveur
/workspaces/backend/API/Middlewares/Roles.cs:line 21),headers,path,endpoint,routeValues.backend/API/Roles/Delete/DeleteRoleEndpoint.cs:10etbackend/API/Users/Roles/Patch/PatchRoleEndpoint.cs:11ont
[Roles(...)]mais PAS[Authorize].RolesMiddleware(backend/API/Middlewares/Roles.cs:21) déréférencetk.User(jamais renseigné quand pas de token) -> NRE. À corriger en ajoutant
[Authorize]et/ou en géranttk.User == nulldans le middleware.(Le fait que la stack trace soit renvoyée est lié au mode Development ; à ne pas laisser en prod.)
[SECURITY_UX-03] 500 + stack trace pour un appel anonyme sur les endpoints `[Roles]` sans `[Authorize]` — Gravité : Majeur
PATCH /api/users/{id}/role/{roleId},DELETE /api/roles/{id}(sans cookie)curl -i -X DELETE http://localhost:5173/api/roles/00000000-0000-0000-0000-000000000000System.NullReferenceExceptionavec le détail complet de l'exception (chemins/workspaces/backend/API/Middlewares/Roles.cs:line 21, pile, en-têtes de la requête, endpoint). Le backend tourne en mode Development (DeveloperExceptionPage) : fuite d'informations si c'est déployé tel quel. (Le contrôle de permission échoue « fermé » : pas de contournement.)backend/API/Middlewares/Roles.cs:21(tk.Usernull quand pas de cookie) + absence de[Authorize]surbackend/API/Users/Roles/Patch/PatchRoleEndpoint.cs:11etbackend/API/Roles/Delete/DeleteRoleEndpoint.cs:10Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.