Vulnerabilidade Brotli no Claude Code: atualizar Node não basta

Atualize o executável do Claude Code e os runtimes separados de Node.js ou Bun, confira a instalação ativa e audite imagens de CI sem tratar o número da versão do Claude como prova de correção do decodificador.

Conteúdo
Vulnerabilidade Brotli no Claude Code: atualizar Node não basta

Diante do alerta de vulnerabilidade Brotli no Claude Code, atualize o executável que você realmente usa, reinicie o cliente e aplique separadamente as atualizações de segurança ao Node.js ou Bun usado por outras ferramentas. Atualizar o Node.js do sistema não substitui o runtime — o ambiente de execução — embutido no Claude Code, inclusive no executável nativo fornecido pelas instalações atuais via npm. Em 2026-10-23, a nota da Anthropic para a versão 2.1.308 não confirma uma correção do Brotli, portanto esse número de versão, sozinho, não basta para concluir uma avaliação de segurança.

Por que agentes que buscam páginas na web exigem atenção

A exposição relevante ocorre quando um processo decodifica dados Brotli controlados por um invasor. Um agente pode encontrar esses dados ao buscar documentação ou extrair conteúdo de um site, antes de o modelo receber qualquer texto legível da página.

CVE-2026-111497 é uma falha de escrita fora dos limites de memória no decodificador Brotli do Google. O registro CVE elaborado pelo Google descreve possíveis vazamentos de memória, negação de serviço e execução de código arbitrário a partir de um fluxo comprimido preparado para explorar a falha. O Google atribui à vulnerabilidade uma pontuação CVSS 4.0 de 9.2, com gravidade crítica (Critical); o boletim de segurança do Node.js classifica seu impacto no Node.js como alto (High).

A documentação de fetch do Bun informa que a descompressão automática de respostas está ativada por padrão e aceita Brotli. Assim, uma ferramenta implementada com fetch() do Bun pode acionar o decodificador quando um servidor retorna Content-Encoding: br.

Isso justifica auditar as ferramentas que buscam conteúdo localmente. Se uma operação específica do Claude Code chega a um decodificador afetado ainda depende de sua implementação e de onde a busca é executada. Um servidor MCP local, um comando de shell e um serviço remoto de obtenção de conteúdo podem usar runtimes diferentes.

Um firewall de aplicações web voltado às requisições recebidas não cobre todos esses caminhos. O boletim da Vercel distingue expressamente as requisições recebidas das respostas que uma aplicação busca: suas proteções de WAF não substituem a correção do runtime que processa essas respostas.

Quais versões têm correção confirmada?

As versões corrigidas do Node.js e do Bun têm respaldo em fontes primárias. A versão mínima proposta para o Claude Code exige confirmação separada.

Em 2026-10-23:

ComponenteVersão com correção confirmadaO que atualizar
Node.js 22.x22.23.4O executável do Node usado por aquela aplicação ou ferramenta
Node.js 24.x24.22.1O executável do Node usado por aquela aplicação ou ferramenta
Node.js 26.x26.12.1O executável do Node usado por aquela aplicação ou ferramenta
Versões oficiais do Bun1.4.4A instalação independente do Bun ou a aplicação que o incorpora
Claude CodeAs fontes oficiais consultadas não estabelecem a primeira versão corrigidaAtualizar o cliente pelo seu canal de instalação e guardar evidências específicas da compilação

O boletim do Node.js de 21 de outubro lista as três versões corrigidas do Node. Compare versões dentro da linha correspondente: uma instalação do Node 24 precisa de 24.22.1 ou de uma versão posterior com a correção, e não apenas de um número maior que 22.23.4. O Node.js 20 não recebe mais essa correção; a Vercel orienta esses usuários a migrar para uma linha com suporte.

A correção do Bun pode ser rastreada até o código da versão publicada. O pull request de Jarred Sumner, já incorporado ao projeto, registra a atualização para Brotli 1.2.1, e o arquivo de dependência na tag Bun 1.4.4 seleciona essa versão corrigida do projeto original. A versão oficial foi publicada em 22 de outubro.

A afirmação específica sobre o Claude vem da publicação de @ryaneshea de 22 de outubro: o autor relatou ter encontrado Bun 1.4.3 no Claude Code 2.1.296 e recomendou 2.1.308 ou posterior. Esse é um relato da comunidade; a correspondência entre essas versões não foi confirmada pela Anthropic.

A nota da Anthropic para 2.1.308 menciona apenas correções de bugs e melhorias de confiabilidade. Seu histórico de alterações também lista 2.1.309, mas não fornece a confirmação que falta sobre Bun ou o patch de Brotli em 2.1.308. Atualize o quanto antes e registre separadamente os resultados “cliente atualizado” e “correção do decodificador embutido confirmada”.

Atualize a instalação do Claude Code que você realmente usa

