Grimwald79/Zero-Point-Secret-Scanner

GitHub: Grimwald79/Zero-Point-Secret-Scanner

一款基于 AST 语法树和熵值算法的本地 Pre-Commit 扫描器,用于精准拦截高熵密钥与 Token 泄露。

Stars: 0 | Forks: 0

# Zero Point Secret Scanner 一款自动化的本地 Pre-Commit Secret Scanner,旨在防止高熵加密密钥和 API Token 进入你的 Git 历史。 与严重依赖脆弱正则表达式 的传统 Secret Scanner 不同,该工具结合了 **Shannon Entropy Mathematics** 和 **Abstract Syntax Tree (AST) Parsing**,以语义化方式理解你的代码并大幅减少误报。 ## 🧠 架构:为什么选择 AST + Entropy? 大多数 Secret Scanner 使用 Regex 查找诸如 `secret` 或 `password` 之类的关键词。当自然语言字符串或 docstrings 触发误报时,这会导致“警报疲劳”。 本扫描器采用“基于技能”的方法: 1. **语义理解 (AST):** 扫描器使用 Python 原生的 `ast` 模块 (`ast.walk`)。它忽略变量名、函数定义和注释。它*仅*评估代码中赋值的字面值 (`ast.Constant`)。 2. **数学随机性:** 如果评估一个字符串,我们会计算其 Shannon Entropy ($H = -\sum p_i \log_2 p_i$)。由于字符的随机性,加密密钥(如 AWS Access Key)具有较高的 Entropy 得分。 3. **结构化启发式规则:** 为了防止长英文句子触发 Entropy 阈值,扫描器会显式过滤掉包含空格的字符串。 ## 🛡️ 内置威胁模型缓解措施 * **无命令注入:** 对 Git 的 Subprocess 调用使用带有 `shell=False` 的严格列表参数。 * **Doos 防护:** 在向 AST Parser 分配内存之前强制执行文件大小限制(默认 500 KB)。 * **信息泄露防护:** 发现的 Secret 在写入生成的 Markdown 报告之前会在本地进行掩码处理 (`AKI...[MASKED]...PLE`)。 * **路径遍历保护:** 所有本地文件生成均利用严格的路径解析限制。 ## ⚙️ 环境要求 * **Python:** 3.12+(利用现代类型提示和语法) * **Git:** 必须在你的仓库中初始化 * **操作系统:** 跨平台(Windows、macOS、Linux) ## 🚀 安装与设置 你无需配置复杂的 CI/CD Pipeline 即可开始防御你的本地仓库。包含的安装程序会动态生成一个拦截你 Commit 的 Git Hook。 1. **将脚本 Clone 或复制到你的仓库根目录:** 确保 `secret_scanner.py` 和 `install_hook.py` 存在。 2. **运行 Hook 安装程序:** *git add .* *git commit -m "feat: added new S3 connection logic"* ### “快乐路径”(代码干净) 如果未检测到 Secret,Commit 将静默且正常地进行。 ### “受阻路径”(检测到 Secret) 如果你意外暂存了高熵 API Token,扫描器将拦截 Commit 生命周期并中止操作: *[+] Running Zero Point Secret Scanner...* *--- Running Automated Verification Suite ---* *[PASS] Entropy calculations are mathematically sound.* *[PASS] Secret masking prevents local data leaks.* *[PASS] AST Scanner accurately isolates high-entropy constants.* *--- Verification Complete ---* *[+] Starting Pre-Commit Secret Scan...* *[!] Found 1 potential secrets. Report written to /path/to/secrets_report.md* *[!] COMMIT REJECTED: Secrets detected. Review the markdown report.* *[-] Commit aborted by Secret Scanner.* 打开生成的 `secrets_report.md` 以确切查看哪个文件和行号导致了违规,在代码中掩盖该 Secret,暂存更改,然后再次 Commit。 ## 🧪 自动化验证 (Protocol 10) 该工具假定代码在 proven innocent 之前是有罪的。每次扫描器运行时,它首先执行一个内部测试套件,断言 Shannon Entropy 数学计算已正确校准,并且 AST Parser 成功隔离了常量。如果数学计算失败,扫描器会安全中止以保护你的 Pipeline。 ## 📜 许可证与教育免责声明 这是一个教育工具,旨在演示 Static Application Security Testing (SAST) 的机制。对于企业级分布式扫描,请考虑将此逻辑整合到集中的 `.pre-commit-config.yaml` 框架中。
标签:API Token 扫描, AST 解析, DevSecOps, Git Hooks, Git 安全, meg, Pre-Commit, Python, Shannon Entropy, StruQ, 上游代理, 信息安全, 信息安全工具, 安全助手, 密码学, 手动系统调用, 指令劫持, 敏感数据检测, 无后门, 网络安全, 网络安全研究, 逆向工具, 错误基检测, 防泄露, 隐私保护, 静态代码分析, 高熵检测