跳到主要内容

101 篇博文 含有标签「security」

查看所有标签

提示注入是供应链问题,而非输入验证问题

· 阅读需 10 分钟
Tian Pan
Software Engineer

在一百万份干净文档中隐藏五份精心构造的恶意文档,就能对生产级RAG系统实现90%的攻击成功率。这不依赖零日漏洞或密码学破解——只需用纯文本指示模型以与运营者意图不同的方式运行。如果你的防御策略是"在内容到达LLM之前净化输入",那你已经输了。

框架至关重要。将提示注入视为输入验证问题的团队会构建边界防御:正则过滤器、基于LLM的分类器、输出扫描器。这些有用但不足。真正的问题在于,现代AI系统是组件的组合——检索器、知识库、工具执行器、外部API——每个组件都是有自身攻击面的摄入点。这正是供应链漏洞的定义。

面向消费者的 LLM 功能红队测试:抢在用户之前发现注入攻击面

· 阅读需 12 分钟
Tian Pan
Software Engineer

一家汽车经销商部署了由 ChatGPT 驱动的聊天机器人。几天内,一名用户指示它同意他们所说的任何话,然后提出以 1 美元购买一辆 2024 款 SUV。聊天机器人接受了。经销商随后将其下线。这并非复杂的攻击——只是一个想看看到底会发生什么的人写的短短三句提示词。

在面对普通消费者时,这种好奇心是你最大的安全威胁。内部 LLM 智能体在受控环境中运行,拥有精选的输入和可信的数据。而面向消费者的 LLM 功能默认在对抗性条件下运行:数百万用户中,有许多人正在积极寻找弱点,而随机模型本身并没有“这个用户似乎怀有恶意”的概念。这两个环境所需的安全策略有着本质的区别,而那些将消费者功能视为内部工具的团队终将吸取惨痛教训。

为具备代码编写能力的智能体构建沙箱:最小权限原则并非可选

· 阅读需 15 分钟
Tian Pan
Software Engineer

大多数团队在发布第一个可执行代码的智能体(Agent)时,只采取了一种安全控制措施:API 密钥范围限制(API key scoping)。他们给智能体一个具有 repo:read 权限的 GitHub 令牌,以及一个可以访问工作目录的 shell,然后就称其为“已沙箱化”。这种做法是错误的,其弊端只有在发生安全事故后才会变得显而易见。

能够编写和执行代码的智能体的威胁模型与 Web 服务器或 CLI 工具的威胁模型有着本质的区别。攻击面不再是协议边界,而是智能体读取的一切内容。这包括 git 提交记录、文档页面、API 响应、数据库记录以及它打开的任何文件。其中的任何输入都可能包含提示词注入(prompt injection),从而将你的研究型智能体转变为数据泄露管道。

大规模 Text-to-SQL:上线之前没人告诉你的那些事

· 阅读需 12 分钟
Tian Pan
Software Engineer

Text-to-SQL 演示看起来出奇地简单:把 schema 粘贴到提示词里,向 GPT-4 提个问题,拿到一条整洁的 SELECT 语句,然后 Slack 里就开始涌现"要不要把这个集成进数据平台?"的消息。等到你真正打算上线时,麻烦来了。基准测试显示 85% 的准确率,但内部数据团队反映大约一半的答案是错的,而安全团队则在追问:生成的查询在执行前有没有经过审查?没人能给出一个像样的答案。

这正是 text-to-SQL 作为研究问题与作为工程问题之间的鸿沟。研究问题关注的是让模型生成语法正确的 SQL;工程问题面对的是 schema 歧义、访问控制、查询验证,以及你的企业数据库根本不像 Spider 或 BIRD 数据集这一现实。

智能体身份与委托授权:智能体操作的 OAuth 模式

· 阅读需 11 分钟
Tian Pan
Software Engineer

当 AI 智能体预订日历事件、发送电子邮件或提交表单时,它并非以自己的身份行事——而是在某个说"去做这件事"的人类的委托授权下行事。这一区别听起来很哲学,直到某个智能体泄露了敏感数据、执行了用户并不打算执行的不可逆操作,或者遭到入侵。到那时,问题不再是发生了什么,而是谁授权的、何时授权的,以及能否撤销

权限范围设置不当的智能体凭证所带来的波及范围,远超大多数团队的预期。拥有广泛 API 访问权限的智能体不是单一故障点——而是一个长期开放的后门。2025 年,智能体 AI 的 CVE 数量同比增长了 255%,大多数事件都可以追溯到权限过宽、有效期过长或无法彻底撤销的凭证。正确构建智能体,意味着在投入生产之前就设计好授权层。

大规模提示词注入:防御智能体流水线免受恶意内容的侵害

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个银行助手正在处理一段客户支持对话。消息中嵌入了指令——由于是以零不透明度的白色文字渲染的,因此不可见——要求智能体绕过交易验证步骤。智能体照做了。当异常情况在日志中浮现时,已有 250,000 美元被转移到了客户从未接触过的账户中。

这并非凭空虚构的场景。它发生在 2025 年 6 月,精准地展示了为什么提示词注入(Prompt Injection)是生产级智能体 AI(Agentic AI)中悬而未决的最难问题。与仅生成文本的聊天机器人不同,智能体(Agent)会采取行动。它会调用工具、发送电子邮件、执行代码并发出 API 请求。当它的指令被劫持时,影响范围(blast radius)不再是一句糟糕的话,而是机器速度下的未经授权的操作。

根据 OWASP 2025 年 LLM 应用十大安全风险,提示词注入现在被列为排名第 1 的关键漏洞,出现在安全审计评估的 73% 以上的生产级 AI 部署中。每个构建智能体的团队都需要一个连贯的威胁模型和防御架构,且这种架构不能以安全之名让系统变得毫无用处。

