
Projet du cours Sécurité Web et Applications — Groupe 06, classe NT213.Q21.ANTT
Le projet reproduit une vulnérabilité de sécurité réelle publiée (CVE-2026-24055) sur la plateforme Langfuse — un endpoint OAuth permettant à un attaquant de s'emparer de la connexion d'un workspace Slack à le projet d'autrui sans avoir besoin de se connecter.
Le projet comprend : la mise en place d'un environnement Docker simulant à la fois la version vulnérable et la version corrigée, l'exécution de l'exploitation étape par étape, et la vérification que le correctif fonctionne correctement. Cela permet de pratiquer l'analyse d'une vulnérabilité de contrôle d'accès dans un flux OAuth, une compétence directement applicable lors de la construction ou de l'audit de systèmes d'authentification web.
Compétences démontrées : analyse de flux OAuth2, Docker, lecture d'avis de sécurité, rédaction de rapports techniques, tests de sécurité (security testing).
CVE-2026-24055 est une vulnérabilité de contrôle d'accès inapproprié dans Langfuse des versions 3.89.0 à 3.146.0.
L'endpoint /api/public/slack/install ne requiert pas d'authentification, permettant à un attaquant de lier son workspace Slack à n'importe quel projet en connaissant simplement le projectId. Lorsque la victime crée une automatisation envoyant des notifications vers Slack, tout le contenu du prompt est divulgué vers le workspace de l'attaquant.
| Attribut | Détail |
|---|---|
| CWE | CWE-284 — Contrôle d'accès inapproprié |
| Versions affectées | Langfuse 3.89.0 – 3.146.0 |
| Version corrigée | Langfuse 3.147.0 |
| GitHub Advisory | GHSA-pvq7-vvfj-p98x |
| NVD | CVE-2026-24055 |

| Outil | Version minimale |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | n'importe quelle |
| RAM | 8 GB |
L'API Slack permet d'utiliser
http://localhost:3000comme Redirect URL.
http://localhost:3000
cd vulnerable
cp .env.example .env
Ouvrir le fichier .env, renseigner les valeurs suivantes :
NEXTAUTH_URL=http://localhost:3000
SLACK_CLIENT_ID=<your-slack-client-id>
SLACK_CLIENT_SECRET=<your-slack-client-secret>
SLACK_STATE_SECRET=any-random-string
docker compose up -d
Vérifier que les conteneurs sont prêts :
docker compose ps
Attendre environ 30–60 secondes. Tous les conteneurs doivent être à l'état
Up (healthy).
Accéder à http://localhost:3000 :
Compte Victime
Compte Attaquant
Sur le navigateur de l'attaquant (sans se connecter à Langfuse), accéder à :
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
Déroulement :
Se connecter avec le compte victime :
Prompt created / updated / deletedSlack → choisir le channelcd ../vulnerable
docker compose down
cd ../patched
cp .env.example .env
# Renseigner les mêmes valeurs que dans la partie vulnerable
docker compose up -d
Essayer sans se connecter :
http://localhost:3000/api/public/slack/install?projectId=<any-project-id>
Résultat attendu — HTTP 401 :
{ "error": "Authentication required" }
Essayer en se connectant en tant qu'attaquant, avec le projectId de la victime :
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
Résultat attendu — HTTP 403 :
{ "error": "You do not have permission to configure Slack for this project" }
La vulnérabilité est entièrement corrigée.
docker compose down
Pour supprimer toutes les données (volumes) :
docker compose down -v
cve-2026-24055/
├── README.md ← ce fichier
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0 (vulnérable)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0 (corrigé)
└── .env.example