← 返回全部文章

Rule2Probe:基于反例引导神经符号合成的可执行检测验证

摘要

一条检测规则能够通过语法检查,不代表它在生产环境中仍然能够产生告警。真实的检测链路横跨主机行为、Agent 采集、字段映射、流式处理、复杂事件关联和告警投递,其中任意一层发生变化,都可能让一条逻辑正确的规则静默失效。现有大模型安全研究较多关注从威胁报告或攻击描述生成 Sigma 规则,而本文研究其逆问题:给定一条已有 Sigma 或 Esper 规则,能否合成一个最小、可审计、可执行的拨测计划,并根据执行反馈自动修复?

本文提出 Rule2Probe。系统首先将检测逻辑编译为事件约束图,再通过遥测因果层区分动作可控、环境绑定、传感器派生和关联派生谓词。语言模型只能生成类型化拨测计划,独立 verifier 则将失败执行转换成未满足的残差谓词,形成 Counterexample-Guided Inductive Synthesis,简称 CEGIS,式的修复循环。模型的自信不构成证据,只有符号约束满足或真实目标 strong-hit 才能接受候选计划。

我们在 299 条私有生产规则上进行了冻结实验。编译器提取出 712 个谓词、175 个跨字段关系和 2,397 个排除块。进一步的因果审计表明,在 500 个可执行谓词中,只有 23.0% 可以由行为参数直接控制,43.6% 来自传感器派生,18.6% 来自关联引擎派生。这说明“规则到攻击命令”并不是普通文本翻译问题。

在按完整事件来源家族隔离的 48 条反例测试集上,Qwen3-4B 量化模型零样本修复率为 0%,QLoRA 适配后,无反馈修复率为 62.5%,自由文本反馈为 64.6%,结构化残差反馈达到 93.8%。结构化反馈相对无反馈净改善 15 条且没有回退,双侧精确 McNemar 检验 (p=6.10\times10^{-5})。但确定性残差求解器达到 100%,因此本文不主张让语言模型替代约束求解器,而是将模型价值限定在语义不完备的行为到遥测逆映射层。

本文同时审计了两组历史人工拨测脚本及其告警响应,二者均满足目标规则标记与多阶段标记出现在同一告警对象中的 strong-hit 条件。该结果证明 verifier 可以处理真实证据,但不被包装成模型在线合成结果。模型生成行为计划的前瞻 strong-hit 仍是下一阶段实验门槛。

关键词: 检测验证;Sigma;Esper;神经符号系统;反例引导合成;QLoRA;持续学习

这项工作的最初假设、从零模型训练过程和早期研究日志见 《从零开始训练一个会成长的安全模型》。本文只保留可以被实验、代码或外部证据支撑的结论。

1. 引言

安全团队通常拥有大量检测规则,却很少拥有同等规模的证据来证明这些规则仍然有效。

规则上线以后,主机 Agent 版本会改变,事件字段会改名,预处理逻辑会调整,白名单会扩大,CEP 窗口和关联主体也可能发生漂移。一条规则即使语法合法、离线样例可以命中,也可能在真实行为经过完整数据链路后无法产生告警。

合成一条事件 JSON 并直接送入规则引擎,只能验证检测逻辑本身。它会绕过最容易出问题的主机传感器、字段标准化和传输链路。人工紫队拨测可以覆盖完整链路,但每条规则都需要分析人员重新完成以下工作:

  1. 理解规则真正描述的行为;
  2. 确定哪些字段能够由动作控制;
  3. 处理主机、应用和关联主体等环境变量;
  4. 避开规则中的排除条件;
  5. 保持多阶段事件的顺序和时间窗口;
  6. 执行拨测并检查目标告警;
  7. 命中失败后逐层定位原因。

这项工作昂贵而且很难扩展。

语言模型看起来适合完成“规则到行为”的语义转换,但直接让模型生成脚本会产生三个根本问题。

第一,模型可能输出危险或环境无效的任意命令。第二,模型的自我反思不能证明遥测是否真的满足规则。第三,如果把模型自己的输出重新作为正确答案训练,错误会在自训练过程中持续放大。

