# SEC-06 — VIEWER peut créer et modifier des réservations **Gravité historique : Moyenne.** Classification : CWE-862. **État au 14 septembre 2026 :** Corrigé dans le code suivi. Les routes mutantes CSV exigent ADMIN, MANAGER ou USER via RolesGuard ; les lectures prévues pour VIEWER restent disponibles. ## Executive Summary Un compte VIEWER actif, y compris un ancien USER rétrogradé, doit pouvoir consulter mais ne pas créer ni modifier une réservation. L'attaquant peut envoyer directement les requêtes HTTP même si l'interface masque les boutons. Cette fiche repose sur la relecture du code historique accessible et du correctif courant, ainsi que des preuves documentées lors des passes précédentes. Elle ne constate aucun incident réel. La plus ancienne version ici vérifiée est le snapshot `8446f87` ; les corrections historiques figurent dans `c09b8be`. Aucun tag local ni version déployée n'a permis d'établir une première release vulnérable ou corrigée. Voir [METHODOLOGIE.md](../METHODOLOGIE.md). ## Background Le rôle VIEWER est explicitement en lecture seule dans l’entité User. Le contrôle de propriétaire et le quota ne remplacent pas l’autorisation d’écriture. ## Vulnerability Details Le contrôleur CSV applique l'authentification mais omettait le contrôle de rôle sur la création multipart et plusieurs mutations. La méthode vérifie la présence de documents, l'identité et le quota ; le service crée ensuite l'entité et ses fichiers. Les contrôles de propriété restent appliqués sur les mutations de dossiers existants, mais ils répondent à une autre question : posséder une réservation ne rétablit pas les droits d'écriture après passage en VIEWER. Extrait historique vérifié, `apps/backend/src/application/controllers/csv-bookings.controller.ts`, lignes 86–88 du snapshot préaudit : ```typescript @Post() @ApiBearerAuth() @UseInterceptors(FilesInterceptor('documents', 10)) ``` Les numéros ci-dessus décrivent le snapshot ancien ; les liens suivants ouvrent les fichiers courants, où les lignes peuvent avoir changé. Sources à examiner ensemble : - [apps/backend/src/application/controllers/csv-bookings.controller.ts](../../apps/backend/src/application/controllers/csv-bookings.controller.ts) - [apps/backend/src/domain/entities/user.entity.ts](../../apps/backend/src/domain/entities/user.entity.ts) - [apps/backend/src/application/services/csv-booking.service.ts](../../apps/backend/src/application/services/csv-booking.service.ts) ## Exploitability Analysis Écriture non autorisée pour un rôle explicitement en lecture seule : création et opérations sur ses propres réservations, dont modification, paiement ou annulation suivant la route. Aucun accès arbitraire aux dossiers d'une autre organisation n'est établi par cette faille. Les limites d'offre et contraintes du domaine restent en place. Le code applicatif établit le chemin décrit, mais ne renseigne pas les protections effectives d'un déploiement donné, sa version en ligne ou les accès déjà exercés par un attaquant. La gravité ci-dessus est celle du mécanisme vulnérable avant correction ; elle n'est pas un score de risque résiduel calculé pour la production. ## Proof of Concept Tests de non-régression existants, inspectables dans le dépôt : - [apps/backend/src/application/controllers/csv-bookings.security.spec.ts](../../apps/backend/src/application/controllers/csv-bookings.security.spec.ts) Ils testent les refus et les usages autorisés avec des données locales. Ils ne prouvent pas qu'une ancienne exploitation a eu lieu en production. Les commandes et résultats consolidés sont dans [VALIDATION.md](../VALIDATION.md) ; aucun nouvel exploit n'a été exécuté pendant la rédaction. ## Remediation Corrigé dans le code suivi. Les routes mutantes CSV exigent ADMIN, MANAGER ou USER via RolesGuard ; les lectures prévues pour VIEWER restent disponibles. Pour solder le constat en exploitation, vérifier le comportement sur la version effectivement déployée et conserver les contrôles légitimes décrits. La présente passe ajoute uniquement de la documentation ; les correctifs mentionnés existaient avant sa rédaction. ## Summary VIEWER peut créer et modifier des réservations est un constat historique de l'audit, à lire avec son état courant ci-dessus. La preuve porte sur le mécanisme et les contrôles cités ; elle ne constitue ni une attestation d'exploitation réelle ni une certification exhaustive du projet.