Back to Blog

Novo Bug de Overflow de Inteiros Descoberto no Solana rBPF

Code Auditing
30 de dezembro de 2021
3 min read

Recentemente, nosso sistema de detecção de vulnerabilidades descobriu um problema crítico no rBPF da Solana (ou seja, a máquina virtual onde todos os dApps da Solana são executados: https://github.com/solana-labs/rbpf). Após uma investigação cuidadosa, descobrimos que se trata de um bug de estouro de inteiro que pode ser explorado para derrubar toda a rede Solana. Relatamos o bug à equipe de segurança da Solana, e a equipe imediatamente entrou em ação para confirmar e corrigir o bug. No momento desta publicação, quase todos os nós validadores receberam o patch e foram atualizados para a versão mais recente, o que significa que é seguro fazer uma divulgação pública.

eBPF e rBPF

O Extended Berkeley Packet Filter (eBPF[1]) foi inicialmente desenvolvido para filtrar pacotes no kernel. Devido à segurança, eficiência e escalabilidade do eBPF, ele agora é utilizado em diversas áreas como redes, rastreamento, criação de perfis, etc[2]. Considerando a rica capacidade do eBPF, a Solana o escolheu também como mecanismo de execução para contratos inteligentes. Para construir dApps na Solana, os desenvolvedores precisam desenvolver seus contratos inteligentes em Rust, que serão compilados em bytecode eBPF.

Para hospedar os dApps da Solana, é necessária uma máquina virtual precisa para eBPF. Nesse caso, a Solana utiliza o rBPF, que é uma máquina virtual para eBPF escrita em Rust. No entanto, se a máquina virtual proposta (ou seja, o rBPF) é robusta, segura e precisa, ainda é desconhecido. Caso existam problemas de segurança dentro do rBPF, todos os validadores que contêm o rBPF podem ser afetados, resultando em grandes perdas (por exemplo, ataque DDoS) para toda a rede Solana.

A causa raiz do bug

Desenvolvemos uma ferramenta para localizar bugs no rBPF. Essa ferramenta ainda está em desenvolvimento ativo. Durante esse processo, um problema sério foi identificado no rBPF (versão 0.2.16), que pode derrubar toda a rede.

Especificamente, a função "load" no arquivo "elf.rs" é usada para analisar e verificar o arquivo ELF (o contrato inteligente). Primeiro, a função "load" leria a estrutura ELF e invocaria a função "relocate" para configurar o offset do destinatário. No entanto, na função "relocate", o atributo "sym.st_value" é recuperado diretamente do arquivo ELF. Se o "st_value" for grande o suficiente, o estouro de inteiro pode ser acionado ao calcular o "addr", que é a soma de "sym.st_value" e "refd_pa".

Nesse caso, um atacante pode criar um arquivo ELF malicioso como contrato inteligente, que pode acionar o estouro de inteiro. Depois disso, cada validador executaria o arquivo ELF alvo e o rBPF entraria em pânico com "add with overflow".

Nesse momento, o rBPF ficará travado e as transações seguintes não serão executadas, resultando em um ataque DoS. Podemos observar que o nó fica travado em "Finalizing transaction", conforme mostrado a seguir, devido ao estouro de inteiro durante o carregamento do arquivo ELF.

Este problema foi introduzido em https://github.com/solana-labs/rbpf/pull/200, o que significa que o rBPF é vulnerável a partir da versão 0.2.14. Identificamos o problema e o relatamos à equipe de segurança da Solana em 6 de dezembro de 2021. A Solana corrigiu o problema em poucas horas usando o mecanismo de matemática segura após nosso relatório. A correção está em https://github.com/solana-labs/rbpf/pull/236. No momento da escrita (30/12/2021), mais de 86% dos validadores foram atualizados para a versão mais recente.

[1] https://en.wikipedia.org/wiki/Berkeley_Packet_Filter

[2] https://ebpf.io/

Linha do Tempo

  • 2021/12/06: o problema foi relatado à equipe de segurança da Solana
  • 2021/12/06: a vulnerabilidade foi corrigida.
  • 2021/12/30: as informações sobre esta vulnerabilidade foram divulgadas
  • 2022/01/28: o CVE-2021–46102 foi atribuído
Sign up for the latest updates
Perdas de ~5,57 milhões USD: exploração de falhas no X100 Freezer e no NEM | Boletim semanal da BlockSec
Security Insights

Perdas de ~5,57 milhões USD: exploração de falhas no X100 Freezer e no NEM | Boletim semanal da BlockSec

Este relatório semanal aborda dois incidentes de segurança na Ethereum e na BNB Chain no período de 19/10/2026–25/10/2026. Ele examina uma tomada de controle da governança do X100 Freezer financiada por um empréstimo-relâmpago e uma falha na liquidação de impostos que afetou um pool de liquidez de um token NEM na BNB Chain. As perdas estimadas no escopo do relatório totalizam aproximadamente 5,57 milhões USD: cerca de 4,75 milhões USD da transação representativa do X100 e cerca de 820 mil USD do incidente no pool do NEM. O total exclui as extrações subsequentes do X100 relatadas separadamente.

Perdas de ~3,87 milhões USD: ataques à Autheo Network e à UNCX | Resumo semanal da BlockSec
Security Insights

Perdas de ~3,87 milhões USD: ataques à Autheo Network e à UNCX | Resumo semanal da BlockSec

Este relatório semanal aborda 3 incidentes de segurança no período de 12/10/2026–18/10/2026, com perdas totais estimadas em aproximadamente 3,87 milhões USD. A Autheo Network sofreu um comprometimento de chave privada com perdas de cerca de 1,76 milhões USD, a Qubic Wallet perdeu cerca de 1,30 milhões USD devido à geração de seeds fracas, e os contratos Smart Token Vesting V2 da UNCX Network sofreram um erro contábil de cerca de 807 mil USD nas redes Ethereum, BNB Chain, Base e Robinhood Chain. A análise em destaque da UNCX explica como um cálculo incorreto do total de cotas misturou parcelas de vesting criadas com diferentes proporções entre tokens e cotas, permitindo saques acima do devido de pools compartilhados.

~US$ 542 mil perdidos: ataque ao MakerDaoBot | Boletim semanal da BlockSec
Security Insights

~US$ 542 mil perdidos: ataque ao MakerDaoBot | Boletim semanal da BlockSec

O relatório cobre 1 incidente no Ethereum (05–11/10/2026), com perda estimada de US$ 542 mil. Um adaptador malicioso obteve acesso aos saldos MakerDAO via função desprotegida do MakerDaoBot, liquidou 4 leilões ETH-A e converteu 200 ETH-A em WETH, depois enviados como ETH ao atacante.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit
Novo Bug de Overflow de Inteiros Descoberto no Solana rBPF