AI安全主战场:供应链投毒、模型加载与账户接管
简介:这份Gartner《Predicts 2025》报告面向安全与风险管理负责人、企业安全架构师及AI治理从业者,聚焦AI快速演进下的网络安全新风险与应对思路。内容围绕“AI动荡期”展开,指出AI管道组件清点不足会扩大攻击面,软件供应链与基础设施技术栈中毒到2025年将占企业AI相关恶意攻击的七成以上,并分析早期GenAI受挫、AI代理漂洗、深度伪造与自动化账号接管等趋势。资源包共1个PDF文件,压缩包约215KB,便于快速查阅与内部传阅。已有90人学习,报告还给出审查应用安全实践、优先成果驱动AI项目、预判账号接管新波次及建设AI威胁情报能力等建议,可帮助读者把握Gartner关键预测、梳理AI软件供应链风险清单,并为安全策略立项与防御调优提供参考。
1. 供应链投毒:70% 的恶意攻击绕开了你的推理接口
如果你的团队正在给 AI 应用做安全加固,最可能被漏掉的那块,既不是提示词注入也不是模型越狱,而是构建这些应用时悄悄拉进来的组件。某行业分析机构在其 2025 年度预测报告里给了一个反直觉的数字:到 2025 年底,软件供应链与基础设施技术栈的投毒,将构成针对企业 AI 的恶意攻击的七成以上。
换句话说,AI 安全的主战场不在推理端点,而在构建流水线、开源模型仓库和数据科学笔记本里——那里没有 WAF,没有速率限制,也没有人盯着。一个模型文件下载下来,哈希没人核,来源没人问,加载它的一行pickle.load()却等价于执行任意代码。搞懂这条链路为什么这么容易被下毒、下毒之后为什么又这么难被发现,比再背几个 AI 安全名词有用得多。下面从攻击经济学开始拆。
2. 供应链投毒:为什么改一个依赖比打一百次接口划算
2.1 攻击面重心的迁移:从运行时事务到构建时依赖
先看攻击者的成本结构。攻击一个运行时事务,意味着你要面对鉴权、速率限制、行为基线、WAF 规则,成功一次只拿到一条数据或者一个会话,而且对方一改配置你就得重来。攻击构建时依赖完全不同:你只需要让某个被广泛引用的组件在某个版本里多几行代码,之后每一个拉取它的组织都会自动把恶意逻辑装进自己的生产环境,不需要你再做任何事。
这套逻辑在传统软件领域已经被验证过很多次,AI 栈只是把它放大了一遍,原因有三个。
第一是组件边界模糊。传统应用有明确的锁文件和制品仓库,依赖图可以被静态解析。AI 应用里,「依赖」可能是一个几百 MB 的模型权重文件、一个.ipynb笔记本、一段写在管道定义里的pip install,甚至是一份从公开数据集平台拉下来的 CSV。这些东西大部分不在锁文件里,也不在漏洞库的索引范围内。
第二是 Python 生态的动态性。模型加载、算子注册、插件发现,大量依赖运行时的动态导入和反序列化。一个.pkl、.pt、.joblib文件在文件系统里看起来是数据,在内存里却是可执行的调用序列。安全工具对「数据文件」的默认假设是不执行、不可控,这个假设在 AI 栈里直接失效。
第三是组织对「模型即资产」的认知还停留在业务侧。安全团队清点服务器、清点容器、清点 SaaS 账号,但很少有人清点「我们内部一共用了多少个开源模型、它们分别来自哪里、谁在什么时候下载的」。原文里那句「AI 管道软件组件的不良库存」,说的就是这个状态:不是没有风险,是连风险对象都没登记。
2.2 开源模型与数据科学软件:信任模型里的一个洞
行业反馈里有几个数字值得停下来看:专门做 AI 安全扫描的厂商在客户现场做例行检查时,发现被植入恶意代码的开源模型比例最高达到 1%,同时在被检查的组织里找到了数以千计的受感染数据科学笔记本。
1% 听起来不高,但基数是「所有被下载的开源模型」,而一个中大型组织内部流通的模型数量往往是三位数起步。更要命的是这类感染几乎不可能靠人工审查发现——你不可能逐字节读一个几 GB 的权重文件。
问题的根源在加载路径。下面这段代码是数据科学场景里最常见的模型加载方式:
import pickle # 业务代码里最常见的写法:把模型当成"数据"读进来 with open("downloaded_model.pkl", "rb") as f: model = pickle.load(f) # 这一行的语义不是"解析文件",而是"按文件内容重建对象" # 重建过程中,任何 __reduce__ 返回的可调用对象都会被真实调用pickle的协议本质是一套对象序列化指令集,反序列化就是执行这些指令。一个良性的自定义类可能长这样:
import pickle, os class ModelWrapper: def __init__(self, path): self.path = path # 反序列化时 pickle 会调用这个方法重建对象 def __reduce__(self): # 正常实现会返回 (类名, 构造参数) # 但如果这里返回的是 (某个系统函数, 它的参数),加载即执行 return (os.system, ("echo model loaded",))上面这个例子只打印一行字,但它说明了一个事实:__reduce__的返回值决定了加载时的行为,而这个返回值完全由文件内容控制,与文件名、扩展名、文件大小、甚至与模型是否真的能推理,都没有关系。攻击者可以在一个能正常推理的模型文件里附带这段逻辑,业务侧跑起来毫无异常。
现在主流的缓解手段是换格式,用只存张量的序列化格式替代通用反序列化,加载时只做纯数据解析,不触发任意可调用对象。这条路是对的,但迁移不彻底的组织仍然大量存在历史模型,而新模型从公开仓库流入内网时,格式检查往往没有卡在入口。
提示:判断一个模型文件是否安全,不能看它「能不能加载成功」,要看它「用什么方式加载」。同一份权重,用张量格式加载是数据,用通用反序列化加载就是代码。
2.3 数据管道错误配置:一次性搬空比逐笔偷更划算
除了往组件里塞代码,还有一条更省事的路径:不改任何东西,只利用现成的错误配置。
典型场景是数据管道的凭据过度授权。为了让 ETL 任务跑通,工程侧经常给管道一个覆盖面很宽的服务账号——能读训练数据、能读特征库、能读对象存储的整个桶、能访问日志。这个账号的密钥被写在管道定义文件里、写在笔记本的环境变量单元里、写在容器镜像的构建参数里。任何能读到这些位置的人,拿到的不是一条记录,而是一整条数据供应链。
行业观察里提到攻击者认为「打数据管道比逐笔打运行时事务更有成效」,这句话背后的判断很直白:管道是数据的汇聚点,权限是宽口径的,审计是薄弱的。逐笔交易要绕过的防护,在管道这一层全都不存在。
检测这类问题不需要多复杂的工具,关键是知道该找什么。下面这段扫描逻辑跑在代码仓库上,找的是「笔记本里同时出现凭据和外部网络访问」这种组合:
import re, pathlib # 需要在笔记本/管道定义里关注的三类信号 CRED_PATTERN = re.compile(r"(aws_secret|api_key|token|password)\s*=\s*['\"][^'\"]{8,}") EGRESS_PATTERN = re.compile(r"(requests\.post|urllib\.request|http\.client|socket\.socket)") ENV_DUMP_PATTERN = re.compile(r"os\.environ\b|dict\(os\.environ\)") def scan_notebook(path: pathlib.Path): hits = [] for lineno, line in enumerate(path.read_text(errors="ignore").splitlines(), 1): # 硬编码凭据:管道账号密钥最常见的泄漏形态 if CRED_PATTERN.search(line): hits.append((lineno, "hardcoded_credential")) # 出网调用:笔记本默认允许任意出网,是外泄的主要通道 if EGRESS_PATTERN.search(line): hits.append((lineno, "network_egress")) # 环境变量整体导出:一次把容器里所有密钥打包带走 if ENV_DUMP_PATTERN.search(line): hits.append((lineno, "env_dump")) return hits # 用法:对整个仓库的 .ipynb 和管道定义目录跑一遍 for nb in pathlib.Path("./pipelines").rglob("*.ipynb"): for lineno, kind in scan_notebook(nb): print(f"{nb}:{lineno} -> {kind}")这段代码的价值不在检测精度——它的误报率不低,正常的requests.post会被大量命中——而在于它把「管道里的凭据」和「管道的出网能力」这两件事显式地摆到了一起。真实落地时,第二步是给出网行为建立白名单基线:哪个管道访问哪个域名、哪个存储桶、哪个特征服务,超出基线就告警。这个基线比任何静态规则都有效,因为它描述的是「这个管道正常长什么样」。
还有一个容易被忽略的点:管道定义本身的变更审计。攻击者如果只是改了管道的目的地址,从「写入内部特征库」改成「同时写入一个外部端点」,在数据侧看不出任何异常,在流量侧也只是一条新连接。变更审计加出网白名单,是这类场景里少见的、成本低而见效快的组合。
3. AI 软件成分分析:传统 SCA 在模型仓库前为什么失效
3.1 SBOM 三件套缺了什么
软件成分分析的核心产出是物料清单:包名、版本、许可证、已知漏洞。这套模型是为「库依赖」设计的,它的基本假设是——组件是代码包,由包管理器解析,有唯一的版本标识,能对应到公共漏洞库。
把同样的模型套到 AI 栈上,会立刻出现四个缺口。
第一个缺口是模型。一个模型有来源仓库、有下载时间、有权重哈希、有训练数据血缘、有微调历史,但它没有「版本号」这个概念,也没有公共漏洞库为它建立索引。它是不是「有漏洞的版本」,取决于它有没有被投毒、有没有后门触发模式,而这些信息在传统 SCA 的数据源里根本不存在。
第二个缺口是数据集。训练数据和微调数据的污染是供应链攻击里最隐蔽的一种:模型权重完全正常,行为在绝大多数输入下完全正常,只在特定触发条件下偏移。这类问题不会出现在任何组件清单里,因为数据集通常被当作「输入」而不是「依赖」。
第三个缺口是笔记本和管道定义。.ipynb是 JSON,里面混杂着代码单元、输出结果、元数据;管道定义可能是 YAML、可能是 Python DSL、可能是可视化编排工具导出的配置文件。这些东西在传统 SCA 眼里既不是包也不是制品,直接不在扫描范围内。
第四个缺口是运行时镜像。AI 应用的镜像里往往预装了 CUDA 运行时、推理框架、一堆编译期依赖,体积巨大、层数很深,很多团队只扫基础镜像,不扫上层安装的 Python 环境。
这四个缺口叠加的结果,就是原文里那句「并非所有传统应用安全工具都已进化到能集成 AI 实体的漏洞扫描」。不是工具不好用,是扫描对象不在它的模型里。
3.2 一个能落地的 AI 资产清单数据模型
清点是所有后续工作的前提。没有清单,扫描没有目标,治理没有对象,出事之后也没有回溯的锚点。下面是一个最小可用的清单条目定义,字段不多,但每个字段都对应一个后面会用到的判断:
from dataclasses import dataclass, field from datetime import datetime from typing import Optional @dataclass class AIAsset: asset_id: str # 内部唯一标识,用于关联扫描结果 kind: str # model / dataset / notebook / pipeline / runtime source: str # 下载来源,用于来源信誉评估 digest: str # 内容哈希,用于篡改检测和去重 fetched_at: datetime # 拉取时间,用于"同一来源不同批次"的比对 owner: str # 责任人,出事时的第一联系点 format: Optional[str] = None # 序列化格式,决定是否需要反序列化风险检查 license: Optional[str] = None # 许可证,合规审查用 used_by: list = field(default_factory=list) # 被哪些服务引用,决定影响面 scan_status: str = "pending" # pending / clean / flagged / blocked这几个字段的设计取舍值得说清楚。
digest用内容哈希而不是版本号,是因为模型和数据集没有可靠的版本语义。同一个「版本」在不同时间从同一来源拉下来,内容可能不同;反过来,同一个内容在不同仓库里可能挂着不同的名字。用哈希做身份,才能保证「我审过的就是我部署的」。
source单独成字段,是为了做来源信誉。公开模型仓库、内部制品库、某个同事从网盘转存的文件,这三者的信任等级完全不同,扫描策略也应该不同。很多组织把所有模型都当同等信任处理,结果是既对高危来源扫描不足,又对可信来源做了大量无意义的重复扫描。
format决定了扫描器要跑哪条检查路径。张量格式只需要校验哈希和元数据;通用反序列化格式必须过静态模式匹配加上沙箱加载;笔记本必须解析代码单元做 AST 级检查。把格式信息放进清单,扫描调度才有依据。
used_by是影响面评估的关键。一个被标记为可疑的模型,如果只被一个离线分析脚本引用,处理方式是隔离脚本;如果被三个线上服务引用,处理方式是应急响应。没有这个字段,安全团队拿到告警也不知道该按什么优先级处理。
fetched_at的作用容易被低估。它支持一种很实用的检测:同一来源、不同拉取时间、哈希不同。在模型文件不应该变的前提下,这个差异往往意味着来源侧发生了替换,或者中间环节被劫持。这是少数几个能在投毒生效之前就发出信号的指标。
3.3 三类可判定的投毒信号
清单建起来之后,判定逻辑才有落点。实践中可操作、误报可控的信号大致分三类。
第一类是来源与完整性信号。哈希与上游公布值不一致、来源域名不在白名单、文件大小与元数据声明严重不符、拉取后短期内有内容变更。这类信号不需要理解模型内容,纯靠元数据比对,工程成本最低,应该常态化跑。
第二类是格式与结构信号。通用反序列化格式里出现可疑的全局引用、笔记本里出现子进程调用或环境变量整体导出、管道定义里出现非预期的外部端点。这类信号需要解析文件结构,误报率中等,适合在入库环节做阻断。
第三类是行为信号,也就是沙箱加载。在无网络、只读文件系统、受限权限的隔离环境里加载模型,监控出网尝试、文件写入、子进程创建。这类信号最接近真实威胁,但成本最高,不适合全量跑,适合对来源信誉低的资产或者首次入库的资产做抽样。
三类信号的排序不是随意的:从成本低的开始,用前一类过滤掉大部分正常资产,把昂贵的行为检测留给少数高风险目标。把这三类信号全部堆到全量资产上,结果通常是扫描队列积压、告警疲劳,最后没人看。
4. 账户接管:AI 代理把凭据窃取压进了自动化流水线
4.1 ATO 杀伤链与代理插入点
账户接管不是新问题,它的结构一直很稳定,大致分四段:获取凭据、尝试登录、绕过二次验证、接管会话。变化在于每一段的自动化程度。
获取凭据这一段,传统手段是撞库数据、钓鱼页面、恶意软件窃取。AI 代理在这里的增量是流程编排:把语音合成、对话生成、目标信息收集串成一条流水线,单个攻击者可以同时维护的诱饵数量从个位数上升到三位数。深度伪造语音的作用不是骗过所有人,而是把「这通电话听起来像我们财务」这件事的成功率从很低提到中等,而中等成功率在批量作业下就是可观的绝对数量。
尝试登录这一段,机器人早就实现自动化了,代理带来的变化是自适应:根据响应码、响应时间、页面变化动态调整尝试策略,避开基于固定速率的封禁规则。
绕过二次验证这一段,是代理价值最高的地方。下一节单独展开。
接管会话这一段,自动化体现在横向移动:拿到一个会话后,自动枚举该账号可见的资源、自动尝试同域内的其他服务、自动识别哪些操作有额外验证。这一步以前需要人工判断,现在可以按预设策略跑。
行业预测给出的数字是:到 2027 年,AI 代理会把利用账户暴露所需的时间缩短 50%。这个「时间」值得拆开看——它不是指单次登录尝试变快,而是指从「拿到一份泄露凭据」到「完成有价值操作」的端到端时长。传统流程里,这个时长的大头花在人工判断和工具切换上,而这恰恰是自动化最擅长压缩的部分。
4.2 带外 MFA 的三种失效模式
带外二次验证的设计假设是:攻击者能拿到密码,但拿不到另一个物理通道。这个假设在三种情况下失效。
第一种是一次性口令被截取。短信和邮件通道的可拦截性取决于运营商和邮件服务的实现细节,而用户侧无从判断。代理在这里的作用是提高截取后的利用速度——口令有效期通常是几十秒到几分钟,人工操作经常来不及,自动化的中转链路可以做到秒级。
第二种是推送轰炸。用户被连续推送大量验证请求,直到某一次误触或者出于烦躁点了通过。这个攻击的成本极低,而防御的关键不在技术而在流程:推送请求必须携带足够的上下文(谁在登录、从哪来、访问什么),并且允许用户主动拒绝后触发锁定。只做「点一下通过」的推送,本质上把二次验证降级成了一次确认弹窗。
第三种是实时中继。攻击者不拦截验证码,而是把自己伪装成中间人,让用户在真实页面上完成验证,再把会话令牌转走。这种情况下,验证过程本身完全合法,日志里看不出任何异常。防御的落点在于把凭据绑定到通道:会话令牌与客户端指纹、网络特征、设备证明绑定,令牌被转移到新环境即失效。
这三种模式的共同点是——它们攻击的不是密码,是「验证结果可以被搬运」这个属性。通行密钥这类方案之所以被反复提及,是因为它把验证结果绑定到了具体的设备和源,从密码学层面消除了搬运的可能。但行业观察也说得很清楚:大部分组织的用户侧迁移进展缓慢,弱凭据在可预见的未来仍会大量存在。这意味着防御不能只等新方案普及,得在过渡期里做补偿控制。
4.3 利用时间缩短 50% 背后的时序账
把端到端时长拆成阶段,能更清楚地看到自动化压在哪一段。下面这张表是常见流程的阶段划分和自动化前后的粗略对比,数字是量级示意,用于说明结构而非精确测量:
| 阶段 | 人工主导 | 代理编排 | 压缩来源 |
|---|---|---|---|
| 凭据汇集与去重 | 小时到天 | 分钟级 | 多源数据自动归一、去重、按目标分组 |
| 目标画像与筛选 | 小时 | 分钟级 | 自动匹配登录入口、验证方式、封禁策略 |
| 首次尝试与策略调整 | 分钟到小时 | 秒到分钟 | 响应码驱动的自适应重试 |
| 二次验证绕过 | 分钟(常失败) | 秒级中继 | 通道自动化接管 |
| 接管后资源枚举 | 小时 | 分钟级 | 权限面自动探测 |
这张表透露的判断是:被压缩得最狠的不是「登录」本身,而是登录前后的准备工作。这也解释了为什么单纯加强登录环节的防护,收益没有想象中大——攻击者真正省下来的时间,花在了找到「值得打哪个账号」上。
对应的防御思路也应该跟着移动。与其只盯着登录失败率,不如同时监控几个前置信号:同一批账号在短时间内被多个来源探测、某个账号的登录尝试来自此前从未出现过的网络特征、账号在登录成功后的短时间内访问了大量此前未接触的资源。这些信号描述的是「有人在系统性地准备」,出现得比成功登录更早。
注意:登录成功率高不代表安全。一个被接管但行为温和的账号,在成功率指标上完全正常,异常只体现在访问模式的改变上。建议把「首次访问某资源」「访问速率相对该账号基线的偏移」纳入监控。
5. 避坑与排查:AI 安全落地时最容易翻车的几件事
5.1 清点阶段的坑
现象:安全团队花了两周做 AI 资产清点,产出一份看起来完整的表格,三个月后再看,表里的资产一半已经不用了,同时线上跑着几十个从未出现在表里的模型。
原因:清点做成了项目而不是流程。表格是人工填的,而模型的流入是自动的——工程师从公开仓库拉一个模型做实验,跑通了就直接上服务,中间没有任何环节要求登记。更根本的问题是清点范围按「生产环境」划定,而模型的流转起点通常在个人开发环境。
解决:把清点挂到已有的自动化节点上,而不是新建一个登记动作。制品库的拉取事件、镜像构建的依赖解析结果、管道定义里的模型引用路径,这三个位置能覆盖绝大多数流入路径。清点系统订阅这些事件自动生成条目,人工只负责补owner和used_by两个字段。做不到全自动的话,退一步:把「模型必须从内部制品库拉取」作为硬性要求,外部直连一律阻断。这样清点范围自然收敛到制品库的出入库记录上。
5.2 扫描与判定阶段的坑
现象:上线了模型扫描,告警每天几十条,安全团队逐条核了一遍,发现大部分是「许可证不明确」或者「来源未在白名单」,真正的投毒信号一条没有。两周后没人再看告警了。
原因:把不同性质的检查结果混在一个告警通道里。许可证问题是合规事项,有明确的处理流程和时限;来源不在白名单是策略问题,应该走审批;结构可疑是安全问题,需要立即响应。三类问题混在一起,安全团队被合规噪音淹没,真正的信号被稀释。
解决:按处置动作分流,而不是按严重程度分级。分流规则可以很朴素——需要立即阻断的走阻断通道并直接通知值班;需要人工审批的走工单;纯记录性质的写进清单字段不告警。另外,扫描器的默认策略应该是「未知来源严格、已知来源宽松」,而不是全量一视同仁。对内部制品库的重复扫描大量消耗算力却几乎不产生新信息,把算力省下来给首次入库的外部资产做沙箱验证,性价比高得多。
5.3 判定阈值与统计口径的坑
现象:团队发现某个开源模型的感染比例接近 1%,于是决定对全部模型做深度扫描。扫描跑了两周没跑完,期间新模型持续流入,队列越积越长,最后这个项目不了了之。
原因:把一个比率直接当成了工作量估算。1% 是感染率,不是需要深度扫描的比例。真正需要深度扫描的是「来源信誉低 + 首次入库 + 通用反序列化格式」这个交集,而这个交集在大多数组织里只占总量的很小一部分。全量深度扫描在算力上不可行,在收益上也不划算。
解决:做分级。第一级是元数据校验,全量跑,成本接近零;第二级是结构解析,对非可信来源跑;第三级是沙箱加载,只对前两级有疑点的资产跑。分级的意义不只是省算力,更重要的是让扫描能在有限时间内收敛,产出可解释的结论。另外要把「扫描覆盖率」和「扫描深度」分成两个指标看,只报覆盖率容易造成「全扫过了」的错觉。
5.4 认证侧的坑
现象:组织推行了推送式二次验证,安全评分上去了,但半年内发生了数起账号接管,回溯发现都是用户在大量推送请求中误点了通过。
原因:把「部署了 MFA」当成了终点。推送式验证的安全性完全取决于用户在那个瞬间的判断质量,而设计上没有给用户任何判断依据——推送内容里只有「是否允许登录」,没有来源、没有设备、没有上下文。在疲劳轰炸下,通过是理性选择。
解决:推送内容必须带可判断的上下文,包括登录来源的大致位置、设备类型、访问的目标应用;连续拒绝或长时间未响应要触发临时锁定而不是继续推送;对高权限账号直接禁用推送式验证,改用绑定设备的通行密钥或者硬件令牌。这几条都不涉及新技术,改的是流程设计。
5.5 代理与自动化的坑
现象:上线了一个自动处置代理,负责在检测到可疑登录时自动禁用账号。上线第一个月,误禁了若干正常账号,其中包括两个高权限运维账号,业务侧投诉到管理层,项目被叫停。
原因:把「自动检测」和「自动处置」放进了同一个闭环,中间没有人工确认环节。检测环节的误报率在可接受范围内,但处置动作是不可逆的——禁用账号对业务的影响是即时的,而误判的代价由业务承担。行业观察里提到的那句「过去组织相信过完全自动化的承诺,买回来才发现只有检测没有响应」,说的正是这个结构性问题。
解决:按动作的可逆性分级。可逆动作(加告警标记、限流、要求二次验证、限制高风险操作)可以全自动;不可逆动作(禁用账号、删除资源、阻断网络)必须有人工确认或者设置自动回滚窗口。另外要有抽样复核机制:即使全自动的动作,也定期抽一部分人工看一遍,既校验代理的判断质量,也保留团队对异常的敏感度。这个抽样在生产环境里要一直保留,不能只在测试阶段做。
6. 战术性自动化与全自动代理:12% 这个数字给出的取舍信号
行业观察里有一个数字特别值得琢磨:安全和风险管理负责人对生成式技术的潜力普遍谨慎乐观,但真正取得可衡量成果的只有 12%。与此同时,围绕自动化代理的期望正处在高位,而技术成熟度到稳定产出还有相当长的距离。
这组数据放在一起,指向一个并不悲观的结论:不是 AI 在安全领域没用,而是「有用」发生在很窄的场景里——那些容错率高、结果可验证、失败了容易回退的任务。事件分析的初筛、漏洞优先级的排序、告警的归并与富化,都属于这一类。它们的共同点是不需要 AI 做出最终裁决,只需要把人的注意力引导到更值得看的地方。
反过来,那些被包装成「全流程自动化」的方案,问题往往不在模型能力,而在闭环设计。检测环节的误报是统计上不可避免的,而响应动作的影响是确定且即时的。把两者串成一个无人值守的闭环,等于把统计误差直接放大成业务事故。这也是为什么很多组织在采购之后才发现,落地的是检测,响应那一段仍然要靠人。
我自己的判断标准比较土:看一个 AI 安全能力是否值得投入,先问三个问题——它失败的后果能不能回滚?它的输出能不能被人独立验证?它把人的工作量减少了,还是把人的工作量转移到了审核上?三个问题里有两个答不上来,就先放进实验环境跑,别急着上生产。
这套标准也适用于防御的另一面。当攻击方用代理把凭据窃取和验证绕过串成流水线时,防守方最容易犯的错是追求对等的全自动化。实际上更有效的做法是把自动化用在「让人更快看到关键信息」上,而不是「让人不用看」上。人的判断在可预见的未来仍然是最后一道闸门,把这道闸门设计成低成本、高信息密度的形式,比试图取消它更现实。
从那以后,我每次评估一个 AI 安全方案,都会强制走一遍那个三问清单,并且要求对方给出失败回滚的具体路径——不是「支持回滚」这种描述,而是「哪个动作在多少秒内由谁触发回滚」。问到这个粒度,方案的实际成熟度基本就露底了。希望这些拆解帮到你,尤其是帮你在下一次看到「全自动」「端到端」这类词的时候,多问一句它的闭环边界在哪里。
本文还有配套的精品资源,点击获取