Rule2Probe 的核心思想是:模型负责提出假设,独立系统负责判真。

Sigma / Esper Rule
        |
        v
Constraint Compiler
        |
        v
Event Constraint Graph
        |
        +----------> Deterministic Event Solver
        |
        v
Telemetry Causality Layer
        |
        v
Typed Behavior Planner
        |
        v
Authorized Execution Environment
        |
        v
Telemetry / Strong-hit Verifier
        |
        v
Residual Predicates -> Minimal Repair -> Next Attempt

本文的主要贡献如下:

  1. 实现一个面向 Sigma 与 Esper/CEP 的规则约束编译器,保留事件角色、跨字段关系和显式排除块;
  2. 提出遥测因果分类,阻止系统把传感器或关联引擎生成的字段错误地当成行为参数;
  3. 设计一个只包含审核原语的类型化拨测 DSL,禁止模型生成任意 Shell;
  4. 建立独立 verifier 和结构化残差反馈,实现反例驱动的最小修复;
  5. 构造按完整事件来源家族隔离的 ProbeGym 反例修复数据集;
  6. 完成本地 4B 量化模型的 QLoRA 训练、反馈消融、统计检验和失败归因;
  7. 将历史人工拨测与告警响应转换成可哈希、可重复审计的 strong-hit 证据。

2. 研究背景与相关工作

2.1 从威胁描述生成检测规则

大模型在检测工程中的常见应用是正向生成:输入威胁报告、攻击步骤或 ATT&CK 技术,输出 Sigma、YARA 或 SIEM 规则。

SIGMERGE 使用分层信息提取、检索和闭环验证,从网络威胁报告生成 Sigma 规则。From Attack Simulation to SIEM Rule 则强调从固定攻击探针到 SIEM 规则的确定性、可追踪合成。

Rule2Probe 研究的是相反方向:

已有检测规则 -> 行为假设 -> 真实遥测 -> 目标告警

规则描述的是行为被观测后的结果,却通常不会告诉我们怎样制造这些结果,因此逆向问题比结构化文本生成多出一个不完备的环境因果层。

2.2 检测规则执行验证

NIDSFuzz 通过面向规则的网络流量变异系统化验证 NIDS 规则执行。Rule2Probe 与它共享“规则需要被动态验证”的出发点,但研究对象进一步覆盖主机进程、文件、网络、Web、DNS、对象存储、RASP 和多事件 CEP 关联。

这些场景不能只靠修改报文完成验证。一个进程规则可能依赖父子进程关系,一个文件规则可能依赖 Agent 对写入类型的分类,一个关联规则还可能依赖同主机、同应用或同链路 PID 下的多个事件。

2.3 反例引导学习

传统 CEGIS 将候选程序交给验证器,验证器发现反例后再驱动下一轮合成。近期工作也开始研究如何把结构化反例用于大模型推理,例如 Counterexample Guided Learning in the Large

Rule2Probe 不采用“请反思为什么失败”这种宽泛提示,而是直接返回未满足谓词、期望值、观测值和所属事件角色。其目标不是让模型写出更流畅的解释,而是让每次失败都产生一个可执行的修复约束。

3. 问题定义

给定检测规则 (R),规则编译器生成约束集合 (C)。行为计划 (p_t) 在授权环境 (E) 中执行后,遥测系统产生观测集合:

[ O_t = \operatorname{Observed}(E, p_t). ]

verifier 返回尚未满足的残差:

[ \mathcal{R}_t = C \setminus O_t. ]

模型或规划器根据残差生成最小补丁 (\Delta_t):

[ p_{t+1} = p_t \oplus \Delta_t. ]

搜索在以下任一条件成立时停止:

  1. 所有事件约束得到符号满足;
  2. 行为执行后观察到目标 strong-hit;
  3. 候选计划违反安全策略;
  4. 达到固定执行预算。

本文严格区分两种验证等级。

3.1 事件级验证

事件级拨测直接构造结构化 telemetry fixture,再使用约束求解器检查它是否满足规则。

它适合验证:

  • 规则逻辑是否自洽;
  • 字段值是否满足谓词;
  • 跨字段关系是否正确;
  • 最小反例修复是否有效。

