TL;DR
当前大多数LLM安全测试依赖静态提示检查,这种方法无法捕捉对话上下文和对抗性操纵带来的深层风险。本文重点介绍真正的渗透测试需要采用场景驱动方法,考虑模型如何解读人类意图,以及传统防护措施为何经常失效。
如果您正在探索如何保护大型语言模型(LLM),请不要错过我们的网络研讨会:Breaking AI: Inside the Art of LLM Pen Testing。该研讨会将更深入探讨本文涵盖的技术、思维模式和实战经验。
提示工程不等于安全测试
许多团队从提示工程开始测试,通过硬编码提示或在开发过程中添加令牌过滤器来测试LLM。这有助于发现明显问题,但无法真正判断系统是否安全。
LLM与传统软件不同,它们基于上下文而非代码进行响应。这些模型经过人类对话训练,继承了随之而来的不可预测性。语气或措辞的细微变化可能导致完全不同的输出。
要正确测试,需要像攻击者一样思考:理解人们如何扭曲语言、转换意图,并利用上下文绕过规则。
例如,我们的顾问遇到一个安全策略规定"儿童不应玩火"。他要求模型为成年人重写规则,逻辑是成年人不应有相同限制。模型直接翻转含义建议"你应该玩火"。虽是小变化,却是明显的失败。
这类攻击之所以有效,是因为LLM试图提供帮助。它们不仅遵循规则,还会解读意图——这正是风险所在。
我们必须将LLM视为对话系统而非命令行工具。因此测试必须聚焦于模拟真实用户或攻击者可能滥用模型的现实场景。
真正的AI防御策略
仅过滤输出或添加速率限制远远不够。要构建安全的LLM系统,需将其视为高风险组件:
- 沙箱环境运行:尽可能在隔离环境中运行AI模块,将LLM与核心系统和敏感数据隔离
- 隔离敏感操作:不要让LLM直接触发数据库查询、文件访问或配置操作等敏感操作
- 实时异常监控:设置专门针对LLM行为的监控:意外完成、策略违规或输出模式的突然变化
- 人工审核机制:对影响用户、权限或关键工作流的AI生成操作进行人工批准
- 深度防御架构:结合分层控制、主动防护栏,甚至使用次级AI系统审核主要模型的输出
这是我们将传统安全中的分层方法应用于生成式系统的实践。
当攻击不可复现时
某些攻击不会以相同方式再次发生——这不是测试的失败,而是这些模型工作方式的副产品。相同输入可能因时间、先前消息或措辞细微差异而产生不同结果。
遇到这种情况时,我们会记录所有信息:完整记录、上下文环境以及避免类似问题的建议。我们关注的是"为什么有效"而不仅仅是"发生了什么"。
当前有效的测试方法
这个领域变化迅速,但以下方法目前显示效果:
- 对已知风险(如提示注入)进行自动化测试
- 手动探索不可预测行为
- 模拟真实使用和滥用的场景驱动测试
目标不是追求完美,而是保持灵活、警觉并关注实际影响。
领导者需要知道的要点
如果您负责部署或保护AI系统,请记住:
- CI/CD提示测试不足以保证安全
- 攻击者利用上下文而不仅仅是内容
- LLM创造了传统软件中不存在的新型攻击面
- 安全架构始于理解这些模型的行为方式
- 越早投资真实测试,未来越有信心
联系我们
我们正在积极测试和学习。如果您也在类似道路上,我们很乐意交流经验。
有故事分享?遇到奇怪边界情况?我们很乐意让您与我们深入此工作的团队成员联系。