xpeditis2.0/audit_security/README.md

8.7 KiB
Raw Blame History

Audit de sécurité — Xpeditis

Ce dossier rassemble 19 constats de sécurité connus, chacun expliqué dans une fiche, et 2 observations à valider. Il décrit l'état du code, mis à jour le 17 septembre 2026, sur la branche check_secu.

Ce n'est pas une liste exhaustive de toutes les failles possibles ni une attestation de sécurité de la production. Une grande partie des constats a déjà été corrigée dans le code ; les fiches expliquent le problème historique, la preuve, les limites et le risque restant. Après la passe documentaire, les corrections restantes ont été demandées et traitées le 17 septembre ; voir le compte rendu.

État de la poursuite — 15 septembre 2026

La nouvelle tentative d'audit approfondi de tout le dépôt a échoué sur une limite d'usage après trois workers de découverte infructueux. Aucun manifeste réussi ni identifiant de scan n'a été retourné ; les éventuels résultats intermédiaires ne sont donc pas consultables depuis cette réponse. La couverture reste partielle, sans nouveau constat validé à ajouter. Les 18 constats et 2 observations ci-dessous restent ceux documentés précédemment. Voir le journal de poursuite pour l'erreur exacte et les limites.

Corrections — 17 septembre 2026

SEC-07 est corrigé dans le code local, y compris les logs HTTP/SMTP/TypeORM. OBS-01 refuse désormais un tarif inconnu avant effets de bord ; ses cas de panne et ses contrôles légitimes sont testés. OBS-02 reste une observation : les tests du pipe confirment le refus actuel de création/modification. SEC-19 documente une clé d'API retirée de la configuration locale, dont la révocation externe reste nécessaire. Aucun déploiement n'est effectué.

À regarder d'abord

  • SEC-07 : correction locale appliquée. Les credentials ne doivent plus être recopiés par les chemins de journalisation corrigés ; les secrets déjà présents dans les anciens logs restent à traiter.
  • Actions opérationnelles non vérifiées : SEC-05, SEC-10 et SEC-19. La suppression d'un token dans une réponse ou d'un secret SMTP dans le dernier fichier ne révoque pas les copies déjà distribuées.
  • Version et configuration en ligne inconnues : SEC-15/16/17/18. Les correctifs TLS principaux sont suivis dans Git ; les correctifs Stripe et droits d'abonnement sont locaux au moment de cette rédaction. Aucun déploiement n'est confirmé.
  • OBS-01 corrigé ; OBS-02 à surveiller. La gestion du tarif inconnu est corrigée et testée. Une éventuelle voie d’écriture de destination webhook reste à établir.

Index des constats

La gravité décrit le comportement vulnérable avant correction. Elle ne doit pas être lue comme le risque résiduel du site en ligne. Les IDs sont stables dans ce dossier ; les chemins ouvrent les fiches détaillées.

ID Problème Gravité État actuel
SEC-01 La redirection de connexion permet une XSS DOM Élevée Corrigé dans Git ; déploiement inconnu
SEC-02 Un manager peut modifier une autre organisation Élevée Corrigé dans Git ; déploiement inconnu
SEC-03 Les WebSockets acceptent des sessions révoquées ou désactivées Moyenne Corrigé dans Git ; déploiement inconnu
SEC-04 Un membre peut marquer toutes les notifications comme lues Moyenne Corrigé dans Git ; déploiement inconnu
SEC-05 Le client reçoit le jeton de réponse du transporteur Moyenne Réponses corrigées ; anciens tokens à traiter
SEC-06 VIEWER peut créer et modifier des réservations Moyenne Corrigé dans Git ; déploiement inconnu
SEC-07 Les logs contiennent mots de passe et invitations Moyenne Correctif local testé ; anciennes copies à traiter
SEC-08 Le changement de mot de passe conserve les anciennes sessions Moyenne Corrigé dans Git ; déploiement inconnu
SEC-09 Les téléversements ne bornent pas la mémoire utilisée Moyenne Corrigé dans Git ; déploiement inconnu
SEC-10 Une clé SMTP figure dans un fichier suivi Moyenne Littéral retiré ; rotation fournisseur non vérifiée
SEC-11 La résiliation peut conserver les avantages payants Moyenne Corrigé dans Git ; déploiement inconnu
SEC-12 Les dossiers des collègues sont accessibles sans rôle de gestion Faible Corrigé dans Git ; déploiement inconnu
SEC-13 Un manager peut rétrograder un administrateur de son organisation Faible Corrigé dans Git ; déploiement inconnu
SEC-14 Les exports CSV conservent les formules injectées Faible Corrigé dans Git ; déploiement inconnu
SEC-15 SMTP : identité du serveur non vérifiée et STARTTLS facultatif Moyenne Code corrigé ; configuration effective à confirmer
SEC-16 PostgreSQL : TLS incohérent et certificat non authentifié Moyenne Chemins principaux corrigés ; CA/scripts à vérifier
SEC-17 Stripe : session Checkout non liée à son organisation Moyenne Correctif local non commité
SEC-18 Droits payants conservés sur un abonnement inactif Moyenne Correctif local non commité
SEC-19 Clé d’API littérale en préproduction Moyenne, validité inconnue Littéral retiré ; révocation externe nécessaire

Suivi des observations initiales

ID Analyse Élément manquant
OBS-01 Frais ramenés à zéro après erreur de lecture de l'abonnement Panne confirmée au service ; correctif local avec 13 tests. Contrôle de la panne par un attaquant non établi.
OBS-02 Destinations webhook et risque de requêtes internes Deux tests confirment le refus du pipe ; autres voies et données anciennes inconnues.

Ces observations ne sont pas ajoutées aux constats SEC. Une lacune de couverture, une dépendance non analysée ou une configuration de production inconnue n'est pas automatiquement une vulnérabilité.

Comment lire les fiches

Chaque fiche SEC expose le scénario, les droits nécessaires, le chemin dans le code, les contrôles insuffisants, l'impact étroit, les preuves disponibles et l'état de correction. Les titres techniques suivent un format commun ; le contenu est en français. Les extraits historiques sont explicitement distingués des liens vers le code courant.

  • METHODOLOGIE.md : snapshots Git, statuts, gravité et nature des preuves.
  • COUVERTURE.md : zones examinées, angles morts, hypothèses écartées et ordre de poursuite de l'analyse.
  • VALIDATION.md : tests déjà observés, limites et commandes locales reproductibles.

La dernière suite backend du 17 septembre compte 512 tests réussis et 5 ignorés, avec compilation et lint ciblé réussis. Ce résultat ne signifie pas que tout le monorepo a été audité. L'audit de dépendances reste non réalisé ; aucun résultat npm ni CVE n'est inventé.

Maintenance du registre

Conserver un ID pour chaque cause, mettre à jour son statut avec une preuve datée et distinguer toujours correction locale, commit et déploiement. Lorsqu'un nouveau chemin révèle la même cause, compléter la fiche existante, comme pour les logs transporteur de SEC-07. Une hypothèse devient un constat seulement après vérification de son entrée contrôlable, des contrôles traversés et de son effet protégé.

Ne jamais joindre de mot de passe, token réel, clé SMTP, fichier .env ou journal contenant un secret à ces fiches. Les documents décrivent les champs et opérations nécessaires à la vérification, pas leurs valeurs de production.