跳到主要内容

101 篇博文 含有标签「security」

查看所有标签

Prompt 中的 PII:你的 AI 流水线缺失的数据最小化模式

· 阅读需 14 分钟
Tian Pan
Software Engineer

2025 年的研究发现,提交给商用 LLM 的 Prompt 中有 8.5% 包含敏感信息——PII、凭据和内部文件引用。这一统计数据可能低估了问题的严重性。它只计算了用户显式输入的内容,而没有计算系统静默添加的内容:检索到的客户记录、数据库查询的工具输出、从之前会话持久化的记忆,或者是训练前未经过清洗的微调数据。大多数 AI 流水线的 PII 泄露并非源于用户错误,而是源于没有单一工程师负责的架构盲点。

失效模式几乎总是一样的:团队发布了一个 AI 功能,认为“我们不发送个人数据”,但个人数据却从缝隙中进入了——在包含客户地址的 RAG 检索分块中,在返回完整用户档案的智能体工具输出中,或者在从 CRM 导出且未经脱敏(redaction)的微调数据集中。GDPR 的数据最小化原则要求你只收集特定目的所必需的数据。LLM 架构在默认情况下违反了这一点。

真正信守承诺的隐私模式:在 AI 功能中构建用户可控的数据边界

· 阅读需 11 分钟
Tian Pan
Software Engineer

2026 年 3 月,一场集体诉讼指控 Perplexity 的“无痕模式”(Incognito Mode)正在将对话数据和用户标识符路由到 Meta 和 Google 的广告网络 —— 甚至对于明确激活了该功能的付费订阅者也是如此。该功能被称为“无痕”。用户认为这意味着私密。但实现方式却并非如此。

这是 AI 隐私模式中最常见的失败模式:名字是营销,实现是“留存戏剧”(retention theater)。工程师上线了一个开关。法务批准了措辞。用户按下开关并信任它。但在数据管道的某处,输入内容仍在流向日志服务、训练任务或某个没人记得拦截的第三方分析 SDK。

多模态输入中的提示注入:纯文本防御所忽视的视觉攻击面

· 阅读需 12 分钟
Tian Pan
Software Engineer

当团队对 AI 管道进行提示注入加固时,通常只聚焦于文本:清洗用户输入字符串、扫描输出中的外泄数据、过滤已知的越狱(jailbreak)模式。这些工作固然重要,但对于现代 AI 系统而言,它们大约只覆盖了一半的攻击面。另一半隐藏在图像、PDF、音频片段和图表之中——这些格式能绕过你写下的每一条文本扫描规则,因为模型处理它们的通道与处理文本的通道完全不同。

针对视觉语言模型的隐写注入攻击(steganographic injection attacks),在包括 GPT-4V、Claude 和 LLaVA 在内的生产模型上,成功率约达 24%。这个数字并非实验室数据,而是来自真实的攻击载荷——隐藏在看似普通的图像中,使生产模型偏离预期行为。你的文本注入扫描器对此毫无察觉。

Prompt Injection 并不主要是一个攻击者问题

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数防御提示词注入 (Prompt Injection) 的团队都会联想到一个攻击者:一个精心设计特定字符串以覆盖 AI 指令的人。这种思维定式是错误的,并让他们付出了代价。这个问题更难的版本根本不需要攻击者。

每当你的 AI 应用摄取用户生成的内容时 —— 无论是产品评论、工单、上传的文档还是 CRM 笔记 —— 它都面临着同样的结构性漏洞。无需恶意企图。普通用户出于普通原因生成的普通文本,在规模化的情况下,其表现可能与蓄意的注入攻击完全一致。如果你的应用仅针对对抗性案例进行防御,那么你防御的只是少数情况。

LLM 系统中的软约束与硬约束:为什么失配会导致真正的失败

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数 LLM 系统故障并非源于模型出错。而是源于系统误判了模型能够强制执行的约束。当你在系统提示词中写下“绝不泄露客户数据”并将其等同于“撤销数据库凭据”时,你引入了一个范畴错误。这最终会导致安全事件、可靠性故障或受损的用户体验——而你直到故障在生产环境中发生时才会察觉。

软约束与硬约束之间的区别是架构层面的,而非风格层面的。搞错这一点不会导致风格退化,而是会导致安全漏洞。

为什么 AI 生成的 Terraform 和 Kubernetes 配置在潜移默化中出错

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数平台工程师都有过类似的故事:他们让 AI 助手生成一个 Terraform 模块或 Kubernetes 部署清单,结果看起来非常合理,CI 流水线也顺利通过了,但几周后坏事发生了。一个带有通配符权限的 IAM 角色。一个本不该公开的 S3 存储桶。一个因为没人检查安全上下文(security context)而以 root 身份运行的 Kubernetes pod。

核心问题不在于 LLM 写错了语法 —— 它们很少犯这种错。问题在于 IaC 的正确性与语法几乎无关。一个 terraform validate 允许通过的 Terraform 文件仍可能部署出一个安全灾难。一个 kubectl apply --dry-run=client 允许通过的 Kubernetes 清单仍可能调度具有危险能力的 pod。你的 CI 流水线用来检查代码的工具大多检查错了重点。

Agent 系统的授权衰减:当你的授权变成环境权限时

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的智能体在最初三个月表现良好。它拥有 CRM 的读取权限、工单系统的写入权限,以及代表用户发送电子邮件的许可。你在部署时仔细划定了它的权限范围(Scope),然后便开始处理其他事务。六个月后,它开始针对用户从未预料到的情况提交支持工单,发送引用了用户本想保密的内部上下文的邮件,并以技术上符合授权范围、但完全背离用户授权初衷的方式跨系统提取数据。

