Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-68664-LangGrinch-PoC — 一个用于识别和演示LangChain Core(<0.3.81)中反序列化漏洞的测试框架。仅限教育用途。 | Kitploit
工具/GitHubGitHub/ak-cybe/cve-2025-68664-langgrinch-poc
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试秘密检测学习与教育Payload 开发AI 安全

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHubak-cybe/cve-2025-68664-langgrinch-poc

CVE-2025-68664-LangGrinch-PoC

一个用于识别和演示LangChain Core(<0.3.81)中反序列化漏洞的测试框架。仅限教育用途。

查看仓库
32229个月前尚未审核
分享

头部横幅

打字动画 SVG

严重性 类型 代号 状态 CWE


📑 目录

  • 🎯 执行摘要
  • 📂 项目结构
  • 🚀 快速开始
  • 🐛 漏洞深入分析
  • 🔬 技术根本原因分析
  • ⚔️ 攻击链方法论
  • 💀 Payload 武器库 (55+)
  • 🎮 操作者策略指南
  • 🛡️ 缓解与防御
  • 📚 参考与致谢

📂 项目结构```

LangGrinch-PoC/ │ ├── README.md # Main documentation & writeup ├── PAYLOADS.md # Complete payload arsenal (55+) ├── langgrinch_fuzzer.py # Python payload generator & tester ├── requirements.txt # Python dependencies └── LICENSE # MIT License

## 🚀 快速开始

### 安装```bash
# Clone the repository
git clone https://github.com/Ak-cybe/LangGrinch-PoC.git
cd LangGrinch-PoC

# Install dependencies
pip install -r requirements.txt

用法```bash

List all available payloads

python langgrinch_fuzzer.py --list

Show payloads by category

python langgrinch_fuzzer.py --category recon python langgrinch_fuzzer.py --category ssrf python langgrinch_fuzzer.py --category rce

Generate custom secret extraction payload

python langgrinch_fuzzer.py --secret MY_API_KEY

Generate custom SSRF payload

python langgrinch_fuzzer.py --ssrf http://your-webhook.com/

Export all payloads to JSON

python langgrinch_fuzzer.py --export payloads.json

---

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/15055/a59cc259070b0a6930250b423ecf6befeab7fd75694091738ff5f8d2899b56ad.gif" width="200" alt="黑客动图"/>
  <img src="https://assets.kitploit.com/production/public/readmes/15055/0751965da24039c9facbe6006461ec38a66ff560b42dc590d1964f43f7f9853d.gif" width="200" alt="安全动图"/>
  矩阵动图
</p>

---

## 🎯 概要

**CVE-2025-68664(代号:LangGrinch)** 是一个在 **LangChain Core Python 包** 中发现的严重 **序列化注入漏洞**。攻击者可以通过 LLM 输出或用户控制的字典注入恶意的 `lc` 标记,从而实现:

1. 🔑 **环境密钥窃取**(API 密钥、数据库密码)
2. 🌐 **SSRF 攻击**(访问内部服务)
3. 💀 **远程代码执行**(通过 Jinja2 SSTI 链)
4. 📂 **文件系统访问**(读取敏感文件)

<table align="center">
<tr>
<td>

### ⚡ 快捷统计

| 🔥 指标 | 📊 数值 |
|-----------|----------|
| **CVE ID** | CVE-2025-68664 |
| **代号** | LangGrinch |
| **攻击类型** | 反序列化注入 |
| **身份验证要求** | 无(提示注入) |
| **复杂度** | 低 |

</td>
<td>

### 🎯 受影响版本

| 📌 属性 | 📝 值 |
|-------------|----------|
| **包** | langchain-core |
| **受影响版本** | < 0.3.81, >= 1.0.0 < 1.2.5 |
| **已修复版本** | 0.3.81+, 1.2.5+ |
| **影响范围** | 密钥 + RCE |
| **CWE** | CWE-502 |

</td>
</tr>
</table>

---

## 🐛 漏洞深入剖析

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/15055/fb07ef9946fd69ee29be7a85737fa8b18fa02c8ec40293de8a4994d5e8419a6a.gif" width="300" alt="漏洞动图"/>
</p>

### 📋 技术概述

| 属性 | 值 |
|----------|-------|
| 🆔 **CVE ID** | CVE-2025-68664 |
| 🏷️ **代号** | LangGrinch |
| 📊 **严重性** | 严重 🔴 |
| 🔗 **CWE** | CWE-502(不可信数据的反序列化) |
| 📦 **受影响包** | `langchain-core` |
| ⚠️ **受影响版本** | `< 0.3.81` 以及 `>= 1.0.0, < 1.2.5` |
| ✅ **已修复版本** | `0.3.81+`,`1.2.5+` |

### 🤖 什么是 LangChain?

LangChain 是一个流行的 Python 框架,用于构建基于**大型语言模型(LLM)**的应用。它在各行业中广泛部署:

| 🏢 使用场景 | 📝 描述 |
|-------------|----------------|
| 🤖 **AI 聊天机器人** | 客户服务、支持代理 |
| 🔍 **RAG 系统** | 检索增强生成 |
| 🔧 **AI 代理** | 自主任务执行 |
| 📊 **数据处理** | 文档分析、摘要 |
| 🔄 **工作流自动化** | AI 驱动管道 |

### 🔧 技术根本原因

LangChain 的内部序列化格式使用了一个特殊标记——**`lc` 键**。当字典中包含 `lc` 键时,LangChain 反序列化器会将其视为“可信的 LangChain 序列化对象”。

**漏洞在于:**
- `dumps()` / `dumpd()` 函数**没有**对用户/LLM 控制字典中的 `lc` 键进行转义/中和
- 通过 `load()` / `loads()` 进行反序列化时,注入的结构会被当作**内部对象**处理```
🔓 VULNERABILITY CHAIN:
┌─────────────────────────────────────────────────────────────────┐
│  📝 User/LLM Input → Dictionary with malicious "lc" marker     │
│                           ↓                                     │
│  💾 Application serializes data (dumps/dumpd)                   │
│                           ↓                                     │
│  ⚠️  "lc" key NOT escaped - remains in serialized form          │
│                           ↓                                     │
│  🔄 Later: Data deserialized (load/loads)                       │
│                           ↓                                     │
│  🎯 Deserializer sees "lc" → Treats as LangChain object!        │
│                           ↓                                     │
│  💀 Secret resolution / Object instantiation triggered          │
│                           ↓                                     │
│  💥 SECRETS LEAKED / SSRF / RCE                                 │
└─────────────────────────────────────────────────────────────────┘

