CVE-2026-41197: Noir Brillig: subalocação de arrays aninhados em chamadas externas corrompe o heap
A CVE-2026-41197 afeta a toolchain da linguagem Noir quando o bytecode Brillig é gerado para chamadas externas que retornam arrays aninhados de tipos compostos, como tuplas. A alocação de memória para arrays aninhados usa a quantidade lógica de elementos em vez do número de slots semi-achatados, o que subaloca o heap e pode corrompê-lo. O aviso do GitHub registra pontuação CVSS 4.0 de 9.3 e informa que a versão 1.0.0-beta.19 corrige o problema.
Visão geral
O Noir é uma linguagem específica de domínio para sistemas de prova SNARK, e o Brillig é o bytecode usado para não determinismo. Segundo o aviso do GitHub, quando o compilador gera código Brillig para uma chamada externa que retorna arrays aninhados, ele aloca memória no heap para esses arrays usando o comprimento lógico, e não o tamanho semi-achatado. Isso é relevante quando o tipo do elemento é composto, como uma tupla.
Impacto
- Chamadas externas que retornam arrays aninhados de tuplas ou de outros tipos compostos podem subalocar memória no heap.
- O aviso afirma que isso corrompe o heap da VM Brillig. O registro não detalha o comportamento resultante, como se há impacto na validade das provas ou apenas na corretude do programa.
- O vetor CVSS 4.0 do registro indica alto impacto em confidencialidade, integridade e disponibilidade, sem necessidade de privilégios ou interação do usuário, com pontuação de 9.3 publicada pelo CNA.
Produtos e versões afetados
A lista estruturada de afetados no registro está vazia, portanto nenhum intervalo de versões é confirmado pelos dados. A descrição informa que a versão 1.0.0-beta.19 corrige o problema. Versões anteriores da toolchain do Noir provavelmente são afetadas, mas o intervalo exato é desconhecido com os dados disponíveis. Consulte o aviso de segurança do GitHub para o intervalo oficial.
Status de exploração
O registro indica que a vulnerabilidade não consta no catálogo KEV da CISA. Nenhuma exploração confirmada aparece nas fontes consultadas para esta análise.
Correção e mitigação
- Atualize a toolchain do Noir para a versão 1.0.0-beta.19 ou posterior, conforme as notas de lançamento.
- Revise projetos que usam chamadas externas com retorno de arrays aninhados de tipos compostos e priorize a recompilação com a toolchain corrigida.
- Até concluir a atualização, evite depender de resultados de chamadas externas formados por arrays aninhados de tuplas em fluxos de prova sensíveis ou em produção.
Orientações de detecção
- Faça o inventário das versões da toolchain do Noir nos ambientes de desenvolvimento e de build.
- Identifique programas que combinam chamadas externas com retornos de arrays aninhados contendo tuplas ou outros elementos compostos.
- Observe falhas inesperadas, erros de memória ou saídas inconsistentes na execução Brillig, que podem indicar corrupção do heap.
Limitações das informações disponíveis
O registro não lista versões afetadas, detalhes de CWE além do identificador, nem evidências de exploração. Os campos de EPSS e SSVC estão presentes, mas não alteram a descrição técnica. O status da fonte está registrado como Deferred, e as páginas do NVD e do CVE.org listadas no registro não acrescentaram detalhes técnicos adicionais.
Perguntas frequentes
Qual é a causa raiz da CVE-2026-41197?
Segundo o aviso, a alocação para arrays aninhados em resultados de chamadas externas usa a quantidade lógica de elementos em vez do tamanho semi-achatado em slots, o que subaloca memória quando os tipos dos elementos são compostos.
Qual correção resolve o problema?
O registro informa que a versão 1.0.0-beta.19 do Noir corrige o problema, e a tag de lançamento consta nas referências.
Esta análise foi redigida com auxílio de IA a partir de dados verificados das fontes e checada automaticamente contra eles.