
Projektarbeit im Fach Web- und Anwendungssicherheit — Gruppe 06, Klasse NT213.Q21.ANTT
Das Projekt reproduziert eine real veröffentlichte Sicherheitslücke (CVE-2026-24055) auf der Plattform Langfuse — ein OAuth-Endpoint, der es Angreifern ermöglicht, die Verbindung eines Slack-Workspace mit dem Projekt anderer zu übernehmen, ohne sich anmelden zu müssen.
Das Projekt umfasst: den Aufbau einer Docker-Umgebung, die sowohl die verwundbare als auch die gepatchte Version simuliert, die schrittweise Durchführung der Ausnutzung und die Verifizierung, dass der Patch korrekt funktioniert. Dadurch wird die praktische Analyse einer Access-Control-Schwachstelle im OAuth-Ablauf geübt — eine Fähigkeit, die direkt bei der Entwicklung oder dem Audit von Web-Authentifizierungssystemen anwendbar ist.
Demonstrierte Fähigkeiten: Analyse des OAuth2-Ablaufs, Docker, Lesen von Security Advisories, Verfassen technischer Berichte, Security Testing.
CVE-2026-24055 ist eine Schwachstelle der Kategorie Improper Access Control in Langfuse von Version 3.89.0 bis 3.146.0.
Der Endpoint /api/public/slack/install erfordert keine Authentifizierung, was es einem Angreifer ermöglicht, seinen eigenen Slack-Workspace an ein beliebiges Projekt zu binden, sofern er nur die projectId kennt. Wenn das Opfer eine Automatisierung erstellt, die Benachrichtigungen an Slack sendet, wird der gesamte Inhalt des Prompts in den Workspace des Angreifers geleakt.
| Eigenschaft | Details |
|---|---|
| CWE | CWE-284 — Improper Access Control |
| Betroffene Versionen | Langfuse 3.89.0 – 3.146.0 |
| Gepatchte Version | Langfuse 3.147.0 |
| GitHub Advisory | GHSA-pvq7-vvfj-p98x |
| NVD | CVE-2026-24055 |

| Werkzeug | Mindestversion |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | beliebig |
| RAM | 8 GB |
Die Slack-API erlaubt die Verwendung von
http://localhost:3000als Redirect-URL.
http://localhost:3000
cd vulnerable
cp .env.example .env
Öffne die Datei .env und trage folgende Werte ein:
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
Prüfe, ob die Container bereit sind:
docker compose ps
Warte etwa 30–60 Sekunden. Alle Container müssen den Status
Up (healthy)haben.
Rufe http://localhost:3000 auf:
Opfer-Konto
Angreifer-Konto
Rufe im Browser des Angreifers (ohne Anmeldung bei Langfuse) auf:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
Der Ablauf:
Melde dich mit dem Opfer-Konto an:
Prompt created / updated / deletedSlack → wähle einen Channelcd ../vulnerable
docker compose down
cd ../patched
cp .env.example .env
# Dieselben Werte wie im vulnerable-Teil eintragen
docker compose up -d
Versuch ohne Anmeldung:
http://localhost:3000/api/public/slack/install?projectId=<any-project-id>
Erwartetes Ergebnis — HTTP 401:
{ "error": "Authentication required" }
Versuch mit Anmeldung als Angreifer unter Verwendung der projectId des Opfers:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
Erwartetes Ergebnis — HTTP 403:
{ "error": "You do not have permission to configure Slack for this project" }
Die Schwachstelle wurde vollständig gepatcht.
docker compose down
Wenn alle Daten (Volumes) gelöscht werden sollen:
docker compose down -v
cve-2026-24055/
├── README.md ← diese Datei
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0 (verwundbar)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0 (gepatcht)
└── .env.example