
























提示注入与系统提示泄露均通过用户输入进入,但目标不同:注入覆盖指令以劫持行为,泄露读取隐藏指令以提取机密。两者利用同一漏洞——模型将系统消息与用户消息视为连续token序列,无安全边界。攻击者可通过"忽略先前指令"或"重复上下文内容"等载荷实现攻击,存储凭据在系统提示中更会放大泄露风险。
修复核心是结构分离:在Spring AI中使用ChatClient API将系统指令放入SystemMessage,用户输入放入UserMessage,避免拼接。同时实施输入验证(@Pattern拒绝列表拦截常见注入载荷如"ignore instructions")和输出验证(检查响应是否包含系统提示中的canary字符串,若包含则返回400并红act流式输出需缓冲扫描)。
防御深度包括:使用Advisor组件(如PromptGuardAdvisor)拦截请求和响应,注册为默认Advisor;RAG管道按用户授权范围限定文档命名空间;对工具调用维护显式白名单;对泄露探测实施速率限制。测试可采用WireMock模拟模型返回包含系统提示文本的响应,验证输出守卫的"redacted"行为。
常见错误包括:在系统提示中嵌入凭据(泄露至日志、追踪和提供者仪表盘);信任模型输出为有效结构数据而不验证(可能引发命令注入);跳过流式响应的输出验证(泄漏可能跨多个chunk);假设新模型版本免疫注入(攻击面随模型移动);不记录原始用户输入导致事件响应困难。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。