santhreal/rulec

GitHub: santhreal/rulec

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

Stars: 0 | Forks: 0

# rulec ![Status: alpha](https://img.shields.io/badge/status-alpha-blue.svg) 一个单向编译器,用于将检测规则方言(目前是 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, 云计算, 云资产可视化, 可视化界面, 编译器, 网络流量审计, 规则引擎, 通知系统