SANC18/pyseccheck
GitHub: SANC18/pyseccheck
基于 Python AST 的静态代码安全分析器,用于在代码投产前检测硬编码密钥、SQL 注入、不安全反序列化等常见漏洞。
Stars: 0 | Forks: 0
# pyseccheck



一个基于 Python AST 的静态代码分析器,用于在代码投入生产环境之前检测常见的安全漏洞。
## 检测内容
| 漏洞类型 | 示例 |
|---|---|
| 硬编码机密 | `password = "admin123"` |
| SQL 注入风险 | `cursor.execute("SELECT * FROM users WHERE id=" + id)` |
| 不安全的 eval 使用 | `eval(user_input)` |
| 不安全的反序列化 | `pickle.loads(data)` |
| 弱加密 | `hashlib.md5(...)` |
## 工作原理
pyseccheck 将 Python 源文件解析为抽象语法树 (AST),并遍历该树以查找已知的漏洞模式——无需执行代码。其原理类似于 Bandit 和 Semgrep,但它是从零开始构建的,旨在演示编译器/AST 基础知识。
## 用法
```
pip install -r requirements.txt
python -m pyseccheck scan ./your_project/
```
输出:
```
[HIGH] hardcoded_secret at app.py:14
→ password = "admin123"
[MEDIUM] unsafe_eval at utils.py:32
→ eval(user_input)
```
## 技术栈
`Python` `ast` `Click` `pytest` `JSON`
## 项目结构
```
pyseccheck/
├── src/
│ ├── analyzers/
│ │ ├── secrets.py # Hardcoded credentials detector
│ │ ├── sql_inject.py # SQL injection patterns
│ │ ├── eval_check.py # Unsafe eval/exec usage
│ │ └── crypto.py # Weak crypto usage
│ ├── reporter.py # JSON + CLI output
│ └── cli.py # Click CLI entry point
├── tests/
├── examples/ # Sample vulnerable Python files
├── requirements.txt
└── README.md
```
## 路线图
- [x] 项目结构
- [ ] AST walker 基类
- [ ] 硬编码机密检测器
- [ ] SQL 注入检测器
- [ ] CLI 接口 (Click)
- [ ] JSON 报告输出
- [ ] pytest 测试套件
- [ ] eval/exec 检测器
## 许可证
MIT
标签:Bandit替代, CISA项目, Click, DevSecOps, DNS 反向解析, DOE合作, Homebrew安装, IDE插件潜力, pytest, Python, SAST, Semgrep, SQL注入检测, URL发现, WordPress安全扫描, 上游代理, 代码安全, 反序列化漏洞, 安全专业人员, 安全检测, 安全规则引擎, 弱加密检测, 无后门, 漏洞枚举, 盲注攻击, 硬编码密钥, 自动化payload嵌入, 软件供应链安全, 远程方法调用, 逆向工具, 错误基检测, 静态代码分析