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) | ### 攻击流程 ![Sequence Diagram](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/64ca641302231650.png) ## 系统要求 | 工具 | 最低版本 | |---|---| | 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安全, 提示词窃取, 暴力破解, 未授权漏洞, 漏洞复现, 版权保护, 蓝队分析, 访问控制不当, 请求拦截