guatxlabs/core

GitHub: guatxlabs/core

GuatX 共享 Rust 核心库,提供 SoQL 到只读 SQL 的安全编译器及通用安全原语,服务于 SOC/SIEM 平台和红队控制台之间的公共基础设施。

Stars: 0 | Forks: 0

# guatx-core **GuatX 共享核心 —— 中立、公开。** 提取了 [Plume](https://github.com/guatxlabs/plume)(蓝色 SOC)和 Forge (红色)控制台之间约 70% 的公共部分,旨在为关键原语提供**唯一的实现**。 *Rust · lib · 最小依赖:`regex`、`serde_json`、`secrecy`、`zeroize`(4 个 crate,均已 存在于调用方的依赖树中 —— 没有新增任何原生/编译型 crate)。* 采用 LGPL-3.0-or-later 许可证,详见 [COPYING.LESSER](COPYING.LESSER)。 ## 为什么 - **唯一的真相来源**:修复的 bug 或新增的 feature 只需操作一次,即可同时惠及两款产品。 - **安全一致性**:安全防护机制(只读编译、防注入 allowlist、auth)是 **极其关键**的 → 经过审计的单一实现远胜于两套各自演进的实现。 ## 内容 - `soql` —— Plume 的**完整 type-SPL 编译器**,在此处进行了提升并使其**基于 schéma 实现泛型** (Plume 使用 `Schema::events()` · Forge 使用 `Schema::forge()`)。包含 16 个步骤:search/metric/`` (基础) · stats · timechart · where · sort · head · rex · fields · table · dedup · top/rare · eventstats · rate · eval · append[..] · join f[..]。SQL 为**只读**模式,数值均已**转义并内联** (`soql_esc`,引号已加倍),idents 已通过校验,`eval` 中禁止使用 SQL 关键字,递归深度 ≤3。 UDF `regexp`/`re_cap`(用于 `=~`/`rex`)由调用方在其自身的连接上进行注册。 即将推出:auth(argon2 + 防 rebinding 的 host-guard)、只读执行、packaging 辅助工具。 ## 黄金法则 **此处不包含任何攻击性内容。** 攻击模块、WAF/CF 绕过、ROE 逻辑 → 将保留在 **Forge** 中,这是一个 单独的代码仓库,且依赖于该核心。`guatx-core` 仅包含通用基础设施(查询、auth、存储)。 ## 用法 ``` let c = guatx_core::soql::compile("search severity=HIGH | stats count by mitre | sort -count")?; // c.sql (SQL read-only), c.params (valeurs liées), c.columns ``` ``` cargo test # 106 tests (100 unitaires + 5 parité différentielle + 1 doctest) cargo test --features forge # 125 tests (schéma + tests Forge activés) ``` ## 状态 - ✅ Plume 的编译器已在此处**提升并泛型化**(16 个步骤,基于 schéma 泛型)。完整测试套件:106 个测试(使用 `--features forge` 时为 125 个)。 - ✅ 已被 Forge 控制台调用(使用 `path` 依赖,实时冒烟测试 OK)= 首个一致性验证。 - ⏳ 被 Plume(`plume/daemon`)采用:(1) 基于测试语料库进行旧实现与 `guatx_core` 的**一致性测试框架**对比,(2) 在回退 flag 后方切换 daemon,(3) 移除内部的 soql。不会丢失任何 feature。
标签:Rust, SOC/SIEM, SQL, 可视化界面, 查询语言, 瑞士军刀, 系统审计, 编译器, 网络流量审计, 通知系统