logo
0
0
WeChat Login
godog431<aayou_123@163.com>
docs: 优化所有 README 文档,将快速上手指南提前至文档开头

CodeSentinel

基于 AI 大模型的自动化代码安全审计系统,帮助开发者快速识别代码中的安全漏洞并提供修复建议。


🚀 快速上手(推荐新手)

只需 3 步,无需部署任何服务即可获得完整的代码安全审计能力!

第 1 步:复制 Skills 文件夹

code_review_skills/ 文件夹复制到你的项目根目录:

# 方法1: 如果你已经克隆了完整仓库 cp -r code_review_skills/ /path/to/your-project/ # 方法2: 只下载 Skills 文件夹(推荐) git clone --depth 1 --filter=blob:none --sparse https://github.com/azelfeng/AI_code_review_agent.git cd AI_code_review_agent git sparse-checkout set code_review_skills cp -r code_review_skills/ /path/to/your-project/

第 2 步:在 AI 编辑器中打开项目

什么都不用配置! 以下 AI 编辑器会自动识别并加载审计规则:

编辑器自动识别说明
Cursor自动识别为 Rules,打开项目即可使用
Windsurf自动识别为 Rules,打开项目即可使用
CodeBuddy自动识别为 Skills,打开项目即可使用
Claude Code配置为 Project Knowledge 后自动加载

第 3 步:开始审计

在 AI 编辑器中,选中你的代码文件,然后对 AI 说:

请使用安全审计规则检查这个文件

或者更具体:

请检查我的项目中是否存在 SQL 注入、XSS、命令注入等漏洞

就这么简单! AI 会自动使用 code_review_skills/ 中的规则对你的代码进行专业的安全审计。✨


📋 按场景选择 Skills(可选)

如果你只想审计特定类型的漏洞,可以只复制相关文件:

Web 项目(前后端):

code_review_skills/00-system-prompt.md code_review_skills/01-audit-workflow.md code_review_skills/02-sql-injection.md code_review_skills/03-xss.md code_review_skills/04-hardcoded-secrets.md code_review_skills/07-ssrf.md code_review_skills/13-ssti.md code_review_skills/14-insecure-jwt.md code_review_skills/16-open-redirect.md

API 后端项目:

code_review_skills/00-system-prompt.md code_review_skills/02-sql-injection.md code_review_skills/05-command-injection.md code_review_skills/06-path-traversal.md code_review_skills/14-insecure-jwt.md

C/C++ 项目:

code_review_skills/00-system-prompt.md code_review_skills/09-memory-safety.md code_review_skills/05-command-injection.md

💡 使用提示

  1. 第一次使用:建议先对一个小文件进行测试,体验审计效果
  2. 审计整个项目:可以直接说"请审计整个项目的安全问题"
  3. 查看详细规则:所有审计规则都在 code_review_skills/ 文件夹中,可以随时查看或修改
  4. 自定义规则:你可以根据团队需求修改或添加新的审计规则

💡 提示:如果你需要更强大的功能(批量审计、报告管理、多模型切换等),可以继续阅读下方的"完整 Web 应用部署"章节。


