[Mineur] Permissions sur les events à confirmer : HandleEvent modifie l'event d'autrui, channel ouvert aux non-inscrits #129

Closed
opened 2026-10-28 10:32:18 +00:00 by asventi · 0 comments
Owner

Gravité : Mineur
Rapports QA d'origine : EVENTS-14, EVENTS-15

À arbitrer côté produit.

Détails des rapports

[EVENTS-14] Tout user ayant HandleEvent peut modifier/supprimer l'event d'un autre organisateur — Gravité : Mineur (à confirmer côté produit)
  • Étapes : qa_events_mgr2 (rôle avec HandleEvent, non organisateur) fait PUT puis DELETE /events/{id} d'un event créé par qa_events_org -> 204 / 204. L'organisateur n'est jamais comparé à l'utilisateur courant.
  • Cause probable : UpdateEventCommand.cs, DeleteEventCommand.cs (aucun contrôle ev.Organizer.Id == user.Id). Un Member (permission 0) est bien refusé (401, cf. EVENTS-06).
  • Note : si HandleEvent est censé être "gère tous les events", c'est conforme ; sinon c'est un manque de contrôle d'ownership.
[EVENTS-15] Le channel d'un event est ouvert à tous les users connectés (inscrits ou non) — Gravité : Mineur (à confirmer côté produit)
  • Étapes : event E2 ; qa_events_mgr2 NON inscrit lit GET /channels/{C2}/messages (200) et poste (POST /channels/{C2}/messages -> 201). Après désinscription, l'accès reste identique. Aucun filtre sur EventId dans les endpoints de messages ; Channel.IsWhitelisted ne regarde que les rôles.
  • Cause probable : pas de contrôle d'appartenance event/channel (backend/API/Channels/Channel.cs:46-69, endpoints Messages).

Trouvé 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.

**Gravité :** Mineur **Rapports QA d'origine :** EVENTS-14, EVENTS-15 À arbitrer côté produit. ## Détails des rapports <details><summary>[EVENTS-14] Tout user ayant HandleEvent peut modifier/supprimer l'event d'un autre organisateur — Gravité : Mineur (à confirmer côté produit)</summary> - Étapes : `qa_events_mgr2` (rôle avec HandleEvent, non organisateur) fait `PUT` puis `DELETE /events/{id}` d'un event créé par `qa_events_org` -> 204 / 204. L'organisateur n'est jamais comparé à l'utilisateur courant. - Cause probable : `UpdateEventCommand.cs`, `DeleteEventCommand.cs` (aucun contrôle `ev.Organizer.Id == user.Id`). Un Member (permission 0) est bien refusé (401, cf. EVENTS-06). - Note : si HandleEvent est censé être "gère tous les events", c'est conforme ; sinon c'est un manque de contrôle d'ownership. </details> <details><summary>[EVENTS-15] Le channel d'un event est ouvert à tous les users connectés (inscrits ou non) — Gravité : Mineur (à confirmer côté produit)</summary> - Étapes : event E2 ; `qa_events_mgr2` NON inscrit lit `GET /channels/{C2}/messages` (200) et poste (`POST /channels/{C2}/messages` -> 201). Après désinscription, l'accès reste identique. Aucun filtre sur `EventId` dans les endpoints de messages ; `Channel.IsWhitelisted` ne regarde que les rôles. - Cause probable : pas de contrôle d'appartenance event/channel (`backend/API/Channels/Channel.cs:46-69`, endpoints Messages). </details> --- _Trouvé 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._
asventi self-assigned this 2026-10-28 13:49:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transcendence/backend#129
No description provided.