但它绕过了真实 Agent,因此不能证明传感器保真度。

3.2 行为级验证

行为级拨测需要在授权主机或靶场执行类型化计划,并要求真实遥测链路产生目标告警。

其判定条件不是模型认为“应该命中”,也不是生成脚本返回码为零,而是:

execution_success = true
strong_hit_configured = true
target_strong_hit = true

任何事件级结果都不能填入行为级 strong-hit 指标。

4. Rule2Probe 系统设计

4.1 规则约束编译器

编译器读取 Sigma YAML 与 Esper EPL,将终端检测 statement 转换为事件约束图。节点表示事件角色与字段谓词,边表示跨字段相等、关联主体绑定、先后顺序和时间约束。

当前支持的主要谓词包括:

  • eqin
  • not_null
  • contains_any
  • regexplike
  • 数值比较;
  • 跨事件字段相等。

否定表达式不会被粗暴转换成正向字面量,而是保存在独立的 exclusion block 中。对于嵌套析取、复杂时间运算和自定义字符串函数,编译器选择标记为 unsupported,而不是静默赋予错误语义。

4.2 遥测因果层

检测规则中的字段并不具有相同的可控性。本文将其分成五类:

因果角色 含义 例子
Action-controlled 可由行为参数直接选择 目标地址、端口、路径、命令参数
Environment-bound 运行时环境决定 hostname、appkey、容器身份
Sensor-derived Agent 或内核推导 process name、PID、行为类型
Correlation-derived 流处理或 CEP 生成 grouping key、rule name、阶段标签
Unresolved 组织特有且尚未建模 私有基线或内部语义字段

规划器只能给第一类字段赋值。环境绑定字段由运行时 binder 注入,传感器派生字段只能执行后观测,关联字段则由 verifier 在窗口中确认。

这是系统与普通“规则转命令”模型最关键的差异。

4.3 类型化行为 DSL

行为层不允许模型输出任意 Shell,而是只能选择审核过的抽象原语:

process.spawn
file.operate
network.connect
web.request
dns.query
object.upload
application.invoke

每个原语声明:

  • 允许使用的场景;
  • 参数 schema;
  • 预期遥测契约;
  • 风险等级;
  • 是否需要人工审核;
  • 清理策略。

例如,网络连接原语只能连接授权接收端,文件原语只能在分配的测试目录中操作并负责清理,对象上传原语只能使用隔离测试桶。模型生成的是计划,不是突破边界的自由代码。

4.4 独立 verifier

事件 verifier 对 fixture 执行确定性谓词求值,并返回:

{
  "matched": false,
  "unsatisfied": [
    {
      "predicate_id": "p003",
      "field": "event_b.hostname",
      "operator": "field_=",
      "expected": ["event_a.hostname"],
      "observed": {
        "event_a.hostname": "host-a",
        "event_b.hostname": "host-b"
      }
    }
  ]
}

行为 verifier 还需要检查:

  • DSL 是否通过静态安全检查;
  • 行为执行是否成功;
  • 预期遥测是否出现;
  • 目标规则是否 strong-hit;
  • 是否产生非目标旁路告警;
  • 是否完成清理。

候选模型无权修改 verifier,也不能把自己的自然语言结论写入命中字段。

4.5 可验证经验与自学习

真正的自学习不是把模型输出重新喂给自己。

Rule2Probe 将一次轨迹拆成任务、候选计划、执行结果、遥测、残差、修复和最终结论。只有 verifier 接受的轨迹才能进入正样本池:

Rule
  -> Candidate Plan
  -> Human/Policy Approval
  -> Execution
  -> Telemetry Verification
  -> Strong-hit
  -> Verified Experience

失败轨迹保留为反例或偏好负样本,但不能伪装成成功标签。新经验首先进入可检索记忆;当同类经验数量足够、收益稳定并通过脱敏后,才离线训练独立 LoRA。新适配器必须通过冻结回归集才能晋级,并且可以随时回滚。

5. 从零小模型到神经符号系统

这项研究最初确实从“训练一个会成长的小模型”开始,但实验结果逐步改变了技术路线。

