Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador é um dos componentes fundamentais dos sistemas computacionais modernos, e a sua principal função é converter o código fonte de linguagens de programação de alto nível em código de instrução executável de baixo nível para o computador. Assim como o código de aplicações, o compilador em si também pode ter vulnerabilidades de segurança, que em certas situações podem trazer riscos de segurança graves.
O papel do compilador Solidity é converter o código do contrato inteligente em código de instrução da Máquina Virtual Ethereum (EVM). Ao contrário das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity ocorrem principalmente durante o processo de compilação, não afetando diretamente a rede Ethereum em si, mas podendo resultar em um código EVM gerado que não corresponde às expectativas do desenvolvedor, levando a erros na execução do contrato inteligente, e até mesmo à perda de ativos do usuário.
Abaixo, apresentamos alguns casos reais para ilustrar as formas, causas e perigos das vulnerabilidades do compilador Solidity:
SOL-2016-9 HighOrderByteCleanStorage
A vulnerabilidade existe nas versões iniciais do compilador Solidity (>=0.1.6 <0.4.4). Em certas situações, o compilador não limpa corretamente os bits altos após um estouro de inteiro, resultando em variáveis adjacentes sendo modificadas acidentalmente. Isso pode levar a erros em lógicas críticas, como validação de permissões ou contabilidade de ativos.
SOL-2022-4 InlineAssemblyMemorySideEffects
A vulnerabilidade existe nas versões 0.8.13 a 0.8.15 do compilador. Devido à implementação inadequada da estratégia de otimização do compilador, pode inadvertidamente remover instruções de escrita de memória em assembly inline, causando inconsistência de dados.
SOL-2022-6 Overflow de Cabeça de Recodificação Abi com Limpeza de Array Estático
A vulnerabilidade afeta as versões do compilador de 0.5.8 a 0.8.16. Ao codificar arrays do tipo calldata com ABI, alguns dados foram limpos incorretamente, resultando na modificação de dados adjacentes e causando inconsistências nos resultados de codificação e decodificação.
Em relação às vulnerabilidades do compilador Solidity, recomenda-se que desenvolvedores e profissionais de segurança adotem as seguintes medidas:
Para desenvolvedores:
Use uma versão mais recente do compilador Solidity
Melhorar os casos de teste unitários, aumentando a cobertura do código
Evite usar operações propensas a erros, como assembly inline e codificação/decodificação ABI complexa.
Para o pessoal de segurança:
Preste atenção aos riscos que a versão do compilador pode introduzir durante a auditoria.
Adicionar verificação da versão do compilador no processo de desenvolvimento
Avaliar o impacto real das vulnerabilidades do compilador com base em projetos específicos
Alguns recursos úteis:
Alerta de segurança oficial do Solidity
Lista de bugs do repositório GitHub Solidity
Aviso de vulnerabilidade do compilador na página de código do contrato Etherscan
Ao compreender as características das vulnerabilidades do compilador Solidity e tomar as medidas adequadas, é possível reduzir efetivamente o risco de problemas de segurança nos contratos inteligentes devido a falhas no compilador.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
8 gostos
Recompensa
8
5
Partilhar
Comentar
0/400
GateUser-bd883c58
· 07-12 08:17
Parece que o compilador também não é confiável.
Ver originalResponder0
HashRatePhilosopher
· 07-12 08:14
Este compilador é bom?
Ver originalResponder0
LiquidationWatcher
· 07-12 08:07
estive lá, perdi demasiado... verifica a versão do teu compilador ou fica arruinado frfr
Análise dos riscos de vulnerabilidades do compilador Solidity e estratégias de mitigação
Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador é um dos componentes fundamentais dos sistemas computacionais modernos, e a sua principal função é converter o código fonte de linguagens de programação de alto nível em código de instrução executável de baixo nível para o computador. Assim como o código de aplicações, o compilador em si também pode ter vulnerabilidades de segurança, que em certas situações podem trazer riscos de segurança graves.
O papel do compilador Solidity é converter o código do contrato inteligente em código de instrução da Máquina Virtual Ethereum (EVM). Ao contrário das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity ocorrem principalmente durante o processo de compilação, não afetando diretamente a rede Ethereum em si, mas podendo resultar em um código EVM gerado que não corresponde às expectativas do desenvolvedor, levando a erros na execução do contrato inteligente, e até mesmo à perda de ativos do usuário.
Abaixo, apresentamos alguns casos reais para ilustrar as formas, causas e perigos das vulnerabilidades do compilador Solidity:
A vulnerabilidade existe nas versões iniciais do compilador Solidity (>=0.1.6 <0.4.4). Em certas situações, o compilador não limpa corretamente os bits altos após um estouro de inteiro, resultando em variáveis adjacentes sendo modificadas acidentalmente. Isso pode levar a erros em lógicas críticas, como validação de permissões ou contabilidade de ativos.
A vulnerabilidade existe nas versões 0.8.13 a 0.8.15 do compilador. Devido à implementação inadequada da estratégia de otimização do compilador, pode inadvertidamente remover instruções de escrita de memória em assembly inline, causando inconsistência de dados.
A vulnerabilidade afeta as versões do compilador de 0.5.8 a 0.8.16. Ao codificar arrays do tipo calldata com ABI, alguns dados foram limpos incorretamente, resultando na modificação de dados adjacentes e causando inconsistências nos resultados de codificação e decodificação.
Em relação às vulnerabilidades do compilador Solidity, recomenda-se que desenvolvedores e profissionais de segurança adotem as seguintes medidas:
Para desenvolvedores:
Para o pessoal de segurança:
Alguns recursos úteis:
Ao compreender as características das vulnerabilidades do compilador Solidity e tomar as medidas adequadas, é possível reduzir efetivamente o risco de problemas de segurança nos contratos inteligentes devido a falhas no compilador.