Black Hat USA 2026:GAVEL激活层防御
原创
Max Luo
Max Luo
白帽子罗棋琛
2026年10月15日 08:18
中国香港
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
给大模型装上“神经流量规则”:GAVEL 的激活层防御
Black Hat USA 2026 议题笔记:Rules for Neural Traffic: A New Defensive Layer for LLMs
大模型安全控制大多盯着两端:输入侧检查 Prompt,输出侧审核文本和工具调用。问题是,真正危险的意图未必以稳定词面出现。诈骗可以写成角色扮演,数据外泄可以被包装成合法邮件动作,提示注入还会要求 Agent 完成隐藏目标后对用户保持沉默。
Gilad Gressel、Shir Rozenfeld 等人的公开课件介绍了 GAVEL。它不把模型当成只进出文本的黑盒,而是读取推理过程中间层激活,把“冒充真人”“威胁”“税务”“要求转账”等细粒度概念表示为 Cognitive Elements(CE,认知元素),再用类似 Snort/YARA 的逻辑规则组合这些元素。
图 1:GAVEL 试图在提示词过滤和输出审核之外增加一层可编程、可审计的激活监测
它不是通用的“读心术”,也不是可以替代权限控制的万能护栏。GAVEL 需要访问模型内部激活,当前更适合自托管或能暴露推理 Hook 的模型;检测效果依赖 CE 数据、模型版本、层选择、窗口和阈值。本文会同时说明它能解决什么、如何工程化,以及不能承诺什么。
1、Agent 外壳再复杂,决策核心仍是 LLM
今天的 Agent 系统可以订机票、写代码、管理基础设施和发送邮件。拆掉工具、记忆、路由器和编排包装后,决定下一步动作的仍是 LLM。传统控制通常只观察用户输入、最终输出和结构化 ToolCall,却看不到模型在生成动作之前激活了哪些内部表示。
图 2:工具决定动作边界,LLM 决定如何选择和组合动作;两层都需要独立控制
这会产生三个检测盲区:
- 词面规避:同一意图可以换语言、隐喻、拼写或编码,关键词规则迅速失效;
- 合法动作承载恶意目标:
send_email、grant_access本身并不恶意,危险取决于内容、对象和上下文; - 外部行为与用户可见文本分离:Agent 先调用工具泄露数据,最后只回复一个表情或正常说明,输出审核看不到前一阶段影响。
激活监测的价值,是在文本和动作之外增加一组观测信号。它不是授权来源:即使监测器判断“安全”,工具网关仍必须做身份、参数、资源和审批校验。
text
用户 / 网页 / 工具结果 | v LLM 推理 -------> 中间层激活 -----> CE Probe -----> 规则引擎 | | | v | v Token / ToolCall -------------------------------+------> 放行、告警、拒绝 | v 工具策略与最小权限
把 GAVEL 放在图中可以看出,它应是纵深防御的一层,而不是绕过工具策略的快捷方案。
2、宽泛分类器为什么容易误报,又难以维护
常见激活检测方法用一批“诈骗”“网络犯罪”“仇恨”等宽泛数据训练分类器。课件以税务电话诈骗为例:训练集包含大量自称税务机关、追缴欠税、要求付款的对话。模型一旦看到小说、培训材料或安全演练中相似表达,也可能被宽泛的 Scam 分类器判为恶意。
图 3:真实诈骗与无害角色扮演共享大量语义特征,单一大类标签很难表达业务允许的上下文
第二个问题是缺少可组合性。“诈骗”下面还包括税务冒充、投资诈骗、恋爱诱导、电商退款等场景。新增一种风险时,如果只能重新收集整类数据、重训完整分类器,安全策略很难跟上业务变化。
图 4:大类检测器给出一个总分,却无法让策略编写者复用“威胁”“付款”“冒充”等基础信号
GAVEL 的思路是把复杂风险拆成稳定、细粒度的 CE。税务诈骗不等于“出现 tax”,而是多个元素共同成立,例如:
yaml
name:tax_authority_impersonationversion:3groups:identity: [masquerade_as_human] domain: [taxation] pressure: [threaten, coercion] condition:all:-any:identity-any:domain-any:pressureaction:mode:stopseverity:high
业务如果允许税务知识问答,单独激活 taxation 不会触发;允许角色扮演,也不会因 masquerade_as_human 之外的普通 Roleplay 立即阻断。规则表达的是特定组合,而不是主题禁词。
3、把神经激活当成“流量”,但不要把类比当成等价
课件把 GAVEL 称为“LLM 的 Snort”:网络侧由安全人员编写开源规则,NIDS 检查数据包流并判定威胁;模型侧由 AI 安全人员共享规则,监测器检查 Activation Flow 并作出决策。
图 5:类比的核心是把检测知识从模型权重中分离出来,变成可版本化、可组合、可共享的规则
这是一种有用的产品抽象,但两者并不等价。网络字段具有协议定义,源地址和端口可以精确解析;CE 是从高维向量学习出的概率信号,会随模型、层、量化、微调、上下文和语言发生漂移。Snort 规则中的字节条件通常是确定的,GAVEL 规则的输入却先经过一个统计分类器。
因此生产规则不能只保存逻辑表达式,还必须绑定模型与校准条件:
json
{\"rule_id\":\"tax-scam-3\",\"model\":{\"name\":\"Mistral-7B-Instruct-v0.2\",\"revision\":\"sha256:model-digest\",\"quantization\":\"bf16\",\"selected_layers\":[13,27]},\"probe_bundle\":\"sha256:probe-digest\",\"ce_schema\":4,\"threshold_profile\":\"prod-cn-en-2026-08\",\"window_tokens\":24,\"rule_revision\":3,\"action\":\"monitor\"}
模型权重升级、LoRA 变化、量化方式改变或推理引擎替换,都应触发重新校准。不能把旧 Probe 在新模型上正常加载当作效果不变的证据。
4、CE 是可复用信号,不是模型思维的事实标签
课件把诈骗场景拆成 Threat、Taxation、Roleplay、Coercion、Click Directives、Payment Processing 等 CE。
图 6:风险规则不直接依赖完整诈骗语料,而是组合多个更细粒度的内部表征
论文的 CE 还覆盖购买、点击、下载、授权、提供信息、转账、冒充真人、SQL 构造、说服等行为或主题。每个 CE 都有一份 Excitation Dataset:用正负文本让基础模型处理目标概念,采集中间层表示,形成该 CE 的激活数据。
图 7:文本数据先经过被冻结的基础模型,再从选定层提取特征,训练轻量 Probe 识别 CE
论文选择 Attention Output,并报告在消融实验中平均 TPR 为 95.5%,高于 MLP Output 的 82.3%;Mistral-7B 上中后段第 13—26 层效果最好。这些是特定实验设置的结论,不应直接推广到任意架构。
CE 的名称具有可解释性,Probe 的分数仍是统计估计。安全日志应该写“coercion Probe 在此 Token 窗口得分 0.91”,而不是“模型正在胁迫用户”。这一区别很重要:前者可以回放、校准和质疑,后者容易把研究工具包装成不可证伪的心理判断。
一个最小的 CE 元数据 Schema 应保留数据来源和评测边界:
python
from pydantic import BaseModel, ConfigDict, Field classCognitiveElement(BaseModel): model_config = ConfigDict(extra=\"forbid\") ce_id: str = Field(pattern=r\"^ce_[a-z0-9_]{2,64}$\") title: str definition: str excitation_dataset_digest: str = Field(pattern=r\"^sha256:[0-9a-f]{64}$\") probe_digest: str = Field(pattern=r\"^sha256:[0-9a-f]{64}$\") model_digest: str = Field(pattern=r\"^sha256:[0-9a-f]{64}$\") layers: tuple[int, int] calibration_dataset: str threshold: float = Field(ge=0.0, le=1.0) measured_tpr: float = Field(ge=0.0, le=1.0) measured_fpr: float = Field(ge=0.0, le=1.0)
没有数据摘要、模型摘要和阈值来源的 CE,不应进入生产规则库。
5、规则引擎组合 CE,动作必须与置信度和业务风险解耦
课件示例把税务冒充规则写成:冒充真人,并且涉及税务,同时出现威胁或胁迫时停止生成。
图 8:逻辑规则把多个概率信号组合成具体场景,比单个 Scam 分数更容易解释和修改
课件列出的动作包括 Stop、Disclose、Steer、Refuse 和 Remediate。工程上不能让规则文件直接执行任意 Python,也不要用 eval() 解释布尔表达式。可把条件限制为 all/any/not 的闭合 AST,再把检测结论交给独立策略层映射动作。
python
from dataclasses import dataclass from typing importAny@dataclass(frozen=True)classSignal: score: float threshold: float @propertydefactive(self) -> bool: returnself.score >= self.threshold defevaluate(node: dict[str, Any], signals: dict[str, Signal]) -> bool: ifset(node) == {\"ce\"}: name = node[\"ce\"] if name notin signals: raise ValueError(f\"unknown CE: {name}\") return signals[name].active ifset(node) == {\"all\"}: returnall(evaluate(child, signals) for child in node[\"all\"]) ifset(node) == {\"any\"}: returnany(evaluate(child, signals) for child in node[\"any\"]) ifset(node) == {\"not\"}: returnnot evaluate(node[\"not\"], signals) raise ValueError(\"invalid rule AST\") TAX_SCAM = { \"all\": [ {\"ce\": \"masquerade_as_human\"}, {\"ce\": \"taxation\"}, {\"any\": [{\"ce\": \"threaten\"}, {\"ce\": \"coercion\"}]}, ] }
检测逻辑与响应动作要分离。同一条规则在客服草稿模式可只告警,在面向用户的语音机器人中可披露“这是自动系统”,在具备资金或门锁工具的 Agent 中则应停止工具调用并转人工。Probe 不应自己决定能否转账。
yaml
enforcement_policy:tax_authority_impersonation:chat_drafting: {mode:monitor, create_case:true} public_voice_bot: {mode:disclose_and_terminate} payment_agent: {mode:block_tools, require_human:true} data_exfiltration:default: {mode:block_tools, revoke_pending_approvals:true}
这样才能在不改检测规则的情况下,根据业务影响调整处置强度。
6、实时检测要解决窗口、抖动和 ToolCall 竞态
GAVEL 对 Token 级激活进行分类,得到每个 CE 随生成过程变化的分数。新样例进入模型后,分类器输出 Threat、Payment、Roleplay、SQL、Persuasion 等多路信号,再由规则集判断。
图 9:规则引擎消费的不是文本标签,而是一组随 Token 变化的 CE 概率序列
单个 Token 超阈值很容易抖动。生产系统应使用滑动窗口、最小持续长度和迟滞阈值:进入告警使用高阈值,退出使用低阈值;对“转账 + 胁迫”可要求两个信号在相邻窗口内共现,而不是同一 Token 精确对齐。
python
from collections import deque classHysteresisWindow: def__init__(self, size: int, enter: float, exit: float, min_hits: int): ifnot0 <= exit < enter <= 1: raise ValueError(\"require 0 <= exit < enter <= 1\") self.samples: deque[float] = deque(maxlen=size) self.enter = enter self.exit = exit self.min_hits = min_hits self.active = Falsedefupdate(self, score: float) -> bool: self.samples.append(score) threshold = self.exit ifself.active elseself.enter hits = sum(sample >= threshold for sample inself.samples) self.active = hits >= self.min_hits returnself.active
更关键的是 ToolCall 竞态:如果 Agent 采用流式输出,工具执行器可能在规则完整触发前就收到参数。正确顺序是先缓冲并校验完整 ToolCall,再等待当前窗口的策略判决,最后才提交外部副作用。
text
模型流式 Token -> 激活监测 -> 规则状态 | +---- ToolCall 草稿(不可执行) | v 完整参数 + 最终规则判决 | 允许 ------+------ 拒绝 / 人工审批 | v 幂等工具执行器
否则监测器虽然在最后一个 Token 命中,邮件、付款或权限授予已经发生。
7、评测数字要读对:ROC-AUC 不是线上拦截率
课件针对四类 Agent 风险给出 ROC-AUC:提示注入后门 0.800、隐藏议程 0.933、数据外泄 0.940、安全防护绕过 0.840。正负样本数量分别约为 632/2562、250/2944、154/3040、294/2900,课件注明精确数量以数据集发布为准。
图 10:四项结果都高于随机分类,但提示注入后门的 0.800 也说明它并非可靠到可以单独承担阻断
ROC-AUC 衡量所有阈值上的排序能力,不等于某个生产阈值的 Precision、Recall,也不包含真实流量中的基率。假设线上危险请求占比只有万分之一,即使 TPR 为 90%、FPR 为 1%,每一个真阳性周围也可能出现上百个误报。
上线前必须在本业务分布上计算混淆矩阵和告警负担:
python
from dataclasses import dataclass @dataclass(frozen=True)classMetrics: precision: float recall: float false_positive_rate: float alerts_per_million: floatdefmetrics(labels: list[int], scores: list[float], threshold: float) -> Metrics: pred = [int(score >= threshold) for score in scores] tp = sum(p == 1and y == 1for p, y inzip(pred, labels)) fp = sum(p == 1and y == 0for p, y inzip(pred, labels)) tn = sum(p == 0and y == 0for p, y inzip(pred, labels)) fn = sum(p == 0and y == 1for p, y inzip(pred, labels)) return Metrics( precision=tp / max(tp + fp, 1), recall=tp / max(tp + fn, 1), false_positive_rate=fp / max(fp + tn, 1), alerts_per_million=1_000_000 * (tp + fp) / max(len(labels), 1), )
阈值选择不能只最大化 Youden's J。高风险 ToolCall 可接受更高误报并转人工,普通聊天则可能只能监测。评测集还应覆盖真实业务语言、长上下文、工具结果、无害角色扮演、引用恶意文本的安全分析和攻击者针对 CE 的规避。
8、性能开销不大,但部署前提并不轻
论文在 RTX 6000 Ada 上用 Mistral-7B 测得基础推理平均每 Token 31.8 ms,加入 RNN CE 检测增加约 0.21±0.01 ms,约 0.6%,并报告 Probe 占用约 150 MB GPU 显存。
图 11:在论文测试硬件和模型上,分类条很窄;实际系统仍需重新测量批处理、并发和 Hook 带来的开销
开源仓库当前建议至少 16 GB GPU 显存、32 GB 内存,并以 Mistral-7B 为示例。更重要的限制不是显存,而是必须取得中间层表示。普通闭源模型 API 只返回 Token、Logprob 或 ToolCall,无法直接部署这种监测。
适用场景包括:
- 自托管开源模型,推理引擎允许注册层级 Hook;
- 私有模型服务,模型团队能把选定激活通过同机 Sidecar 交给监测器;
- 高风险小流量任务,可以接受专用推理池和严格版本绑定。
不适用或需要替代方案的场景包括:
- 仅能调用闭源文本 API;
- 服务端持续自动换权重,调用方无法固定版本;
- 激活跨网络传输会产生不可接受的隐私和带宽风险;
- 延迟预算极窄,却没有针对真实批量和并发做验证。
推荐让 Probe 与推理进程同机,只输出 CE 分数和版本摘要,不把原始激活长期写盘:
yaml
activation_monitor:placement:same_gpu_noderaw_activation_export:falseretained_fields:-request_id-model_digest-probe_bundle_digest-rule_revision-ce_scores_quantized-decisionretention_days:30network:allowed_egress: [policy-gateway] failure_mode:high_risk_tools:fail_closedtext_only_chat:monitor_and_degrade
激活也可能泄露输入或模型特征,不能因为人眼不可读就按普通指标处理。
9、共享规则能提升速度,也会引入规则供应链
GAVEL 设想公共仓库共享 CE Excitation Dataset 和规则集,组织下载后在私有模型上训练所需 Probe,并同时维护内部规则。
图 12:真正可迁移的是 CE 定义、激励数据和逻辑规则;模型相关 Probe 仍需在目标权重上训练和校准
课件展示的 Romance Baiting 规则,把情感吸引、要求采取动作以及建立信任或角色扮演组合起来。
图 13:规则文件可读、可评审,适合纳入安全工程的版本控制与变更流程
开放共享也带来类似检测规则供应链的风险:贡献者可能提交偏置数据、极易误报的 CE、隐藏触发样本或过宽动作。公共规则不能下载后直接获得阻断权限,至少要经过:
- 内容与许可证扫描,确认数据不包含秘密、个人信息或不允许再分发的语料;
- 数据集摘要、发布者签名和版本锁定;
- 独立训练与可复现评测;
- 本地良性流量回放和红队规避测试;
- Monitor-only 灰度,测量每百万请求告警量;
- 双人审批后才允许
block_tools或stop动作。
yaml
rule_supply_chain_gate:require:publisher_signature:trueimmutable_dataset_digest:truelicense_review:passedpii_scan:passedreproducible_probe_training:passedlocal_benign_replay_samples:100000adversarial_suite:passedmonitor_only_days:14prohibit:-executable_rule_code-remote_dataset_url_at_runtime-unsigned_threshold_change-automatic_blocking_on_first_install
规则 DSL 必须声明式、无网络、无文件访问。Studio 的 AI 自动生成能力只能生成草稿,不能自己批准自己的 CE、阈值和动作。
10、落地从一个高价值场景开始,不从“全模型安全”开始
GAVEL Studio 提供公共规则库、CE 管理、规则编辑、训练、测试和实时触发视图。课件还展示了用自然语言说明目标行为,由 AI 生成规则与所需 CE 的流程。
图 14:可视化工具降低了编写规则的门槛,但规则质量仍取决于数据、评测和审批
图 15:自动生成适合加速候选规则设计,不应替代安全所有者对定义、样本与业务影响的审查
合理的首个场景应同时满足:影响高、语义明确、样本可获得、存在可执行的响应。例如“Agent 调用外发邮件或权限授予工具时,检测隐藏目标与数据外泄”,比“检测所有不安全内容”更适合起步。
上线分四个阶段:
yaml
rollout:phase_1_offline:action:noneexit:calibrated_on_business_distributionphase_2_shadow:action:log_onlyexit:analyst_precision_and_alert_budget_metphase_3_guarded:action:require_human_for_high_risk_toolsexit:false_block_rate_within_slophase_4_enforced:action:block_selected_tool_classessafeguards:-deterministic_tool_authorization-emergency_rule_disable-signed_rule_releases-per_model_canary
SOC 侧应把规则命中与实际动作串起来,而不是只存 CE 分数:
sql
FROM agent_security_events |WHERE event_type ='gavel_rule_decision'|JOIN agent_tool_calls ON request_id | STATS hits =COUNT(), blocked_tools = COUNT_IF(tool_decision ='blocked'), executed_tools = COUNT_IF(tool_decision ='executed'), avg_score =AVG(max_ce_score) BY model_digest, rule_id, rule_revision, tool_name |WHERE executed_tools >0AND rule_action IN ('stop', 'block_tools')
如果规则要求阻断,而工具仍被执行,应按控制失效而非普通模型告警处置。
GAVEL 最有价值的贡献不是宣称模型内部已经透明,而是把激活安全从一个大分类器,改造成可组合的检测工程:CE 像检测原子,规则像 Sigma/YARA,规则库像社区情报,动作由本地策略决定。与此同时,安全工程师必须保留对概率信号的基本克制:绑定模型版本,记录阈值和数据来源,计算真实基率下的 Precision,保护激活遥测,并始终用确定性的工具授权兜底。
课件最后也把它定位为“额外的一层安全”。这个措辞很准确。神经流量规则可以帮助发现表面文本遗漏的行为,但不会替代身份、最小权限、参数校验、人工审批和审计。它的最佳位置,是在模型已经决定做什么、外部世界尚未受到影响的那一段狭窄窗口里。
资料来源
- Black Hat 官方 Session 页面
- GAVEL 论文:Towards Rule-Based Safety Through Activation Monitoring
- GAVEL 官方开源仓库
- Black Hat USA 2026 Session 页面
原始会议材料(仓库内)
- 演讲课件 PDF
开源资料与原始议题 PDF
本文对应的 Markdown 原稿、Black Hat 原始议题 PDF 与配图已整理到 GitHub,可按文章编号查找和下载。
https://github.com/cybermaxluo/black-hat-usa-2026-talks
也可以点击文末“阅读原文”进入仓库。欢迎 Star、提交 Issue 或参与勘误。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论