你无法阻止提示词注入。那么该怎么办?

不要再试图构建完美的系统消息了。不要再等待更好的模型版本来修复安全问题了。

提示词注入一定会发生。当恶意指令看起来像命令时,没有任何模型能可靠地拒绝它们。如果你围绕“完美模型”来设计安全方案,你注定会失败。

转变你的重心。不要问如何防止注入,而要问:如果注入成功了,你的 agent 能做什么?

遵循以下规则以限制损害:

  • 使用权限范围受限的凭据。只给你的 agent 当前任务所需的权限。一个只有只读权限的 agent 比拥有管理员密钥的 agent 造成的损害要小得多。
  • 拦截破坏性操作。对于删除、支付或授予访问权限等操作,需要引入二次验证或人工检查。不要让模型来决定这些操作是否安全。
  • 将所有外部输入视为不可信。这包括用户消息、网页、工具输出和文档。数据进入上下文窗口(context window)时,往往会变成指令。
  • 监控你的工具输出。许多框架会将工具日志直接管道传输到模型上下文中。一项针对 17,022 项 agent 能力的研究发现,在 73.5% 的案例中,凭据会通过调试日志泄露。在工具输出到达模型之前,请脱敏其中的敏感信息。
  • 监控行为,而不仅仅是质量。被劫持的 agent 在执行未经授权的操作时,依然能生成高质量的文本。你必须建立正常操作序列的基准,并在出现偏差时发出警报。

使用这三个层级的行为监控:

  • 静态规则:捕捉明显的异常,例如 agent 突然发送电子邮件。
  • 序列模式:标记不符合 agent 正常工作模式的操作。
  • 独立审查:使用第二个模型来评判主 agent。

如果你的 agent 使用记忆功能,请保持其干净。一次注入就可能写入一个“中毒”的事实,并在每次会话中重复出现。按实例划分记忆范围,并追踪每一条信息的来源。

如果一个 agent 现在被劫持了,你能从日志中发现吗?还是说你正处于盲区?

来源:https://dev.to/brennhill/you-cant-prevent-prompt-injection-so-what-do-you-actually-do-1d37

可选学习社区:https://t.me/GyaanSetuAi