Identifique a instalação ativa antes de alterá-la. Atualizar uma cópia não ajuda se o terminal, o editor ou o runner de CI — executor de tarefas — continuar iniciando outra.

Em Bash, execute:

type -a claude
claude --version
claude doctor

type -a lista aliases de shell, funções e caminhos dos executáveis encontrados. A referência da CLI descreve claude doctor como um diagnóstico somente de leitura da instalação e das configurações, que não inicia uma sessão.

Salve seu trabalho e encerre as sessões existentes do Claude Code antes de substituir o executável. Escolha o procedimento de atualização correspondente à sua instalação.

Instalação nativa

Execute em Bash:

claude update

O atualizador respeita autoUpdatesChannel e as restrições de versão aplicáveis. Portanto, quando ele informa que a instalação está atualizada, isso pode significar apenas que ela está na versão mais recente permitida pela configuração.

Para instalações nativas, as configurações do canal de versões distinguem latest do canal stable, que recebe as versões com atraso. Verifique /config → Auto-update channel; a configuração pessoal fica em ~/.claude/settings.json. Em implantações gerenciadas centralmente, atualize de forma coordenada a versão implantada e sua política de atualização.

Instalação via npm

Atualize uma instalação gerenciada pelo npm em Bash:

npm install -g @anthropic-ai/claude-code@latest

As instruções atuais de instalação via npm exigem Node.js 22 ou posterior para instalar o pacote, que fornece o mesmo binário nativo do instalador independente. Use uma versão corrigida do Node da tabela acima. A documentação recomenda o comando explícito de instalação em vez de npm update -g, que pode manter o pacote dentro de uma faixa de versões mais antiga.

Para Homebrew, use brew upgrade claude-code ou brew upgrade claude-code@latest, conforme o cask instalado. Para WinGet, execute winget upgrade Anthropic.ClaudeCode em PowerShell. Esses métodos têm suas próprias regras de atualização pelo gerenciador de pacotes.

Quando a atualização correspondente terminar, abra um novo terminal. Em Bash, confira:

hash -r
command -v claude
claude --version
claude doctor

A versão deve corresponder à que você pretendia instalar, e o comando encontrado deve apontar para a instalação desejada. Se command -v identificar uma função ou um alias, examine a saída anterior de type -a para descobrir o que essa entrada inicia.

Reinicie separadamente as sessões integradas ao editor e as que funcionam sem supervisão. Conferir um executável recém-iniciado no terminal não comprova que um processo antigo foi substituído.

Se a atualização falhar ou a versão antiga continuar ativa

Escolha a correção com base no sintoma observado. O guia de solução de problemas de instalação da Anthropic documenta conflitos entre instalações, falhas de atualização e binários ausentes após a instalação via npm.

SintomaVerificação e ação corretivaComo confirmar
A atualização termina, mas claude --version ainda mostra a versão antigaUse type -a claude e which -a claude para localizar instalações concorrentes. Corrija o inicializador ou a entrada de PATH que ainda seleciona a cópia antiga.Abra um novo terminal e confira novamente o comando encontrado e sua versão.
Um inicializador personalizado ~/.local/bin/claude ainda abre uma versão antigaExamine seu destino. O atualizador nativo preserva inicializadores personalizados, portanto atualize também a versão selecionada por ele como parte da implantação.Confira a versão por meio desse inicializador, e não apenas executando o binário recém-baixado.
Error: claude native binary not installed.Verifique se o npm omitiu dependências opcionais ou não executou o script postinstall. Restabeleça as etapas necessárias e reinstale o pacote.claude --version é executado com sucesso.
Auto-update failed · Run claude doctorExecute claude doctor e investigue a falha de instalação ou download informada. Siga a seção correspondente do guia.Execute novamente o atualizador adequado e confira a versão pretendida em um novo processo.

Se o atualizador não encontrar uma versão permitida mais recente, verifique o canal de versões e o limite máximo imposto pela administração antes de considerar o trabalho concluído. Uma verificação bem-sucedida da instalação comprova que o programa inicia; ela não testa a vulnerabilidade do Brotli.

É possível verificar a versão do Bun embutida no Claude Code?

Os comandos documentados do Claude identificam a versão da aplicação e o estado da instalação. A documentação da CLI consultada não descreve um comando oficialmente suportado para exibir a versão do Bun embutido.

Executar bun --version verifica um executável separado do Bun que está no PATH. Da mesma forma, consultar a versão de um processo Node do sistema informa qual Node aquele processo usa. Nenhuma dessas medições identifica o runtime compilado dentro do Claude Code.

O Bun documenta BUN_BE_BUN=1 para executáveis independentes. Porém, esse recurso não está documentado como diagnóstico do Claude Code, e a issue #24575 de kk-mats sobre o Claude Code relata um comportamento que depende da versão. Não pressuponha que ele seja uma verificação de segurança confiável para instalações do Claude.

