# deepsec

> 来源：[GitHub](https://github.com/vercel-labs/deepsec) · ⭐ 1062 stars

# Deepsec：当 AI Coding Agent 遇上安全审计，代码漏洞无处遁形

## 项目简介

在 AI 辅助编程席卷开发流程的今天，Cursor、GitHub Copilot 等工具大幅提升了代码产出效率，却也带来了一个被忽视的安全隐患：AI 生成的代码可能包含 SQL 注入、路径遍历、不安全的反序列化等经典漏洞，而传统的静态分析工具（SAST）往往难以跟上这种"AI 加速"的开发节奏。Vercel Labs 推出的 **Deepsec** 正是瞄准这一痛点，将"AI 生成"与"AI 审计"形成闭环——它不是一个传统的规则引擎，而是一个由 Coding Agent 驱动的安全测试框架。

Deepsec 的核心理念颇具前瞻性：**让具备代码理解能力的智能体主动探索代码库，模拟攻击者的思维方式发现漏洞**。与传统 SAST 工具依赖预定义规则不同，Deepsec 利用大语言模型的推理能力，能够理解业务上下文、追踪数据流、构造针对性的测试用例。这种"Agentic Security Testing"的范式转变，使得它不仅能发现已知的 CVE 模式漏洞，还能识别因 AI 生成代码的"创造性"而引入的新型安全风险。项目开源两周即收获 1000+ Star，反映出社区对 AI 原生安全工具的强烈期待。

## 核心特性

- **Agent 驱动的漏洞挖掘**：基于多步推理的 Coding Agent 架构，能够自主规划审计路径、分析函数调用链、构造 PoC（概念验证） payload，而非简单匹配正则规则
- **深度代码理解能力**：利用 AST（抽象语法树）解析与 LLM 语义理解的结合，追踪用户输入到危险函数的完整数据流（Taint Analysis）
- **多语言与框架支持**：基于 TypeScript 实现，通过统一的代码表示层支持 JavaScript/TypeScript 生态，并预留了向 Python、Go 等语言扩展的插件接口
- **CI/CD 原生集成**：提供 GitHub Actions 封装和 CLI 工具链，支持在 PR 阶段自动触发安全扫描，将安全左移（Shift Left）落实到每次代码变更
- **可解释的审计报告**：不仅输出漏洞位置，还生成完整的攻击路径说明、风险评级和修复建议，降低安全团队与开发团队的沟通成本

## 技术实现

Deepsec 的技术架构体现了 Vercel Labs 对"AI Agent 工程化"的深刻理解。其底层采用 **分层设计**：最底层是语言解析层，基于 Tree-sitter 构建跨语言的 AST 解析能力，将不同语言的源代码统一为标准的语法树表示；中间层是**符号执行与数据流引擎**，负责构建代码的调用图（Call Graph）和控制流图（CFG），识别潜在的 Source-Sink 对；最上层则是**LLM Agent 编排层**，这是 Deepsec 区别于传统工具的关键。

在 Agent 层，Deepsec 实现了类似 ReAct（Reasoning + Acting）的循环架构：Planner 模块根据代码结构分解审计任务，Executor 调用工具链（如代码搜索、AST 查询、沙箱执行）收集证据，Critic 模块评估发现的可靠性，最终由 Reporter 生成结构化输出。这种设计巧妙地将 LLM 的"模糊推理"与程序的"精确执行"相结合——LLM 负责判断"这里是否存在漏洞模式"，而传统程序分析保证"这个数据流确实可达"。

项目采用 TypeScript 全栈实现，依赖了 `@vercel/ai-sdk` 进行大模型调用抽象，支持 OpenAI、Anthropic 等主流提供商的灵活切换。值得关注的是其**沙箱执行环境**的设计：对于识别出的潜在漏洞，Deepsec 会在隔离的 Deno 运行时中验证 PoC 的可利用性，避免误报的同时确保审计过程本身不会引入安全风险。

## 快速上手

Deepsec 提供了零配置的快速体验方式。首先安装 CLI 工具：

```bash
npm install -g @vercel/deepsec
# 或直接使用 npx
npx @vercel/deepsec@latest
```

配置 API Key 后，即可对目标仓库进行安全审计：

```bash
# 设置大模型提供商（以 OpenAI 为例）
export OPENAI_API_KEY="sk-..."

# 扫描本地项目
deepsec scan ./my-project

# 指定扫描深度和并发数
deepsec scan ./my-project --depth thorough --workers 4

# 输出 SARIF 格式供 GitHub Advanced Security 消费
deepsec scan ./my-project --format sarif --output report.sarif
```

在 CI 环境中集成同样简洁，以下是 GitHub Actions 的示例配置：

```yaml
name: Security Audit
on: [pull_request]

jobs:
  deepsec:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Deepsec
        uses: vercel-labs/deepsec-action@v1
        with:
          api-key: ${{ secrets.OPENAI_API_KEY }}
          fail-on: high  # 发现高危漏洞时阻断合并
```

## 应用场景

**AI 生成代码的安全把关**：某团队使用 Cursor 批量生成用户管理模块后，通过 Deepsec 在 CI 中发现 AI 错误地拼接了 SQL 语句（而非使用参数化查询），且将用户输入直接传入 `eval()` 函数。传统 ESLint 规则无法识别这种"业务逻辑层面的漏洞"，而 Deepsec 的 Agent 通过追踪 `req.body.username` 到数据库查询的完整路径，精准定位了注入点。

**遗留系统的渐进式加固**：对于缺乏测试覆盖的老旧 Node.js 项目，安全团队可部署 Deepsec 进行"地毯式"初筛。其 Agent 能够自主探索庞大的代码库，优先攻击暴露在网络层的接口，相比人工审计效率提升数十倍，且不会遗漏因人员流动而失传的暗逻辑。

**开源供应链的自主审计**：在引入新的 npm 依赖前，开发者可用 Deepsec 对依赖包进行轻量级扫描。其 AST 层面的分析能够识别混淆后的恶意代码模式（如动态 `require`、异常的 `child_process` 调用），作为 `npm audit` 依赖漏洞检测的有力补充。

## 总结

Deepsec 代表了安全工具演进的重要方向：**从"规则驱动"到"智能体驱动"的范式跃迁**。它并非要取代成熟的 SAST/DAST 工具链，而是填补了 AI 时代的新型安全空白——当代码的生产方式本身被 AI 改变时，审计方式也必须随之进化。对于采用 AI 辅助编程的团队、追求安全左移的 DevSecOps 实践者，以及需要处理大量遗留代码的安全工程师，Deepsec 提供了兼具深度与效率的解决方案。当然，作为早期项目，其在复杂框架（如 Next.js 服务端组件）上的分析精度仍有提升空间，且 LLM 调用的成本与延迟是需要权衡的现实因素。但毋庸置疑，"Agentic Security"这一技术路线值得持续关注。