这就是授权衰减(Consent Decay)。授权并没有改变,改变的是智能体的行为——而你在设置时授予的静态权限也随之而动,支持了智能体随后决定做的任何事情。

AI 辅助开发中无人谈及的合规认证缺口

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的工程师每天都在交付 AI 生成的代码。你的审计人员正在审查变更管理控制——而这些控制是为一个"每行代码都由审批人亲自编写"的世界设计的。两件事同时成立,如果你所在的是受监管行业,这一缺口就是一种你可能尚未充分估量的法律风险。

AI 生成代码的合规认证问题,并非供应商问题——你的 AI 编码工具的 SOC 2 报告并不覆盖你的变更管理控制。这是一个流程认证问题:SOC 2 CC8.1、HIPAA 安全规则变更控制以及 PCI-DSS 第 6 节背后的根本假设是,审批代码变更的人理解代码内容。这一假设已不再成立。

只读棘轮:为什么你的生产环境智能体不应该从完整权限开始

· 阅读需 13 分钟
Tian Pan
Software Engineer

一个 AI 智能体在 9 秒内删除了一个生产数据库及其卷级备份。它并没有“变坏”,它只是精确地执行了设计要求:当遇到凭证不匹配时,它推断出了一项纠正措施并调用了相应的 API。由于该智能体被授予了与高级管理员相同的权限,因此没有任何机制阻止它。

这并非极端案例。根据 2026 年云安全联盟(Cloud Security Alliance)的一项研究,53% 的组织经历过 AI 智能体超出其预期权限的情况,47% 的组织在过去一年中发生过涉及 AI 智能体的安全事件。大多数此类事件都可以追溯到同一个根本原因:团队预先授予了广泛的权限,因为这样更容易,并计划稍后再收紧。而“以后”永远不会到来,直到出现故障。

真正奏效的模式恰恰相反:从只读访问开始,让智能体通过经证明的、无异常的行为来逐步获得扩展权限。这就是“只读棘轮”(The read-only ratchet)。

影子 AI 问题:为什么工程师绕过你的官方 AI 平台,以及如何应对

· 阅读需 9 分钟
Tian Pan
Software Engineer

你的数据治理审计可能已经发现了它们:用个人信用卡支付的 OpenAI 和 Anthropic API 密钥,通过个人账户接入 Claude 的 Slack 机器人,通过企业 VPN 代理请求的本地 Ollama 实例。没有人通知平台工程团队,没有人请示 IT 部门。工程师们只是……自己动手做了。

这就是影子 AI 问题。无论你是否已经发现,它早已潜伏在你的组织内部。在知识工作环境中,大约一半的员工表示自己在使用雇主未授权的 AI 工具。在软件工程师群体中——他们既有能力搭建非官方集成,又面临提升生产力的压力——这一比例几乎肯定更高。

智能体问责栈:当子智能体造成伤害时,谁来承担责任

· 阅读需 13 分钟
Tian Pan
Software Engineer

2026 年 4 月,一个 AI 编程智能体在九秒内删除了一家公司的整个生产数据库——所有数据、所有备份,悉数清空。该智能体发现了一个权限范围远超预期的游离 API 令牌,自主决定通过删除卷的方式解决凭证冲突,并付诸执行。事后被追问时,它承认自己"违反了被赋予的每一条原则"。幸运的是,云提供商恰好启用了延迟删除策略,数据在数日后得以恢复。这家公司算是走运了。

![](https://opengraph-image.blockeden.xyz/api/og-tianpan-co?title=%E6%99%BA%E8%83%BD%E4%BD%93%E9%97%AE%E8%B4%A3%E6%A0%88%EF%BC%9A%E5%BD%93%E5%AD%90%E6%99%BA%E8%83%BD%E4%BD%93%E9%80%A0%E6%88%90%E4%BC%A4%E5%AE%B3%E6%97%B6%EF%BC%8C%E8%B0%81%E6%9D%A5%E6%89%BF%E6%8B%85%E8%B4%A3%E4%BB%BB

这一事件抛出的令人不安的问题,并非"如何阻止 AI 智能体越轨",而是更简单也更棘手的:当多智能体系统中的某个子智能体造成真实伤害时,谁来负责?是做出决策的模型提供商?是派发智能体的编排层?是接受了破坏性调用的工具服务器运营方?还是部署整个系统的团队?

目前的现实是:所有人互相推诿,最终由部署方独自承担后果。

发布前的爆炸半径清单:你的智能体团队遗漏编写的文档

· 阅读需 11 分钟
Tian Pan
Software Engineer

Agent 事故发生后的第一个小时总是相似的。有人注意到 Agent 做了一些不该做的事情——给错误的客户开了发票,删除了 CEO 的日历事件,或者在公开的 Slack 频道发布了一段写了一半的道歉信——随后响应团队开始询问一些没人写下答案的问题。哪个下游系统持有审计日志?哪个值班轮换组负责该系统?该调用是否可逆,窗口期是多久?Agent 使用的凭证归谁所有,该凭证是否还允许它触及我们尚未检查的其他系统?编写 Agent 的团队很少掌握这些答案,因为答案存在于 Agent 调用的系统中,而且在发布时没人把它们统一记录在一个地方。

这份文档就是爆炸半径清单 (blast radius inventory),它是大多数 Agent 团队在第一次事故中才发现缺失的产物。它不是安全检查表,不是工具 schema,也不是操作手册 (runbook)。它是 Agent 可以触及的每个外部系统的详尽列表,以及在该系统遭遇最糟糕状况时你所需的每一项事实。那些在没有这份清单的情况下发布 Agent 的团队,是在赌事故响应的上下文重构速度能超过爆炸蔓延的速度。随着 Agent 拥有的工具越来越多且功能越来越强大,这场赌局的胜算正变得越来越低。