5.1 0.527M 参数冒烟模型

第一轮使用随机初始化的 0.527M 参数 Transformer 训练 200 步,验证 loss 降至 0.6983,perplexity 为 2.01。模型学会了固定输出格式和重复告警规则,却不能解决未见数字的加法与排序。

这次实验只证明了 Tokenizer、数据管线、Metal 训练、检查点保存和重新加载是可用的。它同时给出第一个负结果:

语言模型 loss 下降,并不等于智能形成。

5.2 10.238M 本地规则模型

第二轮模型包含 10,238,208 个参数,使用本地规则预训练 2,000 步,再进行 500 步监督微调。在 31 条未见测试规则派生的 62 个任务上:

指标 结果
JSON 合法率 100%
完整答案匹配 41/62(66.1%)
字段级准确率 140/186(75.3%)
规则分类完整匹配 17/31(54.8%)
拨测策略完整匹配 24/31(77.4%)

这个模型能够学习规则解析器生成的标签,但监督答案本身来自确定性规划器,并不是服务器执行结果;测试也只按规则 ID 隔离,没有隔离共享的事件来源模板。

它证明了小模型可以学习本地协议,却没有证明模型会进行真实拨测。

5.3 重新划分模型边界

前两轮实验促使我们放弃“所有问题都交给一个从零模型”的路线:

  • 精确规则语义由编译器处理;
  • 精确事件字段修复由求解器处理;
  • 开放世界行为语义由预训练小模型处理;
  • 真实环境是否命中由外部 verifier 处理;
  • 自学习只使用经过验证的工作轨迹。

最终模型改为 Qwen3-4B-Instruct 4bit 基座,通过小型 LoRA 学习本地修复协议。这里使用预训练基座不是退步,而是承认语言和安全语义需要足够先验;真正需要本地学习的是工具协议、遥测因果和经过验证的工作经验。

6. 数据集与实验设置

6.1 私有规则语料

本地语料共包含 299 条规则:

类型 数量
Esper 297
Sigma 2
Esper 叶子规则 151
Esper 关联规则 100
Esper 基础设施规则 15
Esper 测试规则 31

原始规则包含内部标识,因此本文只报告聚合统计,不公开字面量、环境地址和内部规则名称。

6.2 编译器输出

编译指标 结果
已解析谓词 712
跨字段关系 175
显式排除块 2,397
不支持表达式 325
至少包含一个可执行谓词的规则 173
可做事件级验证的 Esper 叶子规则 112/151
七类行为契约完整覆盖 107/173(61.8%)
平均行为契约覆盖率 77.3%

6.3 ProbeGym 反例数据

对每条可生成正向 witness 的叶子规则,系统构造两类单反例:

  1. wrong_value:把一个满足值替换为错误值;
  2. missing_field:删除一个必要字段。

只有恰好产生一个残差谓词的样本才进入数据集。这样可以明确判断模型是否修复了指定反例,而不是碰巧改动其他字段。

数据按完整事件来源家族切分,而不是随机按规则 ID 切分:

Split 规则 分配的来源家族 原始记录
train 73 25 192
valid 20 4 125
test 19 9 48

训练前使用真实 Chat Template 计算序列长度,删除 4 条超过 1,024 Token 的训练样本。最终训练集为 188 条,验证集和测试集保持不变。测试记录实际覆盖 8 个能够生成反例的未见来源家族。

6.4 模型与训练

配置 数值
基座 Qwen3-4B-Instruct-2507-4bit
训练方式 QLoRA
适配层 最后 8 层
可训练参数 3.670M / 4.022B(0.091%)
LoRA rank / scale 8 / 20
Batch size 1
梯度累积 4
学习率 (1\times10^{-5})
最大长度 1,024
训练步数 300
Seed 20260805
Assistant-only loss
峰值统一内存 3.742GB
最终适配器 约 14MB

训练使用 Apple Silicon 和 MLX-LM。模型只对 assistant 答案区计算 loss,避免长规则输入淹没短修复答案。

6.5 基线与消融