O manifesto publicado do Claude Code 2.1.308 contém informações de versão, compilação, plataforma e somas de verificação, mas não a versão do componente Bun. O procedimento da Anthropic para verificar o manifesto assinado pode comprovar que um binário corresponde à versão do fornecedor. Para confirmar a correção do decodificador, também são necessárias evidências sobre os componentes ou patches vinculados àquele artefato.

Em uma revisão de segurança da equipe, registre a versão do Claude, a plataforma, a origem da instalação, o executável em uso e sua soma de verificação. Solicite confirmação ao fornecedor para aquela versão e plataforma exatas se precisar atestar a correção do runtime embutido. Até obter essa evidência, registre “cliente atualizado; correção do runtime embutido não verificada” e suspenda as buscas afetadas de conteúdo não confiável executadas sem supervisão quando sua avaliação de exposição exigir.

Verifique as máquinas da equipe, os contêineres e os runners de CI

Execute o inventário dentro de cada ambiente que realmente realiza tarefas do agente. Os resultados do notebook de um desenvolvedor não descrevem um contêiner, a conta de um runner hospedado pela própria equipe ou um servidor MCP implantado separadamente.

Use este bloco de Bash em uma tarefa existente de gerenciamento de máquinas ou em uma etapa de CI:

set -u
uname -srm
id -un

for tool in claude node bun; do
  if executable=$(type -P "$tool"); then
    printf '%s\t%s\t' "$tool" "$executable"
    "$executable" --version || exit 1
  else
    printf '%s\tNOT_FOUND\n' "$tool"
  fi
done

A saída identifica o sistema operacional, o usuário que executa o processo e o executável selecionado no PATH para cada ferramenta, seguido de sua versão. NOT_FOUND é um resultado de inventário: uma instalação nativa do Claude não exige a existência de um comando Bun separado.

O script não declara que a instalação passou em uma verificação de segurança (PASS). Compare os resultados do Node e do Bun independente com as versões corrigidas confirmadas e avalie separadamente as evidências do artefato do Claude. O type -P do Bash procura caminhos de executáveis; wrappers de shell e executáveis selecionados explicitamente na configuração precisam de inspeção própria.

Para atualizar os ambientes da equipe:

  1. Confira o ambiente de execução. Execute o bloco como o usuário do serviço, dentro do contêiner final ou do ambiente do runner, após a configuração habitual de PATH. Inspecione separadamente os caminhos dos executáveis usados por servidores MCP, processos que usam um SDK e integrações do editor.
  2. Atualize a definição de build ou implantação. Substitua as versões afetadas de Node/Bun e a instalação do Claude. Reconstrua as imagens para que uma camada antiga de instalação em cache não preserve o executável anterior.
  3. Substitua as cargas de trabalho em execução. Recrie os contêineres e reinicie runners ou serviços que ainda executam a instalação antiga. Repita o inventário em uma nova carga de trabalho e guarde o digest da imagem junto dos resultados.
  4. Confira um fluxo de trabalho habitual. Confirme que o ambiente atualizado ainda conclui a operação da ferramenta de que sua equipe precisa. Registre isso como uma verificação de compatibilidade, separada das evidências sobre a correção do decodificador.

Para uma instalação independente do Bun gerenciada pelo próprio Bun, execute em Bash o comando de atualização documentado na versão:

bun upgrade
bun --version

Isso atualiza aquela instalação do Bun. Uma aplicação que incorpora o Bun precisa de uma compilação atualizada da própria aplicação.

Gateways de API personalizados também exigem atualização do cliente

Um ANTHROPIC_BASE_URL personalizado muda o destino da API; ele não substitui o executável local do Claude Code. Mantenha o cliente atualizado mesmo quando as requisições pelo gateway estiverem funcionando.

O histórico oficial de alterações do Claude Code documenta duas correções distintas de compatibilidade com gateways:

  • 2.1.305: corrige uma regressão de 2.1.304 que podia fazer todas as requisições falharem quando Vertex, Bedrock ou outro endpoint ou gateway rejeitava a busca de ferramentas, incluindo configurações que proibiam ToolSearch ou o omitiam de --tools. Agora o cliente tenta novamente sem essa busca.
  • 2.1.307: deixa de enviar o cabeçalho beta prompt-caching-scope por gateways com ANTHROPIC_BASE_URL personalizado e no Foundry, onde ele não tem efeito.

Depois da atualização, repita o pequeno fluxo de trabalho pelo gateway que antes falhava. Se a falha continuar, investigue a resposta e a configuração do endpoint com o cliente atual: uma afirmação sobre a correção do Brotli não explica todo erro de gateway. Uma requisição bem-sucedida confirma a compatibilidade daquele fluxo, enquanto a avaliação da correção do runtime embutido continua sendo uma verificação separada.

Quer otimizar seu fluxo de trabalho com LLMs?

Conecte modelos por uma única API, gerencie chaves e controle os gastos com IA.

Começar grátis