imzanggg/CVE-2026-24055-OAuth-Langfuse
GitHub: imzanggg/CVE-2026-24055-OAuth-Langfuse
本项目是Langfuse未授权Slack OAuth集成漏洞的概念验证(PoC)环境,旨在帮助安全人员复现攻击链并验证官方补丁的修复效果。
Stars: 0 | Forks: 0
# CVE-2026-24055 — Langfuse 中未经身份验证的 Slack OAuth 安装漏洞
## 目录
- [漏洞描述](#mô-tả-lỗ-hổng)
- [系统要求](#yêu-cầu-hệ-thống)
- [运行前的准备工作](#chuẩn-bị-trước-khi-chạy)
- [漏洞利用演示 — Vulnerable v3.146.0](#demo-khai-thác--vulnerable-v3146)
- [验证补丁 — Patched v3.147.0](#verify-bản-vá--patched-v3147)
- [关闭环境](#tắt-môi-trường)
- [参考资料](#tài-liệu-tham-khảo)
## 漏洞描述
**CVE-2026-24055** 是 Langfuse 从 `3.89.0` 版本到 `3.146.0` 版本中存在的 **Improper Access Control**(不当访问控制)漏洞。
Endpoint `/api/public/slack/install` **不要求身份验证**,允许攻击者仅通过知晓 `projectId` 即可将其 Slack 工作区绑定到任意项目中。当受害者创建向 Slack 发送通知的 automation 时,全部 prompt 内容将会泄露至攻击者的工作区。
| 属性 | 详情 |
|---|---|
| **CWE** | CWE-284 — Improper Access Control |
| **受影响版本** | Langfuse `3.89.0` – `3.146.0` |
| **已修复版本** | Langfuse `3.147.0` |
| **GitHub Advisory** | [GHSA-pvq7-vvfj-p98x](https://github.com/langfuse/langfuse/security/advisories/GHSA-pvq7-vvfj-p98x) |
| **NVD** | [CVE-2026-24055](https://nvd.nist.gov/vuln/detail/CVE-2026-24055) |
### 攻击流程

## 系统要求
| 工具 | 最低版本 |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | 任意 |
| RAM | 8 GB |
## 运行前的准备工作
### 创建 Slack App
1. 访问 [https://api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From scratch**
2. 为 app 命名并选择工作区
3. 进入 **OAuth & Permissions** → **Redirect URLs** → 添加:
http://localhost:3000
4. 保存 **Client ID** 和 **Client Secret**
## 漏洞利用演示 — Vulnerable v3.146
### 步骤 1 — 配置环境
```
cd vulnerable
cp .env.example .env
```
打开 `.env` 文件,填入以下数值:
```
NEXTAUTH_URL=http://localhost:3000
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
SLACK_STATE_SECRET=any-random-string
```
### 步骤 2 — 启动 Langfuse v3.146.0
```
docker compose up -d
```
检查容器是否准备就绪:
```
docker compose ps
```
### 步骤 3 — 创建账号
访问 `http://localhost:3000`:
1. **受害者账号**
- 注册账号,创建 Organization → 创建 Project
- 进入 **Settings** → 记录下 **Project ID**
2. **攻击者账号**
- 打开隐身标签页,注册另一个账号(或者 **不登录**)
### 步骤 4 — 执行漏洞利用
在攻击者的浏览器上(**无需登录 Langfuse**),访问:
```
http://localhost:3000/api/public/slack/install?projectId=
```
流程如下:
- 服务器 **不检查身份验证**,直接重定向到 Slack OAuth
- 登录攻击者的 Slack 工作区 → 点击 **Allow**
- 攻击者的工作区已被绑定到受害者的 project 中
### 步骤 5 — 确认数据泄露
使用 **受害者** 账号登录:
1. 进入 **Settings** → **Integrations** → 检查 Slack 是否已连接(攻击者的工作区)
2. 创建 Automation:**Prompts** → **Automations** → **New**
- Trigger:`Prompt created / updated / deleted`
- Action:`Slack` → 选择频道
3. 受害者创建一个新 prompt
4. 攻击者的 Slack 会收到包含 prompt 元数据(名称、版本、labels、tags)的通知
## 验证补丁 — Patched v3.147
### 步骤 1 — 关闭旧环境
```
cd ../vulnerable
docker compose down
```
### 步骤 2 — 启动 Langfuse v3.147.0
```
cd ../patched
cp .env.example .env
# 填入与 vulnerable 部分相同的值
docker compose up -d
```
### 步骤 3 — 再次尝试漏洞利用
**在未登录状态下尝试:**
```
http://localhost:3000/api/public/slack/install?projectId=
```
预期结果 — HTTP `401`:
```
{ "error": "Authentication required" }
```
**尝试以攻击者身份登录,使用受害者的 projectId:**
```
http://localhost:3000/api/public/slack/install?projectId=
```
预期结果 — 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 ← file này
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0 (có lỗ hổng)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0 (đã vá)
└── .env.example
```
## 参考资料
- [GitHub 安全建议 — GHSA-pvq7-vvfj-p98x](https://github.com/langfuse/langfuse/security/advisories/GHSA-pvq7-vvfj-p98x)
- [NVD — CVE-2026-24055](https://nvd.nist.gov/vuln/detail/CVE-2026-24055)
- [修复提交 — 3adc89e](https://github.com/langfuse/langfuse/commit/3adc89e4d72729eabef55e46888b8ce80a7e3b0a)
标签:AI安全, API安全, Chat Copilot, CISA项目, CVE-2026-24055, CWE-284, Docker Compose, GHSA-pvq7-vvfj-p98x, JSON输出, Langfuse, LLMOps, OAuth安装, PoC, Slack集成, Web安全, 提示词窃取, 暴力破解, 未授权漏洞, 漏洞复现, 版权保护, 蓝队分析, 访问控制不当, 请求拦截