ZENLIK02/HeimDall-SecurityV2

GitHub: ZENLIK02/HeimDall-SecurityV2

一款 DevSecOps 安全验证后端,通过结合 Semgrep SAST、LLM 推理和安全 DAST 验证来自动分类告警并降低误报。

Stars: 1 | Forks: 0

# Heimdall-SecurityV2 [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/) [![DevSecOps 验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/f5/f5675a174d125df3b7d6e550687618fd383c8498a5f014759dd1023146dd12af.svg)](https://github.com/ZENLIK02/HeimDall-SecurityV2/actions/workflows/heimdall-devsecops.yml) [![许可证: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![版本](https://img.shields.io/badge/version-v0.1.0--alpha-orange)](CHANGELOG.md) Heimdall 是**一个开源的 DevSecOps 验证后端,它利用 LLM 辅助推理和安全的 DAST 风格验证来减少 SAST 的误报**。 它面向希望测试静态分析结果是否能转化为有证据支撑的决策(`True Positive`、`False Positive` 或 `Needs Review`)的 AppSec 工程师、DevSecOps 团队、学生和研究人员。 Heimdall 是一个处于 alpha 阶段的研究/后端工具。它不是一个生产就绪的企业级平台,并且只能在您拥有或获得授权评估的仓库和目标上进行测试。 ## 当前研究包摘要 当前的 Heimdall V2 包含一个用于研究和作品集展示的、可复现的、仅限本地主机的评估工作流。它旨在展示**安全优先的选择性验证**,而不是生产环境的漏洞扫描。 最终基准测试: - 总告警数:`480` - 合成 SAST 告警:`300` - 活跃的本地验证固件:`180` - 漏洞类别:`12` - 基准真阳性:`292` - 基准假阳性:`188` - 活跃验证目标:`http://127.0.0.1:5005` 主要的活跃本地结果: | 指标 | 数值 | |---|---:| | True Positives | 92 | | False Positives | 0 | | True Negatives | 44 | | False Negatives | 0 | | Needs Review | 344 | | 覆盖率 | 0.2833 | | 弃权率 | 0.7167 | | 选择性精确率 | 1.0000 | | 选择性召回率 | 0.3151 | | 效用分数 | 0.1042 | 模式对比: | 模式 | 精确率 | 召回率 | F1 | 覆盖率 | 人工审查 | |---|---:|---:|---:|---:|---:| | 仅 SAST | 0.6083 | 1.0000 | 0.7565 | 1.0000 | 0.0000 | | 基于规则的过滤 | 0.8431 | 1.0000 | 0.9149 | 0.2125 | 0.7875 | | 仅 LLM stub | 0.8517 | 1.0000 | 0.9199 | 0.4437 | 0.5563 | | Heimdall 完整流水线 stub | 0.0000 | 0.0000 | 0.0000 | 0.3333 | 0.6667 | | Heimdall 演练 mock | 0.0000 | 0.0000 | 0.0000 | 0.3333 | 0.6667 | | Heimdall 活跃本地验证 | 1.0000 | 1.0000 | 1.0000 | 0.2833 | 0.7167 | | GPT-4.1-mini 消融实验脚手架 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 1.0000 | 解释: - 活跃本地验证在其决定处理的案例上具有极高的精确度,但会有意对许多案例弃权。 - `Needs Review` 是一项安全功能,用于需要身份验证、角色状态、对象所有权、多步骤工作流、不受支持的 runtime 上下文或非本地验证的告警。 - GPT-4.1-mini 消融模式已搭建好脚手架,但默认会跳过,除非使用 API 环境变量显式启用。 - 这些结果仅受控于本地主机的证据。它们**不能**证明其具备生产就绪性或真实世界的漏洞覆盖能力。 运行最终的可复现工作流: ``` bash scripts/run_ieee_final_evaluation.sh ``` 最新的一次完整运行通过了 `53` 项测试。 ## 5 分钟快速入门 ``` git clone https://github.com/ZENLIK02/HeimDall-SecurityV2.git cd HeimDall-SecurityV2 pip install -r requirements.txt python -m heimdall.cli experiment --dataset data/sample_alerts.jsonl --mode all --output reports/ python -m heimdall.cli validate --semgrep test_data/semgrep-results-sample.json --config heimdall.yml --output reports/ ``` 如需进行完整的 IEEE 风格本地基准测试,请使用: ``` bash scripts/run_ieee_final_evaluation.sh ``` 预期生成的文件: - `reports/summary.md` - `reports/summary.json` - `reports/results.csv` - `reports/ci_summary.md` ## 解决的问题 SAST 工具非常有价值,因为它们可以跨代码库进行扩展,但它们产生的结果通常需要人工分类。Heimdall 添加了一个验证层,它可以: - 接收 Semgrep JSON, - 提取告警上下文, - 默认通过 mock provider 使用结构化的 LLM 风格推理, - 生成非破坏性的验证假设, - 执行演练或已加入白名单的 DAST 风格验证, - 解释最终决策, - 生成对 CI/CD 友好的报告。 ## 工作原理 ``` flowchart LR A[Semgrep SAST JSON] --> B[Context Extraction] B --> C[Prompt Guard] C --> D[LLM-Assisted Reasoning] D --> E[Safe Payload Generation] E --> F[Dry-Run / Allowlisted DAST] F --> G[Response Analyzer] G --> H[Decision Engine] H --> I[Markdown / JSON / CSV Reports] ``` ## 为什么可以安全地进行测试 - 默认启用演练验证。 - 默认启用 mock LLM 模式。 - 活跃的 DAST 仅限于已配置的 `allowed_targets`。 - 除非显式启用,否则会拦截类似生产环境的域名。 - 拒绝破坏性 payload 标记。 - 所有 DAST 尝试都会被记录。 - `Needs Review` 默认不会导致 CI 失败。 ## CLI 命令 检查配置安全性: ``` python -m heimdall.cli check-config --config heimdall.yml ``` 运行研究实验: ``` python -m heimdall.cli experiment --dataset data/sample_alerts.jsonl --mode all --output reports/ ``` 为 CI/CD 验证 Semgrep 输出: ``` python -m heimdall.cli validate --semgrep test_data/semgrep-results-sample.json --config heimdall.yml --output reports/ ``` ## GitHub Actions 工作流 `.github/workflows/heimdall-devsecops.yml` 会在 `push`、`pull_request` 和手动触发时运行。 它会: - 安装依赖项, - 安装 Semgrep, - 运行 Semgrep, - 保存 `semgrep-results.json`, - 运行 Heimdall 验证, - 将报告作为 artifact 上传, - 在 GitHub 上下文可用时选择性地发布 pull request 评论, - 仅根据 Heimdall 策略决定是否失败。 策略退出代码: - `0`:未发现确认的高/严重等级 True Positive。 - `0`:仅存在 False Positive 或 Needs Review 的结果。 - `1`:发现确认的高/严重等级 True Positive,且策略要求失败。 - `2`:配置无效或不安全。 - `3`:runtime 错误。 ## 报告 研究报告: - `reports/summary.md` - `reports/summary.json` - `reports/results.csv` - `reports/error_analysis.md` CI/CD 报告: - `reports/ci_summary.md` - `reports/ci_results.json` - `reports/ci_results.csv` 包含静态演示示例: - `reports/demo_summary.md` - `reports/demo_ci_summary.md` ## 示例输出 | 指标 | 数值 | |---|---:| | Semgrep 总发现数 | 4 | | 确认的 True Positives | 0 | | False Positives | 3 | | Needs Review | 1 | | 流水线状态 | PASSED | | 报告路径 | `reports/ci_summary.md` | 示例结果表格: | 规则 ID | 严重程度 | 文件 | 行号 | Heimdall 决策 | 证据 | 建议操作 | |---|---|---|---:|---|---|---| | python.flask.security.xss.reflected-xss | high | `test_apps/flask_vulnerable_app/app.py` | 18 | False Positive | 受控标记已被转义或无效。 | 记录防御性控制措施或调整 SAST 规则。 | | python.flask.security.idor | low | `test_apps/flask_vulnerable_app/app.py` | 47 | Needs Review | 需要身份验证上下文。 | 在进行活跃验证之前进行人工审查。 | ## 本地漏洞测试应用 本地演示应用是故意设计成包含漏洞的,并且仅使用虚拟数据: ``` cd test_apps/flask_vulnerable_app python -m pip install flask python app.py ``` 然后从仓库根目录运行 Heimdall: ``` python -m heimdall.cli validate --semgrep test_data/semgrep-results-sample.json --config heimdall.yml --output reports/ ``` ## Docker 演示 ``` docker build -t heimdall-security-v2 . docker run --rm -v "%cd%/reports:/app/reports" heimdall-security-v2 ``` 在 macOS/Linux 上: ``` docker run --rm -v "$PWD/reports:/app/reports" heimdall-security-v2 ``` Docker 会在演练模式下运行示例验证命令。 ## 当前限制 - 处于 alpha 阶段的研究后端。 - 默认的验证较为保守,且基于演练。 - 业务逻辑缺陷通常需要多步骤的授权上下文。 - 真正的 LLM provider 集成被有意置于 schema 验证之后。 - 包含的数据集较小且为合成数据。 - 外部目标验证需要仔细配置白名单。 ## 路线图 请查看 `docs/roadmap.md` 了解公开的路线图。 简短版本: - `v0.1.0-alpha`:Semgrep 接收、基线对比、演练验证、报告、GitHub Actions 演示。 - `v0.2.0`:PR 评论机器人、改进的 Semgrep 兼容性、更好的响应分析器、本地漏洞应用集成。 - `v0.3.0`:经过身份验证的测试支持、OpenAPI endpoint 映射、用于多文件上下文的 RAG。 - `v0.4.0`:GitLab CI 支持、Docker 镜像、PyPI 包。 ## 关键词 建议的 GitHub topics: `devsecops`, `sast`, `dast`, `semgrep`, `application-security`, `appsec`, `cybersecurity`, `llm-security`, `security-automation`, `ci-cd`, `github-actions`, `false-positive-reduction`, `vulnerability-validation` ## 贡献 欢迎提供外部测试反馈。从以下内容开始: - `CONTRIBUTING.md` - `SECURITY.md` - `docs/community_feedback.md` - `.github/ISSUE_TEMPLATE/devsecops_test_feedback.md` 请勿在公开的 issue 中分享真实的机密信息、生产环境目标详情或私有漏洞数据。
标签:C2, DevSecOps, DLL 劫持, Python, 上游代理, 动态应用安全测试, 大语言模型, 无后门, 网络攻击, 请求拦截, 逆向工具, 防御框架, 静态应用安全测试