当你部署企业级 AI 时,你也制造了内部威胁

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数企业安全团队都有一套相当成熟的内部威胁模型:心怀不满的员工将文件下载到 USB 驱动器,将电子表格发送到个人邮箱,或者带着凭据离职。检测策略是已知的 —— DLP 规则、出口监控、UEBA 基准。这些策略没有考虑到的是这样一种场景:你给每位员工都提供了一个能够以机器速度规划、执行并掩盖多阶段操作的工具。这正是部署 AI 编程助手和基于 RAG 的文档代理的实际效果。

问题并不在于这些工具在隔离状态下是不安全的。而在于它们极大地放大了一个受攻击或怀有恶意的内部人员在单次会话中能完成的任务。内部人员事件的平均成本每年已达到每家机构 1740 万美元,83% 的机构在过去一年中至少经历过一次内部攻击。AI 工具并没有引入新的威胁类别 —— 它们只是成倍地增强了每一个现有威胁类别的能力。

最小足迹原则:自主 AI 智能体的最小权限设计

· 阅读需 10 分钟
Tian Pan
Software Engineer

某零售采购智能体在"初始测试期间"继承了供应商 API 凭证,却没有人在系统投产前对其加以限制。当一个差一错误触发后,该智能体拥有完全的下单权限——永久生效,毫无限制。等财务部门察觉时,已有价值 47,000 美元的未授权供应商订单发出。代码没有问题,模型也按设计运行。造成如此大破坏的,是权限问题。

这就是最小足迹原则:智能体应仅请求当前任务所需的权限,避免在任务范围之外持久化敏感数据,清理临时资源,并将工具访问权限限定于当前意图。这是 Unix 最小权限原则在新时代的延伸——在这个时代,代码会在运行时自主决定下一步需要做什么。

团队之所以在这里屡屡犯错,并非出于疏忽,而是概念错误:他们把智能体权限当作设计时的工作,而智能体 AI 使其成为了运行时问题。

每日十万请求下的提示注入检测:为何简单防御失效,以及真正有效的方法

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数团队都是在用户发现问题之后,才意识到自己的提示注入防御已经失效。你把"忽略所有先前指令"加入屏蔽词列表,然后上线。三个月后,攻击者将载荷进行 Base64 编码,或将指令藏在 RAG 检索到的 HTML 注释里,或使用错字混淆手法("忽略所有之前的指示"),你的防御瞬间土崩瓦解。屏蔽词列表无济于事,因为提示注入的攻击面是无界的——不存在封闭的恶意输入词汇表。

在流量较低时,你可以承担为每个请求调用第二个 LLM 进行验证的成本。但在每天十万次请求的规模下,这笔账算不过来,延迟也会让用户明显感知。本文探讨的是当暴力解法失效后,架构应该如何设计。

向量存储访问控制:大多数 RAG 团队忽略的行级安全问题

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数构建多租户 RAG 系统的团队在身份验证(authentication)上做得很好,但在授权(authorization)上却做得不对。他们验证用户确实是其所声称的身份,然后从共享向量索引中检索文档,并在将结果发送给 LLM 之前对其进行过滤。这种过滤——即检索后过滤——只是“安全防御的假象”(security theater)。当你从列表中移除未授权文档时,它们已经处于模型的上下文窗口中了。

真正的问题比放错位置的过滤器更深。大多数 RAG 系统将文档授权视为摄取时(ingest-time)的关注点(“该用户可以上传此文档吗?”),但完全未能在查询时(query-time)强制执行(“该用户可以查看与此查询匹配的文档吗?”)。这两个检查点之间的差距就是静默数据泄露发生的地方——也是大多数生产事故的根源。

Agent 身份与最小权限授权:你的 AI 团队正在忽视的安全隐患

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数 AI Agent 架构都存在一个悄无声息的安全问题,直到出了事才会被发现。你构建了 Agent,用应用现有的服务账户凭证将其接入内部 API,上线生产,然后继续下一个任务。Agent 正常运行,用户很满意。而与此同时,在你的审计日志里,一个服务账户身份正在悄悄触碰 Agent 曾经需要访问的每一条客户记录、每一张账单表和每一份内部文档——却没有任何痕迹说明是哪个用户发起了什么请求,又是为什么。

这不是一个理论风险。当安全事件发生,或者当监管机构询问"3 月 14 日谁访问了这份数据"时,答案每次都一样:[email protected]。每一个操作、每一次请求、每一次读写——全部归结为同一个身份。审计记录在技术上是正确的,但在取证层面毫无用处。

LLM 在安全运营中心的应用:在不承担责任风险的情况下实现加速

· 阅读需 12 分钟
Tian Pan
Software Engineer

我尊重的一位资深分析师这样描述她的团队在使用大语言模型 (LLM) 驱动的分拣代理的前六个月:“它让简单的告警消失了,却让复杂的告警变得更难信任。”这句话一直让我记忆犹新,因为它捕捉到了这项权衡的本质。安全运营中心 (SOC) 中的 AI 并不是一个关于效率提升的故事。它是一个关于信心校准的故事,而大多数团队都在朝着同一个错误的方向进行校准。

诱人的版本是:在告警队列前放置一个模型,让它聚类重复项、总结原始事件并自动关闭明显的噪音。MTTR(平均响应时间)图表下降了。寻呼机安静了。一级告警积压蒸发了。而真正导致你被入侵的版本是:模型自信地将一次真实的入侵误判为无害的备份作业,而一名疲惫的分析师——被告知“AI 已经分拣过了,没问题”——甚至从未打开过这个案例。第一个版本是真实的,第二个版本也是。它们是同一个系统在不同信心水平下的表现。