Skip to content

Repository files navigation

AI-SecReview 🛡️

AI 编包,我们蹲守。 —— 检测 AI 生成代码中的"幻觉依赖",在 pip install 之前告诉你:这个包不存在 / 刚注册 / 长得像真包

AI 写代码很快,但快不等于可信。AI 会稳定地编造不存在的第三方包名,攻击者提前抢注这些名字,等开发者或 AI agent 执行安装命令时,就触发供应链攻击(Slopsquatting)。传统 SAST 工具(Semgrep、CodeQL、Snyk)检测不了这种 LLM 特有的错误——而这正是 AI-SecReview 的主场。

$ ai-sec-review ./your-project

为什么是它

问题 传统 SAST 工具 AI-SecReview
幻觉依赖(LLM 编造不存在的包) ❌ 检测不了 ✅ 实时查证 PyPI 注册表
Slopsquatting 抢注(幻觉包名被蹲守) ❌ 无此概念 ✅ 注册年龄 + 下载量 + OSV 恶意库评分
国产云 SDK 假方法(oss2.quick_upload ❌ 完全没有 全球独有
中文拼音模块名(shujuku ❌ 完全没有 ✅ 弱信号 + 正确库名建议
C/C++ 内存安全(缓冲区溢出/UAF) ⚠️ 部分工具 ✅ 内置检测
跨函数注入链 ⚠️ 需人工 ✅ LLM 深扫辅助

定位:面向中国 AI 编码生态的软件供应链安全基础设施。 幻觉依赖是全新战场,中文开发者的幻觉模式被国际工具忽视——AI-SecReview 从工具走向标准。


核心差异化

1. Slopsquatting 供应链防御(主战场)

AI 稳定地"编"出不存在的包名 → 攻击者提前注册这些名字 → 开发者 / AI agent 执行 pip install 时中招。

关键事实(USENIX Security 2025 "We Have a Package for You!"):16 个大模型、57.6 万样本里 19.7% 的推荐包不存在;幻觉名 43–58% 跨运行重复(可预测 → 可被蹲守)。

三层防御,从快到慢:

  1. 中文 AI 幻觉模式识别(离线,毫秒级)—— 国产云 SDK 假方法 100+ 条(import oss2 是真的,假的是方法 oss2.quick_upload(),IDE 不校验方法存在性,真空白);拼音模块降权为弱信号(给正确库名建议)
  2. Typosquatting 距离引擎(离线)—— 与真实包名编辑距离 ≤1 的 import(numpys/requets
  3. 实时供应链验证 + 风险评分(在线)—— PyPI 存在性、注册年龄、下载量、OSV 恶意库,多信号合成 0-100 slopsquat 风险分
# AI 编出的包名,被抢注后"成功安装"= 静默供应链攻击
from smart_validator import validate_email   # 不存在 → 90 分 critical
import oss2
bucket.quick_upload('file.txt')             # oss2 真、quick_upload 假 → 真空白

2. 中文 AI 幻觉模式(市场空白)

国内 AI 编码助手(通义灵码、文心快码、DeepSeek Coder)有个特有毛病:编造国产云 SDK 不存在的方法,或把中文直译成拼音模块名。英文工具的声誉库不覆盖中文模型的幻觉模式(开源中文模型平均幻觉率 21.7%)。

3. C/C++ 内存安全(学术有卷、产品空白)

gets/strcpy/sprintf 这类危险函数、格式化字符串漏洞、整数溢出、返回栈地址use-after-free——跨行上下文也能识别。

4. 可选的 LLM 深扫(零成本跑通)

不配 API key 也能用纯规则引擎扫。配了 DeepSeek/Claude/OpenAI 的 key 后,对可疑代码段做上下文感知的二次确认,降低误报。


安装

git clone https://github.com/chen-longyi/ai-sec-review.git
cd ai-sec-review
pip install -e .

要求 Python 3.10+。


快速开始

# 扫描单个文件
ai-sec-review app.py

# 扫描整个项目目录
ai-sec-review ./my-project

# 只输出 JSON(供其他工具/Agent 消费)
ai-sec-review src/ --json

# 生成 SARIF 报告(GitHub Security 集成)
ai-sec-review src/ --format sarif -o report.sarif

# 生成 HTML 仪表盘(路演截图用)
ai-sec-review src/ --format html -o report.html

# 生成 Word 报告(汇报/存档用)
ai-sec-review src/ --format word -o report.docx

# 生成 PNG 摘要图(路演/PPT 截图用)
ai-sec-review src/ --format png -o report.png

# 显示所有级别的问题(不只 critical/high)
ai-sec-review src/ --verbose

# CI 友好:只看退出码,不输出
ai-sec-review src/ --quiet

检测能力

幻觉 & 供应链(Hallucination + Supply Chain)

  • 不存在的导入 / 假函数调用
  • Slopsquatting 风险评分:PyPI 存在性 + 注册年龄 + 下载量(pypistats)+ OSV 恶意库(MAL-*),合成 0-100 分
    • 不存在 = 90 分 / 恶意 = 100 分 / 新包 + 0 下载 = 85 分 / 新包 = 60 分 / 年轻(<1 年)= 40 分 / 成熟 = 0 分
  • Typosquatting:与真实包名编辑距离 ≤1
  • 国产云 SDK 假方法(阿里云 OSS、腾讯云 COS、华为云 OBS、阿里云短信、百度云、微信/钉钉/飞书/魔搭…)
  • 中文拼音模块名(弱信号,附正确库名建议)
  • smart_/quick_/auto_/fast_ 前缀的可疑命名

隐私承诺:在线验证只传包名,绝不传代码。无网络时优雅降级为离线启发式,纯规则引擎仍可跑。

Web 安全(Security)

  • SQL 注入(f-string / % 格式化拼接)
  • 命令注入(shell=Trueos.system
  • 硬编码密钥(密码 / API key / token / AWS 凭证)
  • 不安全反序列化(pickle.loadsyaml.load
  • SSRF、路径遍历、内部 IP 硬编码
  • eval/exec/__import__

C/C++ 内存安全(Memory Safety)

  • 危险函数:gets/strcpy/strcat/sprintf/scanf/vsprintf
  • 格式化字符串漏洞
  • 整数溢出(malloc/calloc/new)
  • 返回栈地址 / 返回局部变量地址(跨行)
  • use-after-free(跨行)
  • malloc 后未检查 NULL
  • intstrlen/sizeof 返回值、void main

LLM 深扫(可选)

对静态规则拿不准的代码段(f-string SQL、用户输入流到危险 sink、弱加密),调 LLM 做上下文确认,输出是否误报 + 具体修复代码。


CLI 参考

选项 说明
PATH 要扫描的文件或目录
-f, --format 输出格式:console / json / sarif / html / word / png
-o, --output 将报告写入文件
--json --format json 的别名
-v, --verbose 显示所有级别(不只 critical/high)
--min-score 覆盖最低信任分数(0-100)
--config 指定配置文件路径
-q, --quiet 只返回退出码,不输出
--version 显示版本号

退出码0 通过,1 分数低于阈值或存在 critical 问题(CI 可直接用)。


示例输出

Analyzing: demo
============================================================

Trust Score: 14/100 [FAIL]

+------------------------------------------------+
| Category      | Score | Issues                 |
|---------------+-------+------------------------|
| Hallucination |     0 | 18 issues (6 critical) |
| Security      |    50 | 9 issues (4 critical)  |
| Memory Safety |     0 | 15 issues (2 critical) |
+------------------------------------------------+

Critical/High Issues:

  CRITICAL hallucination Import 'smart_validator.validate_email' appears to be hallucinated
    -> Verify 'smart_validator' exists. Slopsquatting risk: this AI-invented
       name may already be registered by attackers - never `pip install` it
       without verification
  CRITICAL hallucination Line 16: Suspected hallucinated SDK method: 'quick_upload()'
    -> oss2 SDK has no 'quick_upload()' method. Check the official docs.
  CRITICAL memory_safety Line 82: Unsafe function 'gets()': gets() has no bounds checking
    -> Use fgets(buf, size, stdin) instead

配置

项目根目录放一个 .aitrust.yaml(可选):

min_score: 70
strict_mode: false
checks:
  security:
    enabled: true
    weight: 2.0
  hallucinations:
    enabled: true
    weight: 2.5
  memory_safety:
    enabled: true
    weight: 3.0
  ai_deep_scan:
    enabled: true
    weight: 1.5
ignore:
  - "tests/*"
  - "*/__pycache__/*"

LLM 深扫需要环境变量 DEEPSEEK_API_KEY / ANTHROPIC_API_KEY / OPENAI_API_KEY,不配则自动跳过。


项目结构

ai_sec_review/
├── cli.py              # click CLI 入口
├── validator.py        # 核心引擎:按文件类型路由到分析器
├── config.py           # 配置加载(.aitrust.yaml)
├── models.py           # Issue / ValidationResult 数据类
├── supply_chain.py     # 供应链验证:PyPI 存在性/年龄/下载量/OSV + slopsquat 评分
├── analyzers/
│   ├── hallucination.py  # 幻觉检测(云SDK假方法 / 拼音弱信号 / 供应链查证)
│   ├── security.py       # Web 安全
│   ├── memory_safety.py  # C/C++ 内存安全
│   └── ai_deep_scan.py   # LLM 深扫(可选)
└── reporters/
    ├── console.py        # rich 终端输出
    ├── json_reporter.py  # 结构化 JSON
    ├── sarif.py          # SARIF 2.1.0
    ├── html.py           # 自包含 HTML 仪表盘
    ├── word.py           # Word (.docx) 报告
    └── png.py            # PNG 摘要图(路演截图用)
demo/                  # 漏洞示例项目(演示用)
tests/                 # pytest 测试套件

路线图

  • 核心静态分析引擎(幻觉 / 安全 / 内存安全)
  • 中文 AI 幻觉检测(云 SDK 假方法 / 拼音弱信号)
  • Slopsquatting 供应链防御(PyPI 存在性 + 注册年龄 + 下载量 + OSV 恶意库 + 0-100 风险评分)
  • 六种输出格式(console / json / sarif / html / word / png)
  • 完整 pytest 测试套件(133 用例)
  • 维护者 / 发布者信誉信号(PyPI JSON 不含 maintainers,需另查)
  • npm 生态实时验证(install 前查注册表 + 声誉)
  • 安装前拦截(agent 循环内 hook,差异化愿景)
  • 事中纠错:AI 生成代码时实时拦截(watch 模式 / IDE 插件)
  • 漏洞样本库(从 CTF 真题标注,作为数据集)
  • 二进制分析模块(r2pipe/capstone)

License

MIT

About

检测 AI 生成代码中的幻觉依赖与供应链风险(Slopsquatting 防御)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages