mostafa/rsigma-action-demo

GitHub: mostafa/rsigma-action-demo

该仓库演示了如何将 Sigma 检测规则的 lint、验证、回测和 ATT&CK 覆盖率检查作为 CI 门禁运行,以捕获语法正确但语义失效的规则回归问题。

Stars: 0 | Forks: 0

# rsigma-action-demo 一个最小化的 Sigma 检测即代码仓库,它将 [`timescale/rsigma-action`](https://github.com/timescale/rsigma-action) 作为 pull-request 门禁运行。它是该 action 的端到端演示消费者:每次推送和 pull request 都会对 `rules/` 中的规则进行 lint、验证、回测和 ATT&CK 映射。 ## 门禁的作用 在每个 pull request 中,[`.github/workflows/detection-as-code.yml`](.github/workflows/detection-as-code.yml) 会运行该 action,它会安装一个经过验证的 rsigma release,然后: - 对规则进行 lint,并在 diff 上标注发现的问题, - 验证每个规则是否都能解析和编译, - 将规则字段集与 merge-base 进行 diff 对比, - 针对 `tests/corpus/` 事件对规则进行回测,并检查 `tests/expectations.yml`, - 将规则映射到 ATT&CK 并报告针对 `tests/targets.txt` 的覆盖率, - 并保持一条置顶的总结评论保持最新。 ## 这本可以捕获的回归问题 此演示以 [SigmaHQ PR #5964](https://github.com/SigmaHQ/sigma/pull/5964) 为锚点:一个 Okta 规则的字段名称被悄悄地小写了,导致它永远无法匹配真实的 Okta 事件,并且多年来毫无察觉。Lint 和验证无法捕获它,因为该规则仍然是格式良好的并且仍然可以编译。 回测可以做到。`rules/okta_admin_role_assigned.yml` 匹配 `eventType` 和 `displayMessage`,这是 Okta 实际发出的驼峰式字段名称(参见 `tests/corpus/okta.ndjson`),并且 `tests/expectations.yml` 断言它至少触发一次。 要查看门禁的工作原理,请编辑 `rules/okta_admin_role_assigned.yml` 并将字段名称小写(`eventType` 改为 `eventtype`),然后打开一个 pull request。Lint 和验证仍然通过,但回测失败了:该规则不再匹配驼峰式事件,其触发计数降至零,并且违反了 `at_least: 1` 的期望。这正是 #5964 曾经属于的那一类 bug,也是 #5964 所缺失的门禁。 ## 布局 ``` rules/ Sigma detection rules tests/corpus/ NDJSON events the rules are backtested against tests/expectations.yml Per-rule fire-count assertions tests/targets.txt ATT&CK techniques the ruleset should cover .github/workflows/ The detection-as-code gate ``` ## 本地检查 安装了 [rsigma](https://github.com/timescale/rsigma) 后,您可以在本地运行相同的检查: ``` rsigma rule lint rules/ --fail-level warning rsigma rule validate rules/ --resolve-sources rsigma rule backtest --rules rules/ --corpus tests/corpus --expectations tests/expectations.yml rsigma rule coverage --rules rules/ --targets tests/targets.txt --navigator coverage.json ``` ## 许可证 MIT。参见 [LICENSE](LICENSE)。
标签:DevSecOps, GitHub Actions, Sigma规则, 上游代理, 安全运营, 扫描框架, 检测即代码, 目标导入, 自动笔记