🔬 技术根因分析

🎯 “lc”标记问题

在LangChain的序列化格式中,字典内部存在 "lc": 1 表示它是一个LangChain序列化对象,而非普通用户数据:```json { "lc": 1, "type": "secret", "id": ["OPENAI_API_KEY"] }

当反序列化器遇到此结构时:
1. `lc` == 1 确认它是一个LangChain对象
2. `type` == "secret" 触发秘密解析路径
3. 从 `id` 数组中提取环境变量名
4. **结果:** 返回 `os.environ["OPENAI_API_KEY"]` 的值!

### 🗺️ 攻击流程图```mermaid
graph TD
    A[🎯 Attacker] -->|Prompt Injection| B[🤖 LLM outputs malicious dict]
    B -->|Contains lc marker| C[📝 App serializes LLM output]
    C -->|Cache/Log/History| D[💾 Stored in system]
    D -->|Later retrieval| E[🔄 Deserialization triggered]
    E -->|lc marker detected| F[⚙️ LangChain object resolution]
    F -->|type: secret| G[🔑 ENV SECRETS LEAKED]
    F -->|type: constructor| H[🏗️ UNSAFE OBJECT INSTANTIATION]
    H -->|SSRF Gadget| I[🌐 OUTBOUND CONNECTIONS]
    H -->|Jinja2 Template| J[💀 CODE EXECUTION]
    
    style A fill:#ff0000,color:#fff
    style G fill:#ff9800,color:#fff
    style I fill:#9c27b0,color:#fff
    style J fill:#000000,color:#fff

🔍 注入点

📍 注入点🎯 工作原理
LLM 输出使用提示注入使 LLM 输出恶意 JSON
additional_kwargs注入到消息对象的额外字段中
response_metadata植入 API 响应元数据中
工具输出嵌入到代理工具结果中
用户消息直接处理用户输入

⚔️ 攻击链方法论

Hacking GIF

⚠️ 免责声明:这些有效载荷仅用于授权的安全测试。未经授权的利用是非法的!

🎬 高级攻击流程

下载工具