srkyn/stigpilot

GitHub: srkyn/stigpilot

本地 Python CLI 工具,通过对比 DISA STIG XCCDF 版本自动生成影响摘要、修复积压、证据清单和工单导出,帮助安全团队快速响应 STIG 更新。

Stars: 0 | Forks: 0

![STIGPilot 横幅](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/50ae44557b025634.svg) # STIGPilot STIGPilot 是一个本地 Python CLI 工具,用于比较 DISA STIG XCCDF 版本发布,并将更改转化为影响摘要、修复积压、证据清单、管理者摘要以及可直接创建工单的导出文件。 [![测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/7c2b7734d8025635.svg)](https://github.com/srkyn/stigpilot/actions/workflows/tests.yml) ![Python](https://img.shields.io/badge/python-3.11%2B-blue) ![许可证](https://img.shields.io/badge/license-MIT-green) ## 为什么会有这个项目 官方工具在查看、扫描、清单工作和正式合规性方面具有权威性。STIGPilot 主要关注新 STIG 版本发布后的工作流空白: - 发生了什么变化? - 哪些变化是重要的? - 哪些变得更加严重了? - 哪些可能需要实施工作? - 哪些证据需要更新? - 应该创建哪些工单? - 管理者应该了解什么? 我在了解 STIG 并提出一个实际问题后开发了这个工具:如果有人负责应用这些控制措施或比较不同版本,什么能让他们的工作更轻松?答案不是另一个查看器或扫描器。而是一个快速的本地助手,它将密集的 XML 版本转化为简短的摘要、积压工作以及人们可以真正采取行动的证据请求。 ## 30 秒演示 ``` git clone https://github.com/srkyn/stigpilot.git cd stigpilot python -m pip install -e ".[dev]" stigpilot demo ``` 生成的文件: ``` output/demo/change-brief.md output/demo/change-brief.html output/demo/changes.json output/demo/manager-summary.md output/demo/remediation-backlog.csv output/demo/evidence-checklist.md output/demo/jira-import.csv output/demo/servicenow-import.csv output/demo/github-issues.md ``` 终端输出示例: ``` Demo Reports Generated Change brief output/demo/change-brief.md Manager summary output/demo/manager-summary.md Remediation backlog output/demo/remediation-backlog.csv STIGPilot Diff Summary Total changes 4 Added 1 Removed 1 Modified 2 High-priority review 2 Evidence update likely 1 ``` 更改摘要摘录: ``` 4 control change(s) were detected. 3 change(s) are likely to require priority review, implementation work, or evidence refresh. Prioritize high-severity additions or severity increases, then review remediation text changes before reusing old tickets. ``` ## 真实的 Chrome 演示 Windows 版 Google Chrome 是最佳的初始真实场景,因为它为人熟知、与端点安全相关,且比完整的操作系统 STIG 更小。 运行内置的脱敏 Chrome 工作流: ``` stigpilot chrome-demo ``` 仅为一个团队或影响类别生成 Chrome 数据包: ``` stigpilot chrome-demo --impact evidence_update_likely --owner "Endpoint/Windows Admin" ``` 生成的文件: ``` output/chrome/change-brief.md output/chrome/change-brief.html output/chrome/changes.json output/chrome/manager-summary.md output/chrome/remediation-backlog.csv output/chrome/evidence-checklist.md output/chrome/jira-import.csv output/chrome/servicenow-import.csv output/chrome/github-issues.md ``` 要针对官方 DoD Cyber Exchange 的 Google Chrome Current Windows STIG V2R10 和 V2R11 文件运行,请下载公开的 ZIP 文件,解压出 XCCDF XML 文件,并将它们放在这里: ``` examples/chrome_windows_input/old.xml examples/chrome_windows_input/new.xml ``` 然后重新运行: ``` stigpilot chrome-demo ``` ## STIGPilot 的优势 - 版本间的 STIG 更改分诊 - 针对多个 STIG 更新的文件夹到文件夹组合比较 - 识别严重性提升和影响实施的更改 - 生成修复积压 CSV - 准备面向负责人的证据请求 - 创建管理者摘要 - 导出可直接创建工单的 CSV 和 GitHub issue 草稿 ## STIGPilot 不适用的场景 - 不是官方 DISA 工具 - 不是合规性验证 - 不是扫描器 - 不是自动修复工具 - 不能替代 SCC、STIG Viewer、PowerSTIG、OpenRMF 或组织合规性审查 ## 何时使用 - 新的 Windows 11 STIG 版本发布,您需要了解发生了哪些变化。 - 漏洞管理分析师需要一份积压 CSV。 - GRC 分析师需要一份证据清单。 - 系统管理员团队需要面向负责人的修复工作。 - 管理者需要简短的更新,而不想阅读数百条控制措施。 ## 安装 从克隆仓库安装: ``` git clone https://github.com/srkyn/stigpilot.git cd stigpilot python -m pip install -e . ``` 开发依赖: ``` python -m pip install -e ".[dev]" ``` 使用 `pipx` 从本地克隆安装: ``` pipx install . ``` 不使用控制台脚本的后备方案: ``` python -m stigpilot.cli --help python -m stigpilot.cli demo ``` Windows 注意事项:如果安装后无法识别 `stigpilot`,可能是您的 Python Scripts 目录不在 `PATH` 中。`python -m stigpilot.cli ...` 后备方案无需更改 `PATH` 即可工作。 ## CLI 用法 健康检查: ``` stigpilot doctor ``` 解析 STIG: ``` stigpilot parse examples/sample_input/new.xml --csv output/controls.csv --json output/controls.json ``` 生成摘要: ``` stigpilot brief examples/sample_input/new.xml --out output/brief.md --severity high ``` 比较两个 STIG 版本: ``` stigpilot diff examples/sample_input/old.xml examples/sample_input/new.xml --out output/change-brief.md --csv output/remediation-backlog.csv ``` 从两个 STIG 文件生成完整的本地工作流数据包: ``` stigpilot packet examples/sample_input/old.xml examples/sample_input/new.xml --out output/packet ``` 生成工作流导出: ``` stigpilot diff examples/sample_input/old.xml examples/sample_input/new.xml --out output/change-brief.md --csv output/remediation-backlog.csv --jira-csv output/jira-import.csv --servicenow-csv output/servicenow-import.csv --github-md output/github-issues.md --json output/changes.json ``` 比较新旧 STIG XML 文件的文件夹: ``` stigpilot batch examples/portfolio_input/old examples/portfolio_input/new --out output/portfolio ``` 为单个影响类别或负责人组生成定向数据包: ``` stigpilot diff examples/sample_input/old.xml examples/sample_input/new.xml --out output/windows-high-priority.md --csv output/windows-high-priority.csv --impact high_priority_review --owner "Endpoint/Windows Admin" ``` 生成面向管理者的摘要: ``` stigpilot manager examples/sample_input/old.xml examples/sample_input/new.xml --out output/manager-summary.md ``` 生成独立的 HTML 更改摘要: ``` stigpilot html examples/sample_input/old.xml examples/sample_input/new.xml --out output/change-brief.html ``` 从一个 STIG 生成可直接创建工单的导出: ``` stigpilot tickets examples/sample_input/new.xml --out output/tickets.csv --severity high ``` 生成证据清单: ``` stigpilot evidence examples/sample_input/new.xml --out output/evidence-checklist.md ``` 显示终端摘要: ``` stigpilot summary examples/sample_input/new.xml ``` 写入可配置的负责人/标签映射示例: ``` stigpilot config-example --out stigpilot.toml ``` 使用本地负责人/标签映射配置: ``` stigpilot diff examples/sample_input/old.xml examples/sample_input/new.xml --out output/change-brief.md --csv output/remediation-backlog.csv --config stigpilot.toml ``` ## 输出示例 `examples/sample_input/` 中包含了合成的测试数据。它们是虚假且经过脱敏处理的。 `examples/sample_output/` 中提交的样本输出: - `change-brief.md` - `change-brief.html` - `changes.json` - `manager-summary.md` - `remediation-backlog.csv` - `evidence-checklist.md` - `jira-import.csv` - `servicenow-import.csv` - `github-issues.md` 单命令数据包输出提交在 `examples/packet_output/` 中。 文件夹比较样本输出提交在 `examples/portfolio_output/` 中。 HTML 报告输出提交在 `examples/html_output/` 中。 额外的解析控制和工单导出示例: - `controls.csv` - `controls.json` - `tickets.csv` ## Windows 版 Chrome 官方输入 本仓库未包含官方 Google Chrome Current Windows STIG XML 文件。除非您在 `examples/chrome_windows_input/` 下提供官方 XML,否则 Chrome 演示将使用脱敏的样本文件。 推荐的 ZIP 来源: - `https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Google_Chrome_V2R10_STIG.zip` - `https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Google_Chrome_V2R11_STIG.zip` 这使得项目可以立即投入使用,同时避免了对官方 STIG XML 文件不明确的重新分发。 ## 影响规则 分类器有意保持透明。没有不透明的 AI 依赖。 - 新的高严重性控制:`high_priority_review` - 严重性提升至高:`high_priority_review` - 严重性提升但低于高:`review_recommended` - 实质性修复文本更改:`implementation_change_likely` - 实质性检查文本更改:`evidence_update_likely` - 移除的控制:`review_recommended` - 仅标题/元数据措辞更改:`no_action_likely` - CCI/参考更改:`review_recommended` 文本更改使用 `0.86` 的透明相似度阈值以及配置语言关键字。目标是将仅措辞上的变动与可能影响实施步骤或证据请求的更改区分开来。 ## 标签和所有权 标签和建议的负责人是基于关键字的,并且是可以解释的。 - Windows、GPO、Registry、Defender/AV:Endpoint/Windows Admin - Linux、sshd、sudo、auditd、PAM:Linux Admin - IAM、特权访问、身份验证、锁定:IAM/Security Admin - SQL、Oracle、PostgreSQL、MongoDB:Database Admin - 防火墙、路由器、交换机、Cisco、Palo Alto:Network/Security Engineering - Cloud、Azure、AWS、GCP、Entra:Cloud/IAM Admin - Container、Kubernetes、Docker:Platform/Container Admin 其他所有内容默认为 Security/GRC Analyst。 团队可以使用本地 TOML 文件扩展映射: ``` [[owner_rules]] owner = "Identity/IAM Team" keywords = ["authentication", "privileged account"] [tag_rules] "Privileged Access" = ["privileged account", "sudoers"] ``` 有关负责人路由示例、标签规则和配置验证说明,请参阅 [docs/configuration.md](docs/configuration.md)。 ## 限制 - STIGPilot 不验证主机合规性。 - STIGPilot 不替代正式审查。 - STIGPilot 不下载或抓取 DISA 内容。 - STIGPilot 不自动修复。 - 尽最大努力处理 XML 变体;不常见的供应商打包可能需要改进解析器。 - 关键字标签和负责人映射是透明的但并不完美。 ## 安全使用 仅使用 STIGPilot 处理您被授权处理的文件。请勿发布敏感证据、系统名称、内部主机数据、凭据、机密信息或受限的组织材料。包含的测试数据均是合成的。 ## 路线图 - PyPI 打包和发布工作流 - 更好的 HTML 数据包/组合报告覆盖率 - 更多来自官方但由用户提供的 STIG 变体的解析器测试数据 - 用于 README 示例的可选截图资源 - 在 CLI 保持稳定之后推出可选的 Streamlit 仪表板 ## 项目价值 - 源于一个实用的安全自动化问题:如何让执行 STIG 比较和后续工作的人员减轻痛苦? - 防御性安全产品判断力 - 具有命名空间弹性的 XCCDF/XML 解析 - STIG 版本更改分析 - 基于规则的影响分类 - 工单和证据工作流设计 - 可测试的 Python CLI 工程 ## 开发 运行测试: ``` python -m pytest ``` 重新生成样本输出: ``` python -m stigpilot.cli diff examples/sample_input/old.xml examples/sample_input/new.xml --out examples/sample_output/change-brief.md --csv examples/sample_output/remediation-backlog.csv --jira-csv examples/sample_output/jira-import.csv --servicenow-csv examples/sample_output/servicenow-import.csv --github-md examples/sample_output/github-issues.md python -m stigpilot.cli manager examples/sample_input/old.xml examples/sample_input/new.xml --out examples/sample_output/manager-summary.md python -m stigpilot.cli parse examples/sample_input/new.xml --csv examples/sample_output/controls.csv --json examples/sample_output/controls.json python -m stigpilot.cli tickets examples/sample_input/new.xml --out examples/sample_output/tickets.csv python -m stigpilot.cli evidence examples/sample_input/new.xml --out examples/sample_output/evidence-checklist.md python -m stigpilot.cli chrome-demo --out examples/chrome_windows_output --input-dir examples/chrome_windows_input ```
标签:DevSecOps, DISA STIG, GitHub Issues, GPT, IT合规, Jira集成, Python, Python安全, SCAP, ServiceNow集成, STIG, XCCDF, 上游代理, 修复待办, 基线对比, 多模态安全, 子域名枚举, 安全合规, 安全基线, 安全报告, 工单管理, 影响分析, 教学环境, 文档结构分析, 无后门, 漏洞管理, 系统安全, 网络代理, 证据清单, 逆向工具, 防御加固