[控场AI]
· 4 分钟阅读· 2,379 字

Snyk专家:AI代理工具链成安全最薄弱环节

Snyk专家:AI代理工具链成安全最薄弱环节

Snyk 专家警示:可达性分析成本高昂,AI 代理工具链是当前最弱安全点。

Snyk 的 Randall Degges 在访谈中指出,安全行业正从“发现更多漏洞”转向“更准地判断风险”。传统 SCA 工具会列出依赖中的所有已知漏洞,但大量告警实际不可达;可达性分析通过判断脆弱函数是否被业务代码真正调用,能有效削减噪音,但其代价是需要构建调用图、理解动态分派与运行时行为,上下文采集成本远高于版本比对。Degges 认为,能否低成本获取高质量上下文是安全工具竞争的分水岭。他更尖锐的判断落在 AI 代理上:代理调用的插件与 MCP 服务器普遍存在权限粗糙、输入校验缺失、供应链来源不明的问题,是行业当前最弱的安全环节。他建议团队优先修复可达漏洞、将代理工具纳入供应链审计,并遵循最小权限原则。

Snyk's Randall Degges 访谈

AI 代理(Agent)正在成为软件开发流程中的常客,但安全社区开始注意到一个尴尬的事实:这些代理所调用的工具链,可能正是当下最脆弱的安全环节。Snyk 的 Randall Degges 在近期一次访谈中,围绕可达性分析(reachability analysis)、上下文获取的成本,以及 AI 代理工具的安全性,给出了一个值得开发者警惕的判断。

可达性分析:知道漏洞“真的能被打到”要付出什么

传统软件成分分析(SCA)工具会列出项目依赖中所有已知漏洞,但大量告警其实是“理论上存在、实际不可达”的噪音。Degges 强调的可达性分析,核心是判断某个漏洞函数是否真的会被业务代码调用——如果能证明调用链不可达,团队就可以安全地忽略这条告警。

这个能力听起来很美,代价却不低。要做出可靠的可达性判断,工具需要深入理解项目的调用图、动态分派、反射调用甚至运行时行为,构建这些上下文的工程复杂度和计算成本都远超简单的版本比对。Degges 的潜台词是:安全团队为“减少误报”支付的隐性成本,往往被低估了。对企业来说,关键不是追求漏洞清零,而是把有限的修复资源投到真正可达的风险上。

软件成分分析(SCA) 是 DevSecOps 中的基础环节,它通过解析项目的依赖清单(如 package.json、pom.xml)并与漏洞数据库(如 NVD、GitHub Advisory)比对,识别出存在已知漏洞的第三方组件。SCA 的优势在于自动化程度高、覆盖面广,但它的根本局限是“只看版本、不看用法”:只要某个依赖的版本落在受影响区间,就会被标记为风险,即便该依赖中的脆弱函数从未被业务代码调用。这正是告警疲劳的主要来源之一。可达性分析可以看作 SCA 的精细化延伸,它在版本匹配的基础上叠加调用链分析,把“存在漏洞”收敛为“漏洞可被触发”,从而显著提升告警的信噪比。业界如 GitHub 的 dependency graph、Snyk 自身的 reachability 功能,都在朝这个方向演进。

调用图(Call Graph) 是可达性分析的技术基石,它把程序中函数之间的调用关系建模为有向图,从入口点出发沿边遍历,即可判断某个脆弱函数是否处于可达路径上。难点在于,静态构建精确调用图在真实工程中几乎不可能:面向对象语言的动态分派需要类型推断,反射、依赖注入、回调注册等机制会让调用目标在编译期不可知,JavaScript 等动态语言更是把这种不确定性放大。工程上通常采用静态分析与运行时插桩相结合的混合方案,并接受一定的漏报与误报。这也解释了为什么可达性分析的计算成本远高于版本比对——它本质上是把程序分析的能力嵌入了安全扫描流程。

上下文的代价:为什么“知道真相”这么贵

访谈标题里“what it costs to know a vulnerability is real”指向一个更深层的问题:确认漏洞的真实可利用性,需要大量上下文——依赖版本、调用路径、配置、运行时环境,缺一不可。上下文越完整,判断越准,但采集和维护上下文的成本也水涨船高。

这也是当下安全工具竞争的分水岭。能低成本获取高质量上下文的厂商,才能给出可信的可达性结论;而只能做静态版本匹配的工具,注定继续制造告警疲劳。Degges 的观点实际上在提醒采购方:评估安全产品时,不应只看它报了多少漏洞,而要问它凭什么判断这些漏洞是真的。

AI 代理的工具链:行业当前最弱的安全点

Degges 最尖锐的判断落在 AI 代理上。代理本身的能力取决于它能调用哪些工具——读写文件、执行命令、访问网络、操作代码仓库。这些工具往往以插件或 MCP(Model Context Protocol)服务器的形式接入,权限配置粗糙、输入校验缺失、供应链来源不明的问题相当普遍。

一个被污染的第三方工具,或一个过度授权的工具接口,就可能让代理在用户不知情时执行危险操作。相比传统应用,代理工具链的暴露面更大:它既要信任模型输出,又要信任工具实现,而这两者都可能被攻击者影响。Degges 的提醒很直接——在给代理开放权限之前,先像审计生产依赖一样审计它的工具。

MCP(Model Context Protocol) 是 Anthropic 于 2024 年底提出的开放协议,用于标准化 AI 应用与外部工具、数据源之间的连接方式。在 MCP 架构下,模型侧作为客户端,通过统一接口调用各类 MCP 服务器暴露的工具(如文件读写、数据库查询、命令执行)。这种设计极大降低了代理接入外部能力的门槛,但也带来了新的攻击面:第三方 MCP 服务器来源难以验证、工具描述可能被恶意篡改以诱导模型调用(即“工具投毒”)、服务器本身可能获得超出预期的系统权限。由于 MCP 生态尚处早期,缺乏成熟的签名、权限声明与审计规范,Degges 所指的“供应链来源不明”问题在 MCP 场景下尤为突出。

对开发团队的实践启示

从这次访谈可以提炼出几条可落地的建议。其一,优先处理可达漏洞,对不可达告警建立可追溯的豁免记录,而不是简单地批量忽略。其二,把代理所使用的工具纳入软件供应链管理,记录版本、来源和权限范围。其三,遵循最小权限原则配置代理工具,避免一个工具同时拥有读代码、写文件和访问外网的权限。

安全行业正在从“发现更多漏洞”转向“更准地判断风险”,而 AI 代理的普及让这个转向更紧迫。Degges 的观察值得每个正在把代理引入研发流程的团队认真对待:工具越强大,越要先弄清楚它被谁信任、又能信任谁。

分享:

相关推荐