本文比较以下方法:

  1. 不修复;
  2. 随机训练集 patch;
  3. 按场景、字段和操作符检索最近邻 patch;
  4. Qwen3-4B 零样本;
  5. QLoRA 无反馈;
  6. QLoRA 仅二值 matched=false 反馈;
  7. QLoRA 自由文本反馈;
  8. QLoRA 结构化残差反馈;
  9. 确定性残差求解器。

主要指标包括 JSON 合法率、严格 patch 匹配、verifier 修复成功率、最小 patch 率和来源家族宏平均。

7. 实验结果

7.1 遥测因果审计

173 条可执行规则中共保留 500 个行为规划谓词:

因果角色 谓词数 比例
动作直接可控 115 23.0%
传感器派生 218 43.6%
关联引擎派生 93 18.6%
环境绑定 63 12.6%
暂未解析 11 2.2%

按规则计算,平均直接可控率只有 17.3%,已知因果覆盖率为 97.8%。132 条规则需要传感器 oracle,64 条需要关联验证,53 条需要运行时环境绑定,7 条仍包含私有未解析字段。

这个结果意味着:即使模型完全理解规则文本,它也无法在执行前决定大部分目标字段。PID、行为类型、证据类型、关联键和规则阶段都不是一句命令能够直接赋值的。

7.2 训练过程

Iteration Validation loss
1 7.919
50 1.531
100 0.817
150 0.718
200 0.401
250 0.271
300 0.201

验证 loss 在 300 步内持续下降,没有出现选择更早 checkpoint 的依据,因此采用第 300 步适配器。

7.3 反例修复

方法 JSON 合法 严格 patch Verifier 修复 家族宏平均
不修复 N/A N/A 0/48(0%) 0%
随机训练 patch N/A N/A 0/48(0%) 0%
最近邻谓词签名 N/A N/A 6/48(12.5%) N/A
Qwen3-4B 零样本 + 残差 100% 0% 0/48(0%) 0%
QLoRA,无反馈 100% 47.9% 30/48(62.5%) 72.7%
QLoRA,二值反馈 100% 47.9% 30/48(62.5%) 74.1%
QLoRA,自由文本反馈 100% 47.9% 31/48(64.6%) 70.8%
QLoRA,结构化残差 100% 85.4% 45/48(93.8%) 96.3%
确定性残差求解器 100% 100% 48/48(100%) 100%

零样本模型经常找对字段和值,却自作主张输出 RFC 6902 JSON Patch,而系统要求 {"set_fields": ...}。这说明它具备一定语义能力,但没有学会本地接口契约。

QLoRA 后,所有输出都成为合法 JSON 和单字段最小 patch。结构化残差比无反馈与二值反馈分别净改善 15 条,没有产生回退;双侧精确 McNemar 检验:

[ p=6.10\times10^{-5}. ]

相对自由文本反馈,结构化残差净改善 14 条,同样没有回退:

[ p=1.22\times10^{-4}. ]

使用 10,000 次记录级 Bootstrap,结构化反馈修复率的 95% 区间为 ([85.4\%, 100\%]),无反馈为 ([47.9\%, 75.0\%]),自由文本反馈为 ([50.0\%, 77.1\%])。

结果支持以下判断:

“执行失败,请反思”并不是高质量学习信号。指出具体未满足谓词的结构化反例,才真正改变模型行为。

7.4 失败分析

结构化反馈仍失败 3 条,全部来自同一个未见 Kerberos 事件家族,且全部属于跨事件字段相等:

  • 两次把赋值方向反转;
  • 一次把缺失关系字段错误修复为 null

因此剩余问题不是泛化 JSON 格式,也不是常量值选择,而是有向字段关系的语义。这些失败会进入单独的 relation-direction hard set,但不会修改当前冻结测试集。

7.5 最重要的负结果

确定性残差求解器达到 48/48,优于训练模型的 45/48。

如果只希望让面试或论文数字好看,很容易忽略这个结果,继续宣称“模型学会了自动修复”。但这项实验真正改变了系统架构:

闭世界、可精确求解的事件字段 -> 使用符号求解器
开放世界、语义不完备的行为规划 -> 使用语言模型
候选是否正确 -> 使用独立 verifier

