红队切片、误报与事故收敛
护栏一味拦截可以得到100%攻击拦截率,却让产品完全不可用。评估必须同时包含正常请求和攻击请求,并区分直接/间接注入、编码、长文本、跨语言、多轮、工具返回与撤权场景。
同时计算误报和漏报
标准库完整实验:actual=True表示攻击,blocked=True表示拦截。
python
rows=[(True,True),(True,False),(False,True),(False,False),(False,False)]
tp=sum(a and b for a,b in rows)
fn=sum(a and not b for a,b in rows)
fp=sum(not a and b for a,b in rows)
tn=sum(not a and not b for a,b in rows)
attack_block_rate=tp/(tp+fn)
false_positive_rate=fp/(fp+tn)
assert attack_block_rate == 0.5 and false_positive_rate == 1/3
print({"attack_block_rate":attack_block_rate,"false_positive_rate":false_positive_rate})漏掉一个攻击和误拒一个正常请求是不同错误。按语言、工具风险和权限切片,记录模型、策略、prompt、索引与工具版本。比例必须带分母,小样本不支持“安全性提升”的强结论;高风险越权可设零容忍门禁,同时把普通误报送人工复核。
从告警到处置
告警需能行动:越权工具调用急增时停用该工具或撤销凭证,成本异常时停止领取任务,敏感日志发现泄漏时限制访问并定位传播范围。保留脱敏证据、时间线、版本和批准记录,轮换受影响密钥,按数据系统分别执行删除与核对。通知哪些用户由事件响应流程和事实范围决定,不能由模型自行群发。
回滚模型或prompt不能撤销已经产生的副作用,必须查询效果账本;补偿失败进入人工状态。修复后把真实失败最小化成回归样本,连同正常近邻例子测试,防止只记住攻击句子而误杀正常功能。供应链变更与安全策略变更分别灰度,保留可追溯版本。
本课程实验验证确定性授权、URL与统计,不声称量化真实模型攻击成功率。模型分类器、真实沙箱逃逸、浏览器展示和供应商保留规则需要相应环境另验;把这些限制与已证实边界分开才便于决策。
练习
把策略改成全部拦截,在相同数据上计算攻击拦截率和正常误报率,二者都应为1;写门禁要求拦截率>=0.9且误报率<=0.1,应拒绝发布。