核心功能

  • 三条铁律约束 — 从根源杜绝 AI 幻觉:禁止猜测路径、禁止编造代码、禁止报告未见漏洞(详见核心理念
  • 四轮质疑验证 — 每个漏洞经可达性、代码逻辑、数据流、可利用性四轮递进质疑,误报自动过滤(详见质疑机制
  • 代码上传与解析 — 支持 ZIP 格式源代码包,自动解压、识别项目结构和技术栈
  • 多模型支持 — 兼容 OpenAI API 格式的多种大模型(Claude、GPT-4o、DeepSeek、Qwen、混元等)
  • 模型配置管理 — 内置 10 种预设模板,支持自定义 API 地址和密钥,一键设置默认模型
  • AI 安全审计 — 覆盖 SQL 注入、XSS、命令注入、SSTI、JWT、LDAP 注入等 31 种漏洞类型及 8 种组合函数漏洞
  • 内存安全审计 — 支持 C/C++/Rust 内存安全检测:缓冲区溢出、释放后使用、内存泄漏、整数溢出、格式化字符串等 8 种内存安全漏洞
  • 跨文件语义分析 — 自动解析 import/require/#include 依赖关系,追踪跨模块数据流和组合函数漏洞
  • 分批并发 + 断点续审 — 支持大规模项目(1000+ 代码块),自动分批并发处理,超时保存进度后续审
  • 安全报告生成 — 生成结构化审计报告(Markdown + JSON),含漏洞详情、风险等级和修复建议
  • 实时日志 — 审计过程中实时展示思考、发现、进度、警告等多类型日志
  • 任务管理 — 异步任务处理,支持查看审计进度和历史记录

核心理念

审计三条铁律

本项目对 AI 审计行为施加三条不可违反的硬约束,从根源上杜绝幻觉和编造,确保每一条漏洞报告都有据可查:

铁律禁止行为正确做法违反后果
铁律 1:禁止猜测文件路径凭记忆或推测引用文件路径只能引用实际提供给 AI 的代码内容基于不存在文件的分析全部无效
铁律 2:禁止编造代码片段凭印象描述代码内容,或引用未实际看到的代码必须引用实际提供的代码行号和内容基于编造代码的漏洞分析全部无效
铁律 3:禁止报告未见代码中的漏洞在未实际看到代码的情况下报告漏洞先看到代码 → 分析代码 → 才能报告漏洞未见代码中的漏洞报告直接标记为无效

违反任何一条铁律将导致审计结果无效。

三条铁律的设计动机:大语言模型在代码审计场景中容易产生"幻觉"——虚构不存在的文件路径、编造并未出现的代码片段、或对未曾读取的文件断言存在漏洞。这三条铁律以最高优先级约束 AI 行为,将审计过程锚定在实际代码证据上,从而保证报告的可信度和可追溯性。

核心审计原则

代码缺陷存在 ≠ 漏洞可利用

系统要求 AI 在报告每个漏洞前,必须基于实际代码逐项验证以下 9 个维度:

#验证维度说明
1缺陷真实性代码缺陷是否真实存在,是否存在被忽略的上游防护
2路径可达性代码路径是否可达(排除死代码、遗留代码、条件不满足)
3输入可达性用户输入是否能真正传递到危险点
4实际可利用性攻击者是否能在实际环境中利用
5系统性设计该模式是否是框架的系统性设计而非个别遗漏
6Source 类型Source 是否为外部用户输入而非受信的服务器端代码
7自攻击检验利用前提权限是否已超越漏洞本身能力
8设计意图该行为是否是框架预期的设计行为而非缺陷
9运行时可行性理论攻击在实际运行时环境中是否可行

错误地将安全代码标记为"漏洞"会造成误导。准确性优于数量——一个准确的漏洞报告远胜十个误报。

四轮质疑验证机制

每一个 AI 检测出的潜在漏洞,在写入最终报告之前,都必须通过四轮递进式质疑验证。任何一轮未通过都会影响最终判定:

潜在漏洞 → Round 0 → Round 1 → Round 2 → Round 3 → 最终判定 │ │ │ │ ▼ ▼ ▼ ▼ 可达性 代码逻辑 数据流 可利用性

各轮详细规则:

轮次名称质疑问题通过条件淘汰条件
Round 0可达性与设计意图代码路径是否可达?路径可达且非设计行为死代码/遗留代码/设计预期行为
Round 1代码逻辑质疑危险代码模式是否真实存在?置信度为 MEDIUM 或 HIGH置信度为 LOW → 直接淘汰
Round 2数据流质疑用户输入能否到达危险点?存在清晰的数据流描述(>10 字符)数据流不明确或不存在
Round 3可利用性质疑攻击者能否构造有效攻击?置信度 HIGH 或严重等级 CRITICAL普通漏洞置信度不足(组合漏洞有豁免规则)

最终判定标准:

通过轮次判定状态处理方式
4/4 通过passed — 确认漏洞写入最终报告
2-3/4 通过partial — 保留观察写入报告并标注待验证
0-1/4 通过failed — 误报过滤移除,不进入最终报告

组合函数漏洞(涉及跨文件数据流的漏洞)在第 3 轮享有特殊豁免规则——只要置信度不为 LOW 即可通过,因为跨文件漏洞天然更难确认但危害往往更大。

内存安全漏洞(缓冲区溢出、UAF、格式化字符串等)在第 3 轮享有独立豁免规则——严重等级为 CRITICAL 或 HIGH 时自动通过,因为此类漏洞的利用技术已高度成熟。

支持的漏洞检测类型

应用安全漏洞(14 种)

漏洞类型CWE 编号默认等级描述
SQL 注入CWE-89HIGH检测 SQL 语句拼接漏洞,区分参数化查询(安全)和字符串拼接(危险)
XSS 跨站脚本CWE-79HIGH检测反射型、存储型、DOM 型 XSS,覆盖 innerHTML/v-html/dangerouslySetInnerHTML
硬编码密钥CWE-798HIGH检测 API Key/Token/密码/私钥/连接字符串,自动排除占位值和环境变量引用
命令注入CWE-78CRITICAL检测 eval/exec/system/child_process 等危险调用
路径遍历CWE-22HIGH检测文件路径操控漏洞
SSRFCWE-918HIGH检测服务端请求伪造漏洞
不安全反序列化CWE-502HIGH检测 pickle.loads/ObjectInputStream/unserialize 等
认证缺陷CWE-287HIGH检测认证/授权实现缺陷
敏感数据泄露CWE-200MEDIUM检测错误信息泄露、日志中的敏感数据
XXECWE-611HIGH检测 XML 外部实体注入
不安全随机数CWE-330LOW检测在安全场景中使用弱随机数生成器
原型污染CWE-1321HIGH检测 JavaScript 原型链污染
CSRFCWE-352MEDIUM检测跨站请求伪造
IDORCWE-639MEDIUM检测不安全的直接对象引用

内存安全漏洞(8 种)

针对 C/C++/Rust(unsafe 块)的内存安全检测:

漏洞类型CWE 编号默认等级描述
缓冲区溢出CWE-120CRITICAL检测 strcpy/sprintf/gets 等无长度限制的缓冲区写入操作
释放后使用CWE-416CRITICAL检测 free 后继续访问已释放内存的危险操作
双重释放CWE-415HIGH检测对同一内存区域释放两次导致的堆破坏
内存泄漏CWE-401MEDIUM检测 malloc/new 分配后未在所有路径上正确释放的内存
整数溢出CWE-190HIGH检测整数运算溢出导致的缓冲区分配不足或逻辑错误
格式化字符串CWE-134CRITICAL检测用户输入作为 printf 族函数格式化参数的任意内存读写
空指针解引用CWE-476MEDIUM检测未检查 malloc/calloc 返回值或其他空指针解引用
未初始化内存使用CWE-908HIGH检测使用未初始化的局部变量或堆内存导致的信息泄露

组合函数漏洞(8 种模式)

系统特别关注跨函数、跨文件的组合型安全问题:

模式说明
跨函数数据流污染函数 A 接收用户输入但不做清洗 → 传递给函数 B → 函数 B 将其用于危险操作
权限提升链普通用户通过调用函数 A 修改状态 → 绕过函数 B 的权限检查
竞态条件 (TOCTOU)函数 A 检查权限 → 函数 B 在检查后、操作前修改数据
错误处理泄露链函数 A 的异常被函数 B 捕获 → 函数 B 将错误详情返回客户端
认证/授权绕过组合某些函数组合调用时跳过了中间的认证/授权检查
原型污染传播函数 A 中的对象合并操作被污染 → 影响函数 B 的逻辑判断
二阶注入函数 A 存储未过滤的用户输入到数据库 → 函数 B 读取并用于危险操作
回调/事件驱动漏洞事件处理函数之间的数据传递缺乏验证

技术架构

┌──────────────────────────────────────────────────────┐ │ Nginx (端口 80) │ │ 静态资源服务 + API 反向代理 │ ├────────────────────┬─────────────────────────────────┤ │ React 前端 SPA │ Express 后端 API (端口 3001) │ │ TypeScript + Vite │ Node.js 20 + MongoDB 驱动 │ │ Tailwind + DaisyUI│ AI 模型调用 (OpenAI 兼容格式) │ └────────────────────┴──────────┬──────────────────────┘ │ ┌────────┴────────┐ │ MongoDB 7 │ │ 数据持久化 │ └─────────────────┘
层级技术选型
前端框架React 19 + TypeScript
构建工具Vite 6
UI 样式Tailwind CSS 3 + DaisyUI 4
路由React Router 6
后端Node.js 20 + Express 4
数据库MongoDB 7
AI 模型OpenAI 兼容 API(Claude / GPT / DeepSeek / Qwen / 混元等)
部署Docker Compose(Nginx + Node.js + MongoDB)

目录结构

AI_code_review_agent/ ├── src/ # 前端源码 │ ├── components/ # 可复用组件 │ │ ├── FileUpload.tsx # 文件上传(ZIP 拖拽/选择) │ │ ├── TaskProgress.tsx # 任务进度与实时日志 │ │ ├── ReportViewer.tsx # 审计报告查看器 │ │ ├── VulnerabilityCard.tsx # 漏洞详情卡片 │ │ ├── CodeHighlight.tsx # 代码高亮展示 │ │ ├── Navbar.tsx # 顶部导航栏 │ │ └── Footer.tsx # 页脚 │ ├── pages/ # 页面组件 │ │ ├── HomePage.tsx # 首页(上传入口) │ │ ├── TaskPage.tsx # 任务详情(进度/日志/报告) │ │ ├── HistoryPage.tsx # 审计历史记录 │ │ └── SettingsPage.tsx # 模型配置管理 │ ├── types/audit.ts # TypeScript 类型定义 │ ├── utils/api.ts # API 请求封装 │ ├── App.tsx # 应用路由入口 │ └── index.css # 全局样式 ├── server/ # 后端 API 服务 │ ├── src/ │ │ ├── index.js # Express 入口 + 路由挂载 │ │ ├── routes/ │ │ │ ├── tasks.js # 任务 CRUD + 报告数据 │ │ │ ├── audit.js # 触发安全审计 │ │ │ ├── report.js # 触发报告生成 │ │ │ └── model-configs.js # 模型配置管理 │ │ ├── services/ │ │ │ ├── ai.js # AI 模型调用(OpenAI 兼容) │ │ │ ├── analyzeCode.js # ZIP 解压 + 代码分块 │ │ │ ├── securityAudit.js # 审计引擎(并发/重试/续审) │ │ │ └── generateReport.js # 报告生成(Markdown + JSON) │ │ └── utils/db.js # MongoDB 连接与索引 │ ├── Dockerfile # 后端容器配置 │ ├── .env.example # 环境变量模板 │ └── package.json ├── shared/ │ ├── prompts/ # AI 审计 Prompt 模板 │ │ ├── system.md # 系统级审计提示词 │ │ ├── sql-injection.md # SQL 注入检测 Skill │ │ ├── xss.md # XSS 检测 Skill │ │ ├── hardcoded-secrets.md # 硬编码密钥检测 Skill │ │ └── memory-safety.md # 内存安全检测 Skill(C/C++/Rust) │ ├── schemas/ # 漏洞输出 JSON Schema │ └── constants/ # 审计规则常量定义 ├── agent-config/ # AI 审计 Agent 配置文档 │ ├── 00-system-prompt.md # 核心系统提示词 │ ├── 01-audit-workflow.md # 审计工作流程 │ ├── 02-skill-prompts.md # Skill 提示词库 │ ├── 03-vulnerability-schema.md # 漏洞输出 Schema │ ├── 04-challenge-rules.md # 质疑验证规则 │ └── 05-dangerous-functions-reference.md # 危险函数速查 ├── code_review_skills/ # 🔌 独立可移植的安全审计 Skills(详见下方说明) │ ├── 00-system-prompt.md # 系统级 Prompt(角色、铁律、判定矩阵) │ ├── 01-audit-workflow.md # 8 步审计工作流 │ ├── 02~09-*.md # 8 个核心漏洞检测 Skill(SQL注入/XSS/密钥/命令注入等) │ ├── 10-vulnerability-schema.md # 31 种漏洞类型 + JSON Schema │ ├── 11-challenge-rules.md # 四轮质疑验证规则 │ ├── 12-dangerous-functions.md # 多语言危险函数速查 │ └── 13~18-*.md # 6 个新增漏洞检测 Skill(SSTI/JWT/LDAP/开放重定向等) ├── docker-compose.yml # Docker Compose 编排 ├── Dockerfile # 前端多阶段构建(Vite → Nginx) ├── nginx.conf # Nginx 反向代理配置 ├── .env # 前端环境变量 └── package.json # 前端依赖

独立使用审计 Skills(无需部署)

code_review_skills/ 文件夹复制到任意项目根目录,即可让本地 AI 模型获得完整的代码安全审计能力——无需部署服务、无需数据库、无需额外配置。

code_review_skills/ 文件夹包含从本平台提炼的 19 个独立 Skill 文件,涵盖系统级审计指令、15 种漏洞检测规则、四轮质疑验证和危险函数速查。所有文件采用 YAML Front Matter + Markdown 格式,兼容主流 AI 编辑器(Cursor / Windsurf / CodeBuddy / Claude Code 等)的 Rules 系统。

# 一键获取审计能力 cp -r code_review_skills/ /path/to/your-project/

详见 code_review_skills/README.md

快速开始

前提条件

  • Docker 和 Docker Compose
  • 至少一个 OpenAI 兼容格式的 AI 模型 API 密钥

Docker 部署(推荐)

# 克隆项目 git clone <repo-url> cd AI_code_review_agent # 构建并启动所有服务 docker compose up -d # 查看运行日志 docker compose logs -f

启动后访问 http://localhost:8080

自定义端口:

APP_PORT=3000 docker compose up -d

停止服务:

docker compose down

本地开发

适用于需要修改代码并热重载调试的场景。

1. 启动 MongoDB

docker run -d --name mongo -p 27017:27017 mongo:7

2. 启动后端

cd server npm install # 创建 .env(或复制 .env.example) cat > .env << EOF MONGODB_URI=mongodb://localhost:27017/ai_code_review PORT=3001 DATA_DIR=./data EOF npm run dev

3. 启动前端(新终端)

# 回到项目根目录 npm install npm run dev

前端开发服务器默认在 http://localhost:5173 启动,API 请求自动代理到后端 localhost:3001

使用方法

1. 配置 AI 模型

首次使用前需配置模型:

  1. 打开应用,点击导航栏「模型配置」
  2. 从预设模板中选择模型(或点击「添加自定义配置」)
  3. 填写 API 地址API 密钥
  4. 点击「设为默认」指定审计使用的模型

2. 上传代码审计

  1. 在首页点击上传区域或拖拽 ZIP 文件
  2. 系统自动解压、识别技术栈、对代码分块
  3. 自动调用 AI 模型逐块审计,页面实时展示进度和日志
  4. 审计完成后自动生成报告

3. 查看报告

  • 审计完成后在任务页面直接查看报告
  • 报告包含:风险摘要、漏洞列表(含严重等级、CWE 编号、代码位置、修复建议)
  • 支持下载 Markdown 格式报告文件

4. 历史记录

在「历史记录」页面查看所有审计任务,支持分页浏览和删除。

配置说明

环境变量

前端 (.env):

变量默认值说明
VITE_API_BASE_URL/apiAPI 请求路径前缀

后端 (server/.env):

变量默认值说明
MONGODB_URImongodb://mongo:27017/ai_code_reviewMongoDB 连接地址
PORT3001后端服务端口
DATA_DIR/app/data上传文件和报告存储路径

Docker Compose

变量默认值说明
APP_PORT8080对外暴露的访问端口

审计引擎参数

参数说明
批次并发数2每批同时审计的代码块数量
单次执行上限100 块单次执行的最大代码块数
AI 请求超时150s(递增至 210s)首次 150s,每次重试增加 30s
最大重试次数2单个代码块失败后的重试次数
大代码块阈值120 行超过此行数自动拆分
安全退出阈值540s超时后保存进度,下次续审

支持的 AI 模型

内置 10 种预设模板,也可自定义任何兼容 OpenAI API 格式的模型:

模型说明
GPT-4oOpenAI 旗舰模型
GPT-4o MiniOpenAI 轻量模型
Claude Opus 4Anthropic 旗舰模型
Claude Sonnet 4Anthropic 高性价比模型
DeepSeek V3DeepSeek 通用模型
DeepSeek R1DeepSeek 推理模型
Qwen Max通义千问旗舰模型
Hunyuan Turbo腾讯混元高性能推理模型
Hunyuan Pro腾讯混元效果最优模型
自定义模型任何兼容 OpenAI Chat Completions API 的端点

MongoDB 数据集合

集合名用途
audit_tasks审计任务信息(状态、文件路径、技术栈等)
audit_results审计结果(按文件存储漏洞列表)
audit_logs审计日志(实时进度、思考过程等)
audit_code_files解压后的代码块
audit_vulnerabilities临时漏洞数据(报告生成后清理)
model_configsAI 模型配置

常用命令

# Docker 操作 docker compose up -d # 启动服务 docker compose down # 停止服务 docker compose logs -f # 查看日志 docker compose up -d --build # 重新构建并启动 # 本地开发 npm run dev # 启动前端开发服务器 npm run build # 构建前端 npm run lint # ESLint 检查 npm run format # Prettier 格式化 cd server && npm run dev # 启动后端开发服务器

许可证

本项目采用 Apache License 2.0 许可证。