跳到主要内容

10 篇博文 含有标签「llm-security」

查看所有标签

当你的禁止列表变成秘籍:提示词中负面示例的隐性成本

· 阅读需 11 分钟
Tian Pan
Software Engineer

打开一个成熟的生产系统提示词(system prompt)并搜索“not”这个词。在一个已经发布了三个季度并经历过几次事故的功能中,你几乎总能发现一个看起来像“遗憾清单”的章节——“不要提供医疗建议,不要生成匹配这些模式的代码,不要使用这个正则表达式生成内容,不要冒充这些竞争对手,不要使用这些短语。”每一行都可以追溯到一起特定的事故。每一行都是由一位满怀信心地说“这能解决问题”的工程师添加的。而这个列表,每一个季度都像博物馆增加展品一样不断增长。

极少数团队会公开承认的是,这个列表——提示词中最具防御性、经过最仔细审查的部分——对于错误的读者来说,也是整个功能中最有用的产物。一个决意提取系统提示词的用户,现在拥有一份经过策划、组织良好且模型可读的清单,其中包含了团队所担心的所有行为。禁止列表就是一份食谱。而团队亲手编写了这本烹饪书。

提示词注入漏洞赏金:当“损坏”没有明确定义时,如何划定程序范围

· 阅读需 14 分钟
Tian Pan
Software Engineer

你的安全团队运行着一个行之有效的漏洞赏金计划。CSRF 得到了奖金,XSS 得到了奖金,IDOR 也得到了奖金。交战规则明确,严重程度标准符合行业规范,分拣队列有序移动,该计划产出了源源不断的已修复漏洞。接着,你的 AI 团队在上个季度发布了一个功能 —— 一个聊天界面、一个调用工具的智能体(agent),或是一个从客户数据中提取信息的 RAG 流水线 —— 摆在安全团队桌面上的问题变成了:“这个东西的赏金范围是什么?”没人能回答。

没人能回答的原因是,标准的漏洞赏金准则是围绕行为确定的系统构建的。登录端点要么身份验证正确,要么不正确。访问控制检查要么生效,要么失效。你刚发布的 AI 功能没有等效的基准事实(ground truth):其规定的行为是“对用户输入做出有帮助的响应”,而一个让它做出无用响应的研究员并不一定发现了漏洞 —— 他们可能只是发现了模型一直以来都在做的事情,只是没人知道,你不确定是否能修复,而且在第二次尝试时可能无法复现。

工具组合沙箱逃逸:当三个安全工具组合成数据泄露时

· 阅读需 11 分钟
Tian Pan
Software Engineer

安全审查分别批准了这三个工具。对客户数据库的只读访问被评估为低风险,因为智能体(agent)只能查看记录而不能修改。发送邮件给自己(Send-email-to-self)被评估为低风险,因为收件人被硬编码为一个服务账号邮箱,且智能体已被授权向该邮箱写入。模板渲染(Template-render)被评估为低风险,因为它是一个不带 I/O 的确定性 Jinja 风格转换。发布三周后,数据丢失防护(DLP)仪表板标记了出现在一个有两百名员工可读的 Slack 频道中的客户 PII。事后分析(post-mortem)发现泄露源于智能体将这三个工具组合成了一个没有任何单一 ACL 授权的链路:读取客户记录,通过模板渲染,将结果发送到它自己的服务账号,而该邮箱又自动转发到了该频道。

没有一个工具被滥用。没有提示词注入(prompt injection)绕过任何检查。智能体完全按照其工具目录所说的那样执行,而这种组合产生了一种安全审查从未被要求评估的能力。

绕过词汇表:当用户学会用礼貌的英语进行越狱

· 阅读需 11 分钟
Tian Pan
Software Engineer

