DeepakNarayananS/Automated-Python-Security-Audit

GitHub: DeepakNarayananS/Automated-Python-Security-Audit

一款企业级Python安全审计工具,整合漏洞扫描、依赖分析与SBOM生成,支持单环境和多项目批量扫描并生成可视化报告。

Stars: 0 | Forks: 0

# 🔒 Python 安全审计工具 - 企业版 v4.0 [![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/) [![Code Quality](https://img.shields.io/badge/SonarQube-Compliant-brightgreen.svg)](https://www.sonarqube.org/) [![Security](https://img.shields.io/badge/Bandit-Passed-success.svg)](https://bandit.readthedocs.io/) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Version](https://img.shields.io/badge/version-4.0.0-blue.svg)]() 一款全面的企业级 Python 安全审计工具,支持**双重扫描模式**:扫描单个环境或同时扫描文件夹中的所有 Python 项目。生成精美的 HTML 报告,非常适合向 CISO 进行汇报展示。 ## ✨ 核心功能 ### 🎯 双重扫描模式 - **单项目模式** - 扫描当前 Python 环境(全局环境或 venv) - **多项目模式** - 同时扫描文件夹中的所有项目 - 自动项目发现(检测 venv、requirements.txt、Python 文件) - 跨多个项目的合并报告 ### 🛡️ 全面安全分析 - **漏洞检测** - 使用 `pip-audit` 进行全面的 CVE 检测 - **完整包分析** - 分析所有已安装的包(通常为 70-300+) - **依赖树可视化** - 完整的依赖关系映射 - **生成 SBOM** - CycloneDX 格式的软件物料清单 (SBOM) - **智能静态代码分析** - Bandit 安全扫描,具备智能严重性过滤功能 ### 📈 精美报告 - **专业 HTML 报告** - 适合 CISO 汇报的展示格式 - **完整数据展示** - 通过可滚动的表格展示所有包、漏洞和过时的包 - **风险评估** - 自动计算风险等级(低/中/高/严重) - **项目优先级排序** - 识别需要立即关注的高风险项目 - **丰富的控制台输出** - 带颜色且易于阅读的终端界面 ### ⚡ 企业级就绪 - 执行速度快,具备超时保护 - 为自动化提供全面的 JSON 报告 - 符合 SonarQube 标准(0 个 bug,0 个代码异味) - 兼容 Windows - 完美适合 CI/CD 集成 ## 🚀 快速入门(只需 2 分钟!) ### 第一步:安装依赖 ``` cd Python_Security pip install -r requirements.txt ``` ### 第二步:运行你的第一次扫描 #### 选项 A:单项目模式(扫描当前环境) ``` python python_security.py ``` #### 选项 B:多项目模式(扫描所有项目) ``` python python_security.py --multi-project c:\path\to\projects # 或简写形式 python python_security.py -m c:\path\to\projects ``` ### 第三步:查看报告 1. 打开 `python_security_audit_output/` 文件夹 2. 找到 HTML 报告: - 单项目模式:`security_audit_report_[timestamp].html` - 多项目模式:`multi_project_security_audit_[timestamp].html` 3. 在浏览器中打开它 4. 向你的 CISO 汇报!🎉 ## 📦 安装说明 ### 前置条件 - Python 3.8 或更高版本 - pip (Python 包管理器) - 互联网连接(用于查询漏洞数据库) ### 依赖项(5 个包) ``` pip install -r requirements.txt ``` **安装内容说明:** 1. **rich** (v13.9.4) - 精美的终端输出 2. **pip-audit** (v2.10.0) - PyPA 官方漏洞扫描器 3. **pipdeptree** (v2.35.3) - 依赖树分析 4. **bandit** (v1.9.4) - 具备智能严重性过滤的静态安全分析 5. **cyclonedx-bom** (v7.3.0) - SBOM 生成 所有依赖项均锁定到特定版本,以确保可重复性和安全性。 ## 📖 使用指南 ### 命令参考 ``` # 显示帮助 python python_security.py --help # 显示版本 python python_security.py --version # Single mode(默认)- 扫描当前环境 python python_security.py # Multi-project mode - 扫描文件夹中的所有项目 python python_security.py --multi-project python python_security.py -m ``` ### 单项目模式 - 详细说明 **适用场景**:审计你当前的 Python 环境或特定项目 ``` # 扫描全局 Python 环境 python python_security.py # 扫描特定项目(先激活 venv) cd c:\projects\my-app venv\Scripts\activate python c:\path\to\python_security.py ``` **执行操作**: 1. 扫描当前环境中的所有 Python 包 2. 使用 pip-audit 检查漏洞 3. 识别过时的包 4. 分析依赖树 5. 生成 SBOM 6. 运行 Bandit 静态分析 7. 创建精美的 HTML 报告 **输出**:`security_audit_report_[timestamp].html` ### 多项目模式 - 详细说明 **适用场景**:审计项目组合中的多个 Python 项目 ``` python python_security.py -m c:\Users\DEEPAK\Documents\automation ``` **执行操作**: 1. **发现阶段**:查找文件夹中的所有 Python 项目 - 包含虚拟环境 (venv, .venv, env 等) 的项目 - 包含 requirements.txt 的项目 - 包含 Python 文件的项目 2. **扫描阶段**:分别扫描每个项目 - 如果可用,使用项目自身的 venv - 如果没有 venv,则回退到全局 Python 环境 - 收集包、漏洞、过时的包 3. **报告阶段**:生成合并报告 - 跨所有项目的整体指标 - 每个项目的详细分解及完整包列表 - 每个项目的风险评估 - 合并的漏洞列表 - 按优先级排序的建议 **输出**:`multi_project_security_audit_[timestamp].html` **示例文件夹结构**: ``` automation/ ← Root folder (pass this path) ├── web-scraper/ │ ├── venv/ ← Has venv ✓ │ ├── requirements.txt ← Has requirements ✓ │ └── scraper.py ├── api-client/ │ ├── .venv/ ← Has venv ✓ │ └── client.py ├── data-processor/ │ ├── requirements.txt ← Has requirements ✓ │ └── processor.py └── utils/ └── helpers.py ← Has Python files ✓ ``` 所有 4 个项目都将被发现并扫描! ## 📊 报告功能 ### 单项目模式报告包含: - ✅ 完整的包清单(可滚动表格) - ✅ 系统信息(平台、Python 版本、架构) - ✅ 所有带有 CVE ID 和修复版本的漏洞 - ✅ 所有显示当前版本与最新版本对比的过时包 - ✅ 带有状态指示器的 Bandit 静态分析 - ✅ 依赖树可视化 - ✅ CycloneDX 格式的 SBOM - ✅ 风险评估(低/中/高/严重) - ✅ 具有可操作性的建议 ### 多项目模式报告包含: - ✅ **包含上述所有内容,另外还有:** - ✅ 跨所有项目的整体指标 - ✅ **每个项目的详细分解**,包括: - 完整的包列表(可滚动) - 所有带有 CVE ID 的漏洞 - 所有过时的包 - 单独的风险评估 - ✅ 按风险等级划分的项目优先级排序 - ✅ 整个项目组合的建议 - ✅ 合并的漏洞跟踪 ### 视觉特性: - **可滚动表格** - 查看所有数据而不会使页面混乱 - **粘性表头** - 滚动时表头保持可见 - **颜色编码** - 红色(高风险),黄色(中风险),绿色(低风险) - **悬停效果** - 交互式行高亮显示 - **响应式设计** - 适用于所有屏幕尺寸 - **专业布局** - 适合 CISO 查阅的展示形式 ## 📁 输出结构 ### 单项目模式输出: ``` python_security_audit_output/ ├── security_audit_report_[timestamp].html ← Main HTML report ├── system_information.json ├── installed_packages.json ├── pip_audit_vulnerabilities.json ├── outdated_packages.json ├── dependency_tree.json ├── bandit_results.json ├── sbom.json ├── requirements_snapshot.txt └── dependency_conflicts.txt ``` ### 多项目模式输出: ``` python_security_audit_output/ ├── multi_project_security_audit_[timestamp].html ← Consolidated HTML report ├── installed_packages_project1.json ├── installed_packages_project2.json ├── installed_packages_project3.json └── ... (per-project data files) ``` ## 🎯 使用场景 ### 适用于 CISO 和安全团队 - **高管汇报** - 用于董事会展示的专业 HTML 报告 - **多项目概览** - 一次性扫描整个 Python 项目组合 - **风险评估** - 自动计算每个项目和总体的风险等级 - **合规性** - 为满足监管要求生成 SBOM - **审计追踪** - 用于安全审计的完整 JSON 数据 - **优先级排序** - 识别需要立即关注的高风险项目 ### 适用于开发团队 - **部署前检查** - 在生产环境发布前进行扫描 - **多项目管理** - 同时审计工作区中的所有项目 - **依赖管理** - 了解包之间的依赖关系 - **安全监控** - 定期进行漏洞扫描 - **技术债务** - 跟踪各个项目中过时的包 ### 适用于 DevOps/CI-CD - **自动化扫描** - 集成到构建流水线中 - **质量门禁** - 阻止存在严重漏洞的部署 - **持续监控** - 安排定期审计 - **合规性自动化** - 自动生成 SBOM ## 💡 最佳实践 ### 单项目模式: 1. **在 venv 中运行**:运行前激活项目的 venv,以进行针对特定项目的审计 2. **定期扫描**:每周或在每次部署前运行一次 3. **查看 HTML**:在浏览器中打开 HTML 报告以获得最佳体验 4. **与团队共享**:HTML 报告非常适合团队评审 ### 多项目模式: 1. **组织项目**:将所有 Python 项目保存在同一个根文件夹中 2. **使用 venv**:每个项目应有自己的 venv 以确保扫描准确 3. **优先级排序**:首先关注高/严重风险的项目 4. **标准化**:使用报告来识别项目间的版本不一致问题 5. **安排审计**:每月运行一次多项目审计以便进行项目组合管理 ### 应对发现的问题: | 风险等级 | 所需操作 | 时间表 | |------------|----------------|----------| | 🔴 严重 | 立即更新 | 24 小时 | | 🟠 高 | 规划紧急更新 | 1 周 | | 🟡 中 | 安排更新 | 2-4 周 | | 🟢 低 | 包含在下一个周期中 | 下一个 sprint | ## 🔧 依赖项详解 ### 1. **rich** (v13.9.4) **用途**:带有颜色、表格和进度指示器的精美终端输出 **原因**:提供专业、易于阅读的控制台界面 **安全性**:被广泛使用,积极维护,无已知漏洞 ### 2. **pip-audit** (v2.10.0) **用途**:扫描 Python 包以查找已知的安全漏洞 **原因**:由 PyPA (Python 打包权威机构) 提供的官方工具 **安全性**:针对 OSV (开源漏洞) 数据库进行检查 **覆盖范围**:全面的 CVE 检测并提供修复建议 ### 3. **pipdeptree** (v2.35.3) **用途**:显示包依赖树 **原因**:帮助理解包之间的依赖关系和传递依赖 **安全性**:识别隐藏的易受攻击依赖项 **特性**:JSON 输出,循环依赖检测 ### 4. **bandit** (v1.9.4) **用途**:针对 Python 代码的静态安全分析 **原因**:用于查找常见安全问题的行业标准工具 **安全性**:检测 OWASP Top 10 漏洞 **覆盖范围**:SQL 注入、硬编码密码、不安全的函数 **智能特性**: - 首先扫描中/高严重性问题 - 如果未发现,则自动扫描低严重性问题 - 包含状态列:✓ 安全使用,⚠ 需审查,⚠ 建议修复,❌ 必须修复 - HTML 报告中采用颜色编码的严重性级别 ### 5. **cyclonedx-bom** (v7.3.0) **用途**:生成软件物料清单 (SBOM) **原因**:创建 CycloneDX 格式的行业标准 SBOM **安全性**:对于合规性和供应链安全至关重要 **覆盖范围**:包含元数据的完整包清单 ## 🛠️ 故障排除 ### 遇到 "Module not found" 错误? ``` pip install -r requirements.txt ``` ### 在多项目模式下遇到 "No projects found"? - 确保文件夹中包含 Python 项目 - 项目需要包含 venv、requirements.txt 或 .py 文件 ### "pip-audit failed"? - 确保网络连接正常(需要查询漏洞数据库) ### 扫描耗时太长? - 正常现象!每个项目需要 1-3 分钟 - 该工具具有超时保护机制 - 对于 10 个项目,预计需要 10-30 分钟 ### 某些项目扫描失败? - 检查项目的 venv 是否配置正确 - 失败的项目将在报告中标记 - 查看控制台输出以获取具体的错误信息 ### 想要扫描特定项目? ``` cd c:\path\to\your\project python c:\path\to\python_security.py ``` ## 📈 本工具的特色之处 ### 双重扫描模式 - ✅ **单项目模式** - 扫描当前的 Python 环境(全局环境或 venv) - ✅ **多项目模式** - 同时扫描文件夹中的所有项目 - ✅ 自动项目发现(检测 venv、requirements.txt、Python 文件) - ✅ 跨多个项目的合并报告 ### 全面覆盖 - ✅ 扫描**所有**包(无限制,无截断) - ✅ 高效处理每个环境中的 70-300+ 个包 - ✅ 使用 pip-audit 进行全面的漏洞扫描 - ✅ 完整的依赖分析 - ✅ 在可滚动的 HTML 表格中显示**所有**漏洞和过时的包 ### 企业级特性 - ✅ **精美的 HTML 报告**,包含完整数据,适合高管展示 - ✅ **多项目合并报告**,展示整个项目组合的安全态势 - ✅ 适合 C 审查的专业设计 - ✅ 每个项目和总体的自动化风险评估 - ✅ 带有准确时间戳的可操作建议 - ✅ 带有状态指示器的智能 Bandit 分析 - ✅ 基于风险等级的项目优先级排序 ### 代码质量 - ✅ **符合 SonarQube 标准** - 零 bug,零代码异味 - ✅ 安全的实现 - 无 shell 注入风险 - ✅ 全面使用类型提示 - ✅ 全面的错误处理机制 ### 性能 - ✅ 高效算法带来极速的执行体验 - ✅ 超时保护确保可靠性 - ✅ 能够处理海量包数据 - ✅ 简洁、优化的代码 ## 🔒 安全特性 ### 设计安全 ✅ **无 shell 注入** - 从不使用 `shell=True` ✅ **防止命令注入** - 命令以列表形式传递 ✅ **输入验证** - 所有输入均经过验证 ✅ **超时保护** - 防止操作挂起 ✅ **错误处理** - 优雅的失败处理及详细的日志记录 ### 漏洞检测 ✅ **全面扫描** - 使用 pip-audit 进行彻底的 CVE 检测 ✅ **CVE 数据库** - 针对 OSV (开源漏洞) 数据库进行检查 ✅ **修复建议** - 建议升级到特定版本 ✅ **传递依赖** - 检测子依赖项中的漏洞 ✅ **完整结果** - 在可滚动的 HTML 表格中显示所有漏洞 ## 🆚 对比 | 特性 | 本工具 | 手动检查 | 其他工具 | |---------|-----------|---------------|-------------| | 单环境扫描 | ✅ 是 | ❌ 否 | ✅ 是 | | 多项目扫描 | ✅ 是 | ❌ 否 | ❌ 否 | | 完整数据展示 | ✅ 全部(可滚动) | ❌ 否 | ⚠️ 截断显示 | | 合并报告 | ✅ 是 | ❌ 否 | ❌ 否 | | HTML 报告 | ✅ 是 | ❌ 否 | ⚠️ 基础 | | 智能 Bandit 分析 | ✅ 是(带状态) | ❌ 否 | ⚠️ 基础 | | 项目优先级排序 | ✅ 是 | ❌ 否 | ❌ 否 | | CISO 就绪 | ✅ 是 | ❌ 否 | ⚠️ 部分 | | 速度 | ⚡ 快速 | 🐌 缓慢 | ⚡ 快速 | | 易用性 | 😊 简单 | 😓 复杂 | 😐 一般 | | Windows 支持 | ✅ 是 | ⚠️ 视情况而定 | ⚠️ 视情况而定 | ## 📚 常见问题解答 (FAQ) **问:扫描一次需要多长时间?** 答:对于包含 70-300+ 个包的单项目模式,需要 2-5 分钟。对于多项目模式,每个项目需要 1-3 分钟。 **问:它会扫描虚拟环境吗?** 答:在单项目模式下,它会扫描当前活动的环境。在多项目模式下,如果可用,它会扫描每个项目的 venv。 **问:如何同时扫描多个项目?** 答:使用多项目模式:`python python_security.py --multi-project c:\path\to\projects`。该工具将发现该文件夹中的所有 Python 项目并生成合并报告。 **问:在多项目模式下,什么算作一个“项目”?** 答:任何包含虚拟环境 (venv, .venv 等)、requirements.txt 文件或 Python (.py) 文件的文件夹。 **问:我可以扫描具有不同 Python 版本的项目吗?** 答:可以!如果可用,每个项目都会使用其自身虚拟环境的 Python 解释器进行扫描,否则使用全局 Python。 **问:HTML 报告会显示我所有的包和漏洞吗?** 答:是的!HTML 报告包含完整的可滚动表格,列出所有已安装的包、所有漏洞和所有过时的包——无限制或截断。 **问:HTML 报告可以安全分享吗?** 答:是的,但在向外部分享之前,请检查是否包含敏感信息(主机名、路径)。 **问:我应该多久运行一次?** 答:对于活跃项目每周一次,对于稳定系统每月一次。 **问:如果我发现严重漏洞怎么办?** 答:立即更新受影响的包:`pip install --upgrade package_name` **问:我可以将其集成到 CI/CD 中吗?** 答:可以!在您的流水线中运行该脚本并检查退出码。该工具专为自动化而设计。 ## 📝 真实场景示例 ### 示例 1:部署前检查 ``` # 在部署前扫描当前项目 cd c:\projects\my-app python c:\path\to\python_security.py ``` ### 示例 2:项目组合审计 ``` # 扫描贵公司的所有 Python 项目 python python_security.py -m c:\company\python-projects ``` ### 示例 3:每周安全审查 ``` # 在 Task Scheduler (Windows) 中进行调度 python python_security.py -m c:\projects > audit_log.txt ``` ### 示例 4:CI/CD 集成 ``` # 添加到您的 build pipeline python python_security.py if %ERRORLEVEL% NEQ 0 ( echo Security audit failed exit /b 1 ) ``` ## 🎓 版本历史 ### 版本 4.0.0(当前版本) - 多项目支持 - ✅ 多项目扫描模式 - ✅ 自动项目发现 - ✅ 合并的 HTML 报告 - ✅ 针对每个项目的风险评估 - ✅ 使用 argparse 的命令行界面 - ✅ 增强了报告功能,包含详细的单项目部分 - ✅ 每个项目的完整包列表 - ✅ 显示所有漏洞和过时的包 ### 版本 3.0.0 - 符合 SonarQube 标准 - ✅ 单环境扫描 - ✅ 移除了 Safety(与 pip-audit 重复) - ✅ 修复了 HTML 时间戳显示问题 - ✅ 修复了所有数据的可滚动表格 - ✅ 智能 Bandit 严重性过滤 - ✅ 符合 SonarQube 标准(0 个 bug,0 个代码异味) ## ✅ 质量保证 该工具已经过全面测试和验证: - ✅ **SonarQube**:零 bug,零漏洞,零代码异味 - ✅ **Bandit**:通过安全分析 - ✅ **类型检查**:完全覆盖类型提示 - ✅ **PEP 8**:符合代码风格规范 - ✅ **错误处理**:全面的异常处理 - ✅ **文档**:完全有文档记录的代码库 - ✅ **真实场景测试**:在包含 70-300+ 个包的环境中进行了测试 - ✅ **Windows 兼容**:修复了 Windows 系统的 Unicode 编码问题 - ✅ **多项目测试**:已通过多个项目组合验证 **状态**:生产环境就绪 | 企业级 | 安全已验证 ## 📄 许可证 MIT 许可证 - 可根据需要自由使用和修改。 ## 🎉 立即开始! ### 单项目模式(扫描当前环境) ``` # 1. 安装依赖 pip install -r requirements.txt # 2. 运行您的首次 audit python python_security.py # 3. 打开 HTML 报告 # 检查 python_security_audit_output/ 目录 # 在浏览器中打开 security_audit_report_[timestamp].html ``` ### 多项目模式(扫描所有项目) ``` # 1. 安装依赖(若尚未完成) pip install -r requirements.txt # 2. 运行 multi-project audit python python_security.py --multi-project c:\path\to\your\projects # 3. 打开合并后的 HTML 报告 # 检查 python_security_audit_output/ 目录 # 在浏览器中打开 multi_project_security_audit_[timestamp].html ``` **大功告成!** 您现在已经拥有了一份包含精美 HTML 报告的综合安全审计结果,随时可以提交给您的 CISO。 **为 ❤️ 企业级 Python 安全而生** *更智能地扫描,更好地展示,更迅速地保障安全。现已支持多项目!* **版本 4.0.0** | 企业级 | 符合 SonarQube 标准 | 多项目就绪
标签:SBOM生成, 企业合规, 后端开发, 域名收集, 安全专业人员, 安全扫描, 时序注入, 逆向工具, 错误基检测, 静态代码分析