CyberEnthusiastic/ai-sast-scanner
GitHub: CyberEnthusiastic/ai-sast-scanner
一款基于 Python 的 AI 增强型 SAST 扫描器,解决传统静态分析安装复杂、依赖重与报告交互不足的问题。
Stars: 0 | Forks: 0
# ⚡ AI SAST 扫描器
[](./LICENSE)
[](https://www.python.org/downloads/)
[](./.github/workflows/sast.yml)
[](https://owasp.org/Top10/)
## 功能(终端输出截图)
```
============================================================
AI-Powered SAST Scanner v1.0
============================================================
[*] Target: samples/
[*] Files scanned : 2
[*] Lines scanned : 102
[*] Total findings: 16
[*] Breakdown : {'CRITICAL': 10, 'HIGH': 5, 'MEDIUM': 1, 'LOW': 0}
[CRITICAL] SQL Injection (string concatenation)
samples/vulnerable_app.py:23 (risk=98.0, CWE-89)
> query = f"SELECT * FROM users WHERE username = '{username}'"
[CRITICAL] Command Injection (os.system / subprocess shell=True)
samples/vulnerable_app.py:32 (risk=95.0, CWE-78)
> os.system("ls " + cmd)
```
并打开此交互式暗色 HTML 报告,支持按发现项深入查看:
- 严重性标签 · 规则 ID · 风险评分 · 代码片段 · CWE · OWASP · 修复建议 · 推荐修复
## 为何选择此工具
| | **AI SAST 扫描器** | SonarQube CE | Snyk 开源 | Semgrep OSS |
|---|---|---|---|---|
| **价格** | 免费(MIT) | 免费(功能受限) | 免费(扫描次数受限) | 免费 |
| **运行时依赖** | **无** — 纯标准库 | Java + Postgres | Node | Python |
| **安装时间** | `git clone && python scanner.py` | 多步骤 | CLI + 账户 | `pip install semgrep` |
| **可自托管** | 是,无需账户 | 是 | 否(云端) | 是 |
| **CWE + OWASP 映射** | 每条规则 | 每条规则 | 每条规则 | 每条规则 |
| **交互式 HTML 报告** | 内嵌 | 需服务端 | 否 | 否 |
| **ML 风格风险评分** | 是(0–100) | 否 | 否 | 否 |
| **通过 Python 正则扩展规则** | 5 行代码 | 插件 SDK | 否 | YAML DSL |
## 60 秒快速开始(Windows、macOS、Linux)
```
# 克隆
git clone https://github.com/CyberEnthusiastic/ai-sast-scanner.git
cd ai-sast-scanner
# 运行它(零安装 — 纯 Python 3.8+ 标准库)
python scanner.py samples/
# 打开 HTML 报告
start reports/sast_report.html # Windows
open reports/sast_report.html # macOS
xdg-open reports/sast_report.html # Linux
```
### 替代方案:一键安装器
```
# Linux / macOS / WSL / Git Bash
./install.sh
# Windows PowerShell
.\install.ps1
```
安装器会验证你的 Python 版本,创建 `.venv/`,安装
依赖(如有),运行自检,并输出后续步骤。
### 替代方案:Docker
```
docker build -t ai-sast-scanner .
docker run --rm -v "$PWD/target:/app/target" ai-sast-scanner scanner.py target/
```
## 在 VS Code 中打开(两步)
```
code .
```
VS Code 会自动提示你安装推荐的扩展
(Python、Pylance、Ruff、GitLens)。然后:
1. 按 **F5** 在调试器中启动扫描器
2. 或按 **Ctrl+Shift+B** 运行默认任务(扫描示例)
3. 或打开命令面板 → “Tasks: Run Task” → 从列表中选择
本项目附带:
- `.vscode/launch.json` — 3 个调试配置(扫描示例、扫描当前文件、提示路径)
- `.vscode/tasks.json` — 扫描、打开报告、安装依赖
- `.vscode/extensions.json` — 推荐扩展
- `.vscode/settings.json` — 格式化、标尺、拼写检查词
**从克隆到在 VS Code 中首次扫描:不到 2 分钟。**
## 检测能力(10 类规则)
| ID | 类别 | 严重性 | CWE | 置信度 |
|----|-------|----------|-----|------------|
| SQLI-001 | SQL 注入(字符串拼接 / f-string) | 严重 | CWE-89 | 0.95 |
| CMDI-001 | 命令注入(`os.system`、`shell=True`) | 严重 | CWE-78 | 0.92 |
| DESER-001 | 不安全反序列化(pickle、yaml.load) | 严重 | CWE-502 | 0.90 |
| SECRET-001 | 硬编码密钥 / API 密钥 | 严重 | CWE-798 | 0.88 |
| EVAL-001 | `eval()` / `exec()` 使用用户输入 | 严重 | CWE-95 | 0.93 |
| XSS-001 | innerHTML / document.write XSS | 高 | CWE-79 | 0.85 |
| PATH-001 | 路径遍历 | 高 | CWE-22 | 0.80 |
| CRYPTO-001 | 弱哈希(MD5 / SHA1) | 高 | CWE-327 | 0.98 |
| SSRF-001 | 服务器端请求伪造 | 高 | CWE-918 | 0.82 |
| DEBUG-001 | 生产环境中启用调试模式 | 中 | CWE-489 | 0.90 |
详见 `scanner.py` 中的 `VULN_PATTERNS` 获取完整规则定义,并可使用约 5 行 Python 代码添加你自己的规则。
## ML 风险评分器如何工作
`MLRiskScorer` 融合多种信号生成每条发现的 0–100 评分:
- **模式置信度**(基础 60)— 每条规则自带手工校准置信度 0.80–0.98
- **危险邻近度**(+8 每次命中,上限 +30)— `request.`、`input(`、`sys.argv`、`getenv`、`params`、`form[`、`args[` 在 ±3 行内
- **净化邻近度**(−10 每次命中,上限 −25)— `sanitize`、`escape`、`validate`、`allowlist`、`parameterized`、`prepared` 在 ±3 行内
- **严重性加成** — 严重 +10,高危 +5
对 `hashlib.md5()` 的原始调用在加密模块中评分约为 75(纯模式),但
`hashlib.md5(request.args['pw'])` 会跃升至约 95,因为 `request.` 汇点
在 3 行之内。这就是名称中的“AI”——它并非 LLM,而是一个小型上下文分类器,在多数场景下优于纯正则表达式。
## 扫描你自己的代码
```
# 扫描整个项目
python scanner.py /path/to/your/project
# 扫描单个文件
python scanner.py src/auth/login.py
# 自定义输出路径
python scanner.py . -o reports/prod.json --html reports/prod.html
```
扫描器会递归识别 `*.py`、`*.js`、`*.ts`、`*.jsx`、`*.tsx`、
`*.html`、`*.php`、`*.java`、`*.rb` 文件。欲添加更多,请在
`scanner.py` 中扩展 `SUPPORTED_EXT`。
## CI/CD 集成(发现严重问题时失败构建)
已在 `.github/workflows/sast.yml` 中配置。工作流:
1. 在每次推送/拉取请求时对 `samples/` 运行扫描器
2. 将 JSON 与 HTML 报告作为构件上传
3. (可选)若存在严重发现则失败构建
要自动失败构建,请在工作流中添加以下步骤:
```
- name: Fail on CRITICAL
run: |
python -c "
import json, sys
r = json.load(open('reports/sast_report.json'))
if r['summary']['by_severity']['CRITICAL'] > 0:
print('CRITICAL findings detected, failing build')
sys.exit(1)
"
```
## 扩展规则引擎
在 `scanner.py` 的 `VULN_PATTERNS` 中添加新规则:
```
{
"id": "XXE-001",
"name": "XML External Entity (XXE)",
"pattern": r"etree\.parse\s*\(|xml\.sax\.parse\s*\(",
"severity": "HIGH",
"cwe": "CWE-611",
"owasp": "A05:2021 - Security Misconfiguration",
"confidence": 0.85,
"remediation": "Use defusedxml or disable external entities.",
"example_fix": "from defusedxml import ElementTree as ET",
},
```
仅此而已。不需要 YAML、插件或服务器重启。
## 项目结构
```
ai-sast-scanner/
├── scanner.py # main scanner + 10 rules + ML scorer
├── report_generator.py # dark-mode HTML report
├── samples/ # intentionally vulnerable code for demos
│ ├── vulnerable_app.py
│ └── vulnerable_frontend.js
├── reports/ # output (gitignored)
├── .github/workflows/
│ └── sast.yml # CI that runs scanner on every PR
├── .vscode/ # launch.json, tasks.json, extensions.json
├── Dockerfile # containerized runs
├── install.sh # one-command installer (Linux/Mac/WSL)
├── install.ps1 # one-command installer (Windows)
├── requirements.txt # empty — pure stdlib
├── README.md # this file
├── LICENSE # MIT
├── NOTICE # attribution
├── SECURITY.md # vulnerability disclosure policy
└── CONTRIBUTING.md # how to add rules / send PRs
```
## 路线图
- [ ] AST 级污点追踪(超越正则)
- [ ] SARIF 输出以支持 GitHub Code Scanning
- [ ] 针对低置信度发现的 CodeBERT 精细化分类器
- [ ] Git 归属集成 — 将发现归因于作者
- [ ] Semgrep 规则导入适配器
## 许可证
MIT。参见 [LICENSE](./LICENSE) 和 [NOTICE](./NOTICE)。
## 安全
负责任披露策略:参见 [SECURITY.md](./SECURITY.md)。
## 贡献
欢迎 PR!请参考 [CONTRIBUTING.md](./CONTRIBUTING.md) 了解从分叉到合并 PR 的快速路径。
由 **[Mohith Vasamsetti (CyberEnthusiastic)](https://github.com/CyberEnthusiastic)** 创作,属于 [AI Security Projects](https://github.com/CyberEnthusiastic?tab=repositories) 套件 —— 一套零依赖、商业级安全工具,专为希望在不承担昂贵 SaaS 费用的前提下获得严肃安全性的工程师与团队设计。
标签:AI, Apex, HTML报告, LNA, Python, SAST, SEO: AI安全扫描, SEO: CWE映射, SEO: OWASP映射, SEO: 代码漏洞检测, SEO: 开源SAST, 开源安全工具, 无后门, 机器学习, 盲注攻击, 自动化代码审查, 请求拦截, 逆向工具, 逆向工程平台, 零依赖, 静态应用安全测试, 风险评分