语言模型不应该替代已经达到 100% 的算法。它应该被放在规则没有给出完整答案、环境经验具有价值的地方。

7.6 历史 strong-hit 审计

本地还存在两组人工编写的多阶段拨测脚本及其告警平台响应。审计器对脚本和响应分别计算 SHA-256,并要求以下标记同时出现在同一个告警对象:

  1. 目标规则标记;
  2. 第一攻击阶段标记;
  3. 第二攻击阶段标记。

两组历史案例均通过审计:

历史案例 响应告警数 同告警满足全部标记
多阶段案例 A 1 1
多阶段案例 B 26 26

这些结果说明真实行为、遥测、关联和告警链路曾经成功闭环,也证明 verifier 能够读取真实证据。

但必须明确:

这两组脚本由人工编写,不是 Rule2Probe 模型生成,因此只能作为 verified experience seed,不能报告为模型行为级成功率。

8. 攻防工作中的实际价值

8.1 持续检测回归

Rule2Probe 可以把生产规则变成持续运行的回归测试。规则或 Agent 更新以后,不再只检查 YAML 和 EPL 是否能解析,而是重新执行被审核的最小行为计划,确认目标告警仍能到达。

它可以发现:

  • Agent 不再采集某类事件;
  • 字段 schema 发生漂移;
  • 预处理丢失了必要字段;
  • 排除条件被意外扩大;
  • CEP 窗口没有收到前置事件;
  • 关联主体或时间顺序发生变化;
  • 告警投递链路中断。

8.2 授权紫队验证

对多阶段关联规则,系统可以复用已验证的叶子拨测,将多个低风险原语组合成同主体、正确顺序和正确时间窗口的攻击链。

分析人员审核的是一个短小、类型化的计划,而不是模型生成的任意脚本。计划执行以后,系统不仅报告“命中或未命中”,还会给出缺失的事件角色与谓词。

8.3 检测盲区定位

当真实事件没有命中规则时,可以把事件遥测与规则约束图做差,将原因分成四类:

  1. 传感器没有产生必要遥测;
  2. 字段映射或事件 schema 不一致;
  3. 排除条件过宽;
  4. 规则本身没有覆盖该行为。

这比让分析人员从告警平台、Agent 日志、规则代码和 CEP 窗口之间手工跳转更容易形成可复核结论。

8.4 最小反事实与规则脆弱性

在防守授权范围内,系统可以从正向 witness 生成只改变一个条件的 near-miss:

positive witness: 所有条件满足
minimal near-miss: 仅一个条件不满足

通过比较两者,可以识别规则是否过度依赖某个容易漂移的字段、工具名称或路径模式。这有助于加固规则,但同样可能暴露环境相关绕过面,因此具体反事实不进入公开数据集。

8.5 伴随工作的轻量自训练

本次适配器只有约 14MB,训练峰值统一内存 3.742GB。对窄场景来说,团队不需要不断训练一个巨大通用模型,而可以保持基座稳定,把本地验证经验固化进可插拔适配器。

这种模式的关键优势不是参数越少越好,而是:

  • 训练成本足够低,可以重复实验;
  • 每次能力变化可定位;
  • 不同环境可以使用不同 Adapter;
  • 更新失败时可以快速回滚;
  • 内部知识不必全部写入基础模型参数。

9. 讨论

9.1 为什么不继续从随机参数训练

完全从零训练在研究上很有吸引力,但语言理解、规则语义和工具规划本身需要大量先验数据。10M 模型能够记住本地结构,却很难在几百条规则上形成可靠的开放世界行为知识。

因此更合理的分工是:

  • 通用语言和基础推理由预训练基座提供;
  • 本地协议与工作经验由轻量 Adapter 学习;
  • 精确逻辑由编译器和求解器处理;
  • 实时事实放在外部状态与检索系统;
  • 成败由环境 verifier 判定。

9.2 为什么自由文本反思效果有限

自由文本反馈只告诉模型“失败了”,却没有确定错误位于哪个事件、哪个字段和哪个关系。模型需要同时猜测故障原因与修复动作。

