santhreal/rulec
GitHub: santhreal/rulec
rulec 是一个单向编译器,将 YARA 检测规则降级到 vyre GPU 规则引擎底层结构以实现高吞吐量模式匹配。
Stars: 0 | Forks: 0
# rulec

一个单向编译器,用于将检测规则方言(目前是 YARA,下一步是 Sigma)降级到 vyre GPU 规则引擎底层结构上。
## 它的功能
`rulec` 将检测规则降级为 byte-NFA 模式和布尔条件公式,以便在 `vyre` 底层结构(包括 CPU 一致性遍历和 GPU megakernel)上执行。
- 使用 `yara-x-parser` AST 解析 YARA。
- 降级文本、十六进制、通配符、跳转、交替、`nocase`、`ascii`、`wide`、`xor` 和 `base64` 修饰符。
- 通过 `vyre_libs::rule::RuleFormula` 评估条件(`and`、`or`、`not`、计数、`filesize`、集合量词)。
- 提供可选的导出为 `.srg` 文本格式功能。
- 包含一个差分测试预言机,用于针对 `yara-x` 验证降级的正确性。
## 快速开始
将 `rulec` 添加到您的 `Cargo.toml`:
```
[dependencies]
rulec = "0.1.0"
```
将 YARA 规则编译为降级 IR:
```
use rulec::compile;
let yara_src = r#"
rule example {
strings:
$a = "cmd.exe" nocase
condition:
$a
}
"#;
let compiled = compile(yara_src.as_bytes()).expect("failed to compile rule");
println!("Lowered {} rules", compiled.rules.len());
```
运行测试:
```
cargo test
```
## 适用场景 / 不适用场景
**适用场景:**
- 为 `vyre` GPU/CPU 匹配引擎进行高吞吐量的规则编译。
- 前向集成 YARA 检测签名,无需重新实现规则引擎执行过程。
- 针对参考 YARA 语义,对规则降级进行差分验证。
**不适用场景:**
- 依赖于复杂 YARA 模块(`pe.*`、`elf.*`、`math.*`)且尚未降级到 `vyre` 的特性。
- 需要不受限制的进程内存或非字节匹配查找的完整 YARA 评估。
## 与替代方案的比较
- **`yara-x`**:`yara-x` 是 Rust 中完整的 CPU 参考 YARA 实现。`rulec` 使用 `yara-x-parser` 进行 AST 解析,并使用 `yara-x` 进行差分测试,但其目标是通过 `vyre` 实现高吞吐量的 GPU/CPU 执行。
- **旧版编译器(`yaragpu`、`rulefire`)**:旧版编译器依赖于隐式特性截断。`rulec` 严格强制执行显式拒绝,并在规则结构不受支持时提供可操作的诊断信息。
## 它如何融入 Santh
`rulec` 位于 `libs/scanner/rulec/`,是 Santh 检测基础设施中的规则编译器前端。它将规则降级到 `libs/performance/matching/vyre`(即 vyre 底层结构),以实现高性能扫描。
```
YARA source -> (rulec) -> vyre rule IR -> vyre GPU engine
-> .srg text (optional export)
```
## 许可证
采用以下任一许可证进行双重许可:
- Apache License, Version 2.0 (`LICENSE-APACHE`)
- MIT License (`LICENSE-MIT`)
标签:DNS 反向解析, IP 地址批量处理, Rust, YARA, 云计算, 云资产可视化, 可视化界面, 编译器, 网络流量审计, 规则引擎, 通知系统