Pesquisadores da Endor Labs anunciaram em 30 de junho de 2026 a descoberta de um zero-day na biblioteca Rust buffa, mantida pela Anthropic, que permite a atacantes provocar negação de serviço por amplificação de memória. A falha, rastreada como CVE-2026-55407, faz com que uma entrada pequena force uma alocação de heap cerca de 22 vezes maior, suficiente para derrubar processos cujo limite de memória está bem acima do tamanho de qualquer entrada legítima.

O que é a biblioteca buffa

A buffa é uma biblioteca de serialização protobuf escrita em Rust, desenvolvida pela Anthropic — a mesma empresa que constrói modelos de fronteira como as séries Mythos e Fable. Por ser código Rust revisado com assistência de modelos de linguagem, costuma ser tratada como referência de prática segura. A descoberta mostra que mesmo linguagens consideradas memory-safe não estão imunes a falhas de lógica de alocação, especialmente em caminhos de compatibilidade que processam dados não confiáveis.

Como o ataque se concretiza

O bug vive na função decode_unknown_field, no arquivo buffa/src/encoding.rs (linha 496). O fluxo é o seguinte: a função lê um valor de comprimento (len) diretamente dos dados do wire format, sem impor qualquer limite superior além do que cabe em um usize. Em seguida, ela aloca um Vec<u8> com esse tamanho. Como o atacante controla o conteúdo do buffer, ele pode especificar um len arbitrariamente grande, forçando uma alocação massiva que esgota a memória do processo.

O motor de AI SAST da Endor Labs rastreou esse fluxo de dados estágio por estágio — desde o parsing do varint na linha 491 até o sink de alocação na linha 496 — e identificou a ausência de bound entre o tamanho do campo e o limite do buffer. A amplificação de aproximadamente 22 vezes significa que poucos quilobytes de entrada podem consumir centenas de megabytes de heap. A biblioteca é afetada quando gerada com preserve_unknown_fields=true, que é o valor padrão — ou seja, qualquer mensagem decodificada de entrada não confiável passa por esse caminho vulnerável.

Versões afetadas e correção

Pacote Ecosystem Versões afetadas Versão corrigida
buffa Rust < 0.8.0 0.8.0
connectrpc Rust < 0.8.0 0.8.0

A falha recebeu classificação CVSS 4.0 de 6,3 (Moderate), pois o impacto depende de a aplicação expor a decodificação a entradas externas. Serviços que aceitam mensagens protobuf de clientes não autenticados estão mais expostos. Esse padrão — uma dependência aparentemente segura que esconde uma falha lógica — é o mesmo tipo de risco que vimos em pacotes sequestrados que comprometem desenvolvedores, e reforça a necessidade de varredura contínua da cadeia de suprimentos.

Como se proteger

A correção imediata é atualizar buffa e connectrpc para a versão 0.8.0 ou superior e regenerar o código protobuf. Para aplicações que não podem atualizar imediatamente, desabilitar preserve_unknown_fields (quando compatível com o esquema) reduz a superfície de ataque, já que o caminho vulnerável só é percorrido quando essa opção está ativa.

Implemente limites rígidos de tamanho de mensagem na camada de rede antes da decodificação protobuf, e monitore o consumo de memória dos processos que consomem buffa. Equipes de AppSec devem avaliar ferramentas de SAST orientadas por IA, como a da Endor Labs, que detectam fluxos de dados perigosos em linguagens memory-safe — onde ferramentas tradicionais de pattern-matching costumam falhar. Para entender melhor o cenário desses ataques de exaustão de recursos, vale revisar nosso material sobre técnicas de negação de serviço e defesa.

Fontes