结构化残差把搜索空间缩小到具体谓词,因此模型只需完成局部语义修复。这种反馈不仅训练效果更好,也更方便审计和统计。

9.3 为什么仍然需要模型

既然事件求解器达到 100%,为什么还要模型?

因为事件字段修复属于闭世界问题,而行为到遥测属于开放世界逆问题。规则会要求 processname=bash,却不会告诉系统在某个容器、某个父进程和某个 Agent 版本下,哪种审核动作才能稳定产生对应遥测。模型可以利用历史经验提出语义候选,verifier 则负责在当前环境中判断候选是否成立。

10. 有效性威胁与伦理边界

本文存在以下限制:

  1. 私有规则语料来自单一组织,不能证明跨企业泛化;
  2. 测试集只有 48 条反例,Bootstrap 区间仍然较宽;
  3. 当前只完成一个训练 seed,不能声称优化器种子鲁棒性;
  4. 编译器尚未完整支持嵌套 OR、复杂时间运算和私有函数;
  5. 事件 fixture 成功不能证明主机传感器保真;
  6. 两组 historical strong-hit 由人工脚本产生;
  7. 模型生成计划的前瞻在线 strong-hit 尚未完成。

Rule2Probe 的 near-miss 分析具有双重用途。系统因此采取以下限制:

  • 只允许在授权环境执行;
  • 模型只能使用审核原语;
  • 所有执行记录留痕;
  • 环境相关绕过细节不公开;
  • strong-hit 与普通逻辑满足分开报告;
  • 模型不能修改验证器或执行策略。

11. 下一阶段

下一轮实验将选择 30 条授权规则,在相同三次执行预算下比较:

  1. 人工拨测计划;
  2. 最近邻检索计划;
  3. 模型 one-shot;
  4. 模型 best-of-k;
  5. 结构化残差驱动的 CEGIS 修复。

行为级指标包括:

  • DSL 编译率;
  • 静态安全检查通过率;
  • 执行成功率;
  • 目标 strong-hit;
  • 非目标旁路告警数;
  • 中位人工修改次数;
  • 每条成功规则的执行次数与总耗时。

离线训练将使用三个不同种子重复,并将行为轨迹按主机和规则家族隔离。当前三条跨字段关系失败会进入新增 hard set,但冻结测试集保持不变。

12. 结论

Rule2Probe 最初来自一个朴素问题:能不能训练一个足够小、能够伴随安全工作不断成长的模型?

真正做完实验以后,答案不再是“让模型自己不断训练自己”,而是建立一套严格的学习边界:

  • 规则首先被编译,而不是只作为提示词;
  • 行为计划受到类型系统和安全策略约束;
  • 环境反馈被转换成结构化反例;
  • 正确性由独立 verifier 判断;
  • 只有可验证经验才能进入训练;
  • 确定性算法优于模型时,直接使用确定性算法。

本次实验已经证明,结构化反例可以让一个本地 4B 量化模型在未见来源家族上显著改善修复协议;也证明大多数检测谓词并不是动作直接可控字段。后一个发现比单纯提升模型分数更重要,因为它明确了神经系统、符号系统和真实环境之间应该如何分工。

Rule2Probe 当前还不是一个已经完成全自动在线拨测的产品。它是一套具备真实数据、真实训练、冻结评测、负结果、统计检验和明确晋级门槛的研究原型。

这比再做一个会写脚本、会自我反思、却无法证明自己真的命中过规则的安全 Agent 更有价值。

参考文献

  1. Cai et al. From Texts to Rules: Generating Sigma Rules with Large Language Models from Cyber Threat Reports. USENIX Security 2026.
  2. Maiorano. From Attack Simulation to SIEM Rule: Deterministic Detection-as-Code Synthesis with Probe-Level Traceability. arXiv:2606.05252, 2026.
  3. Liu et al. Counterexample Guided Learning in the Large using Reasoning Agents. arXiv:2606.11521, 2026.
  4. Liu et al. From Intention to Practice: Towards Systematic Validation of NIDS Rule Enforcement. NSDI 2026.
  5. Qwen Team. Qwen3-4B-Instruct-2507 Model Card.
  6. Apple ML Research. MLX-LM.