流式泄漏扫描(LeakScan)

wesgine 在 LLM 流式输出过程中实时扫描凭据泄漏。


工作原理

LLM 的流式输出(stream delta)经过 LeakScan 过滤器:

LLM stream delta
  ↓
LeakScan buffer
  ↓ 每 200 字节扫描一次
发送给客户端
  ↓ stream 结束
最终扫描(无条件)

扫描目标

与 Memory 的威胁扫描(INV-MEM-24)使用相同的模式:

模式示例
硬编码密钥api_key = "sk-..."
连接字符串密码postgresql://user:pass@host
AWS Access KeyAKIA...
Bearer TokenBearer eyJ...
PEM 私钥-----BEGIN RSA PRIVATE KEY-----

双 Buffer(INV-LEAK-01)

LeakScan 维护两个 buffer:

Buffer内容
文本 buffer模型的正常回复
Thinking buffer模型的推理过程

最终扫描

stream 结束时对两个 buffer 各做无条件最终扫描:


为什么需要最终扫描

考虑以下场景:

delta 1: "The API key is sk-abc"   ← 扫描通过(不完整)
delta 2: "123def"                   ← 补全了完整密钥
[stream 结束]

如果没有最终扫描,buffer 中残留的 sk-abc123def 永远不会被检测。


检测后行为

发现凭据泄漏时:


与其他安全机制的关系

机制扫描时机目标
Memory 威胁扫描写入 Memory 时防止凭据进入持久化
LeakScanLLM 输出时防止凭据发送给用户
SanitizeEnvexec 启动时防止凭据进入子进程
RedactSecretsAPI 响应时防止凭据出网

四层防护各自独立。


相关文档