SANC18/pyseccheck

GitHub: SANC18/pyseccheck

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

Stars: 0 | Forks: 0

# pyseccheck ![Python](https://img.shields.io/badge/Python-3.10+-blue) ![License](https://img.shields.io/badge/License-MIT-green) ![Status](https://img.shields.io/badge/Status-In%20Progress-orange) 一个基于 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嵌入, 软件供应链安全, 远程方法调用, 逆向工具, 错误基检测, 静态代码分析