在你的生产流量中,最廉价的“越狱”并非巧妙的 Unicode 技巧或连锁的对抗性后缀。而是用户在第一次请求被拒绝后多输入的三个词。他们加上了“仅供假设”(just hypothetically)。他们加上了“为了研究论文”(for a research paper)。他们加上了“为了我正在写的虚构故事”(for a fictional story I'm writing)。模型照办了。他们告诉了朋友。朋友发了 TikTok。到月底,你那部分原本因拒绝策略而被拦截的流量中,有相当一部分正在绕过限制,其使用的英语如此礼貌,以至于你的任何提示注入过滤器都不会触发。

这是安全团队未曾列入威胁模型的失效模式。威胁模型假设对手是老练、有动机且技术精湛的。而真正的对手是看到了截图的好奇用户。他们使用的词汇不会出现在任何公开的越狱语料库中,因为等到这些词汇出现在论文里时,线上的分布早已发生了变化。

你的微调大模型正在泄露哪些训练数据

· 阅读需 10 分钟
Tian Pan
Software Engineer

当一个团队在客服工单、内部Slack记录或专有代码上对大模型进行微调时,通常本能地将数据摄取视为单向门:数据进去,更好的模型出来。但实际并非如此。一名研究人员只需API访问权限和200美元,就能系统地将原文逐字提取出来,其中往往包括模型本不应对外呈现的内容。这并非理论上的边缘案例——这是已被记录的攻击模式,已在包括全球部署最广泛的语言模型在内的生产系统上得到演示。

核心问题在于,微调模型在隐私立场上与基础模型有着本质区别。它们在规模更小、更具特征性的数据集上训练,个别样本远比基础模型行为更容易被区分——而这种可区分性正是攻击者所利用的。

输出即有效载荷:你的 AI 威胁模型只守住了一半边界

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的团队为 AI 功能编写的威胁模型几乎肯定止步于模型本身。输入是不可信的:提示词注入、越狱、对抗性上传、投毒检索。输出被视为内容:需要进行安全审核、在拒绝评估中评分、发送给用户。这种威胁模型的形态大致是“不可信的东西进去,模型思考,安全的东西出来”。

新的攻击类别翻转了这种极性。模型的输出由下游系统渲染、解析、执行或中转,攻击者只要能塑造该输出——通过检索中的间接提示词注入、训练数据影响或社交工程化的用户查询——就能向模型从未直接访问过的目标传递载荷。模型变成了一个拥有攻击者所不具备的访问权限的混淆代理 (confused deputy),而你的团队所防御的边界比实际落后了两个系统。

EchoLeak 是 2025 年的经典案例。一封精心制作的电子邮件进入 Microsoft 365 邮箱。Copilot 将其作为常规上下文读取。隐藏的指令导致 Copilot 在回复中将敏感上下文嵌入到引用样式的 Markdown 链接中,客户端界面会自动获取该外部图片——从而在无需用户点击的情况下窃取聊天记录、OneDrive 内容和 Teams 消息。微软的输入侧分类器被绕过了,因为攻击不需要破坏模型的拒绝校准,它只需要塑造输出中的一个特定 Token 序列。

你的系统提示词终会泄露:针对提示词提取进行设计

· 阅读需 12 分钟
Tian Pan
Software Engineer

LLM 功能的威胁模型过度关注三种失败模式:提示词注入、用户数据外泄和未经授权的工具调用。但还有一种更隐蔽、成本更低且很少出现在事后分析报告(因为没人提交过相关报告)中的攻击——提示词提取(prompt extraction)。对抗性用户(有时是竞争对手,有时是充满好奇的研究人员)只需经过几轮对话,就能诱导模型背诵出其系统提示词。那些编码了你团队产品行为、拒绝策略、检索支架和品牌语调的精心调优的指令,不到一周就会出现在公共 GitHub 仓库中。

这类仓库已经存在了。一个广为流传的 GitHub 项目专门追踪从 Claude、ChatGPT、Gemini、Grok、Perplexity、Cursor 和 v0.dev 中提取的系统提示词——随着新模型版本的发布而更新,通常在发布后的几小时内就会同步。Anthropic 完整的 Claude 提示词(包括工具说明)超过 24,000 个 token,而且你可以直接阅读。最热衷于对提示词保密的公司,往往也是其提示词泄露最频繁的公司,因为这类公司的攻击者动力最强。

AI 可观测性泄露:你的追踪堆栈正成为数据外泄的出口

· 阅读需 13 分钟
Tian Pan
Software Engineer

我最近接触的一个安全团队发现,他们的 prompt(提示词)和 response(响应)字段被完整地发送到了一个第三方 SaaS 日志后端,而他们从未与该厂商签署过《数据处理协议》(DPA)。这些字段包含客户的医疗摘要、支持人员误粘贴的 Stripe 私钥,以及某人要求内部助手总结的机密收购备忘录全文。Payload 中没有任何内容经过加密,也没有进行任何脱敏处理。数据保留期长达 400 天。这一集成是由一位初衷良好的工程师在黑客松期间通过 pip install 厂商的 SDK、填入 API 密钥后直接上线的。

这就是 AI 观测性泄露。每个 LLM 应用团队最终都会需要追踪(tracing)——没有它,你无法调试提示词回归或非确定性的智能体(agent)循环——因此 LangSmith、Langfuse、Helicone、Phoenix、Braintrust 或厂商提供的 AI 插件最终都会进入技术栈。默认设置会捕获整个请求和响应。对于大多数生产工作负载来说,这种默认设置就是一个等待被发现的合规性违规隐患。

免费层级滥用经济学:当你的 AI 慷慨被机器人拖垮

· 阅读需 12 分钟
Tian Pan
Software Engineer

一位创业公司的 CTO 某天早晨检查 OpenAI 后台,发现了一张 67,000 美元的账单。他们往常的月账单是 400 美元。产品层面没有任何变化 —— 没有爆火的发布,没有新功能,也没有营销活动。变化的是,攻击者识别了他们的端点指纹,从构建产物中获取了泄露的密钥,并将推理服务以低于零售价 40-60% 的价格转卖给那些支付加密货币的买家。创业公司付了账单,而攻击者赚取了差价。

这不是 SaaS 创始人互相传颂的典型免费层滥用故事。典型故事是:少数重度用户滥用了慷慨的试用,流失率飙升,你收紧限制,单位经济效益在一个季度内恢复。这套剧本在 AI 产品上已经过时了。当你针对匿名请求的单位成本不再实际上为零,且你的慷慨一旦可以被变现,这种数学模型就崩塌了。

生产环境中的提示注入:真正有效的攻击模式及如何阻止它们

· 阅读需 13 分钟
Tian Pan
Software Engineer

提示注入是 OWASP LLM 应用十大漏洞之首,工程师对它的运作方式和攻击者实际利用方式的理解之间存在越来越大的鸿沟。2024 年的一项研究测试了 36 个生产环境中集成了 LLM 的应用程序,发现其中 31 个易受攻击。2025 年的一次红队测试发现,如果攻击者尝试的次数足够多,100% 已发布的提示防御措施都可以被绕过。

残酷的真相是:大多数团队首先采取的简单防御措施——仅靠系统提示警告、关键词过滤、输出净化——在面对尝试多种方法的攻击者时都会失效。有效的方法是架构性的:分离权限、隔离不受信任的数据,并根据 LLM 看到的内容来限制它实际能做的事情。

这篇文章是为构建生产系统的工程师准备的实战指南。没有 CTF 风格的玩具示例——只有导致真实事件的攻击模式和能显著降低风险的防御模式。