AnthropicBuffaRust库0Day漏洞可引发拒绝服务攻击"

admin 2026-10-18 19:48:10 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

Anthropic Buffa Rust库0Day漏洞可引发拒绝服务攻击

FreeBuf

2026年7月2日 18:00
上海

在小说阅读器读本章

去阅读

Anthropic 基于 Rust 语言的 protobuf 实现库 buffa 被发现存在 0Day 拒绝服务(DoS)漏洞,攻击者可通过控制输入触发无限制堆内存分配。

该漏洞编号为(CVE-2026-55407)和 GHSA-f9qc-qg88-7pq5,影响 buffa 和 connectrpc 0.8.0 之前版本,CVSS 评分为 4.0/6.3(中危)。但根据实际部署架构,其影响可能升级为高危或严重级别。

Part01

漏洞发现过程

Endor Labs 的 AI SAST 引擎在分析 buffa 代码库时,于未知字段解码器中发现了可疑数据流。在 decode\_unknown\_field 函数中,长度值直接从不受信任的 protobuf 线数据解析,转换为 usize 类型后用于分配 Vec,除基本类型限制外未设置明确上限。

Part02

漏洞技术细节

虽然防护机制确保缓冲区至少包含 len 字节以防止越界读取,但未对分配本身进行约束,使得攻击者可通过提交超大长度分隔字段强制进行大规模堆分配。初步分析显示输入大小与堆使用量存在约 2 倍放大效应,这在严格输入限制下通常可控。

但进一步追踪 WireType::StartGroup 处理分支时,发现了更危险的放大向量。该分支解码器会循环处理嵌套未知字段直至遇到匹配的 EndGroup 标签,将每个解码字段推入基于 Vec 的 UnknownFields 结构。由于线路上最廉价的嵌套字段仅需 2 字节编码,却会导致约 40 字节堆分配及增长开销,精心构造的组可将较小输入扩展为巨大的内存结构。

Part03

漏洞验证

Endor Labs 的概念验证显示,包含数百万个最小 varint 字段的 64 MiB protobuf 负载可使堆使用量激增至约 1.4 GiB,达到输入大小的 22 倍。在内存限制为 256 MiB 的 Docker 容器中解码此类消息时,进程会因退出代码 137 被终止,证实存在内存耗尽型 DoS。

Part04

影响范围与修复方案

该漏洞路径可通过 buffa 默认解码 API(包括 Message::decode 和 decode\_from\_slice)触发,这意味着任何启用 preserve\_unknown\_fields(默认开启)解码不受信任 protobuf 消息的服务都可能受影响。Anthropic 已在 buffa 和 connectrpc 0.8.0 版本中发布修复,实现了可配置的每消息未知字段限制,将最大分配开销控制在数十兆字节内。

对于无法立即升级的环境,可通过设置 preserve\_unknown\_fields=false 重新生成代码作为缓解措施,这将关闭未知字段保留功能。此案例表明,仅依赖输入大小限制并不足够,因为组放大路径可能将看似安全的消息大小转化为致命的内存分配。

参考来源:

Anthropic's Buffa Rust Library 0-Day Vulnerability Enables DoS Attack

https://cybersecuritynews.com/anthropics-buffa-rust-library-0-day-vulnerability-enables-dos-attack/

推荐阅读

电报讨论


人工智能OPC政策落实指南来袭・第一期要素支撑篇" 网络安全文章

人工智能OPC政策落实指南来袭・第一期要素支撑篇"

本文概述了武汉市人工智能OPC创新发展政策落实指南的要素支撑篇,主要面向OPC创业者介绍重点研发计划创新专项申报流程、算力服务券申领方法及国际经贸需求审批指南。因原文核心攻略以图片形式展示,文本本身仅起引导作用,缺乏实质性技术细节与深度分析,可作为了解武汉人工智能产业扶持政策及申报入口的简单参考。
车载软件冷启动慢在哪:Bootloader、EcuM到RTE的全链路耗时拆解" 网络安全文章

车载软件冷启动慢在哪:Bootloader、EcuM到RTE的全链路耗时拆解"

本文深入拆解车载ECU冷启动时间优化问题,指出启动慢是Bootloader、驱动、EcuM、NvM、通信栈到应用的全链路耗时累积结果。文章分析了常见优化误区,如只盯应用层或缺乏profile数据,并提出了先测量、分层预算、重构路径、并行化与回归验证的系统性方法论。核心结论是启动优化需基于依赖关系重构初始化路径,而非简单裁剪代码。
评论:0   参与:  0