clavenar/clavenar-chaos-catalog
GitHub: clavenar/clavenar-chaos-catalog
面向红蓝对抗演练的纯数据攻击场景库,为多个执行器和演示工具提供共享的规范化攻击目录。
Stars: 0 | Forks: 0
# clavenar-chaos-catalog 目录
用于 Clavenar 红蓝对抗和演示流程的纯数据攻击目录。
从 `clavenar-chaos-monkey` 中剥离出来,以便多个调用方可以共享
一个内置场景的规范化单一事实来源:
- **`clavenar-chaos-monkey`** —— CLI 红队执行器。遍历
`catalog()`,将每次攻击 POST 到代理,并根据每个 `Attack` 的
`Expected` 字段对判定结果进行分类。
- **`clavenar-console`** —— `/demo/fire` 页面(位于
`vanteguardlabs` 演示体验中)。目前拥有其自己的
HIL-pending 形态的场景;通过该目录进行路由属于
未来的重构。
## 这里面有什么
```
use clavenar_chaos_catalog::{
Attack, // pure data; Clone+Debug. payload_builder and
// headers_builder are private — go through
// build_payload(request_id) and build_headers()
Category, // 11 variants: Denylist, Injection, Velocity,
// BusinessHours, Control, Hil, Attestation, Identity,
// SupplyChain, AgentCert, MultiTurn
Expected, // Allow | Deny { reason_keywords } | BusinessHoursConditional
Mode, // Single | Burst { count } | SingleWithHil(HilSideAction)
// | MultiTurn { primers }
HilSideAction, // Deny | DoNothing
catalog, // -> Vec (84 today)
};
```
每个 payload 和 header 构建器都是普通的 `fn` 指针(无捕获
状态)。时间相关的值(attestation `expires_at`、JWT `exp`)
在触发时由 `build_headers()` 访问器打标,
而不是在目录构建时,因此长时间的目录运行不会发送
过期的声明。
## 这里面没有什么
- 执行器 —— HTTP 客户端、异步调度、判定分类。
位于 `clavenar-chaos-monkey/src/runner.rs` 并保留在那里。
- 身份场景目录 —— 这些场景引用了
携带 HTTP 客户端的 `IdentityRunner`;将它们提取到
纯数据 crate 中会强制引入我们目前还不需要的 runner trait。
仍然保留在 `clavenar-chaos-monkey/src/identity_attack.rs`。
- CLI / 报告格式化器 —— 属于二进制程序的事务,保留在
`clavenar-chaos-monkey` 中。
## 版本控制 + 破坏性更新
此 crate 是 clavenar 目录树的工作区内部数据依赖。
添加新场景是非破坏性的;重命名 `Category` /
`Expected` / `Mode` 的变体属于破坏性更新,并会触发
对每个消费者进行协调一致的版本升级(目前:仅为
`clavenar-chaos-monkey`;未来可能包括
`clavenar-console`)。
## 运行
```
cargo build
cargo test
cargo clippy --all-targets -- -D warnings
```
没有二进制文件 —— 这是一个库 crate。
## License
Apache-2.0.
标签:CISA项目, Rust, 可视化界面, 安全测试, 攻击性安全, 攻击模拟, 数据模块, 混沌工程, 网络流量审计, 通知系统, 驱动签名利用