Análise de vulnerabilidades do compilador Solidity e medidas de resposta
O compilador é um dos componentes básicos dos sistemas de computação modernos, cuja função é converter o código-fonte de linguagens de programação de alto nível em código de instrução executável pelo computador. Embora os desenvolvedores e os profissionais de segurança geralmente se concentrem na segurança do código de aplicação do programa, o compilador em si, como programa de computador, também pode ter vulnerabilidades de segurança, o que em certas situações pode trazer sérios riscos de segurança.
O papel do compilador Solidity é transformar 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 manifestam-se principalmente na conversão do Solidity para o código EVM, o que pode não afetar diretamente a rede Ethereum em si, mas pode resultar em código EVM gerado que não corresponde às expectativas do desenvolvedor.
Abaixo estão alguns exemplos reais de vulnerabilidades do compilador Solidity:
SOL-2016-9 HighOrderByteCleanStorage:
A vulnerabilidade existe em versões antigas do compilador Solidity (>=0.1.6 <0.4.4). Devido a um erro no compilador ao lidar com estouro de inteiros, pode resultar na modificação acidental de variáveis adjacentes.
SOL-2022-4 InlineAssemblyMemorySideEffects:
A vulnerabilidade existe nas versões do compilador de 0.8.13 a 0.8.15. Devido à otimização do compilador que analisa blocos de assembly individuais, pode erroneamente remover instruções de escrita em memória que parecem redundantes, mas que na verdade são úteis.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup:
Esta vulnerabilidade afeta os compiladores das versões 0.5.8 a 0.8.16. Ao realizar a operação abi.encode em arrays do tipo calldata, a limpeza errada de certos dados resulta na modificação de dados adjacentes.
Em relação à vulnerabilidade do compilador Solidity, a equipe de segurança da blockchain Cobo propõe as seguintes recomendações:
Para desenvolvedores:
Utilize uma versão mais recente do compilador Solidity
Melhorar os casos de teste unitários
Evite o uso de assembly inline, operações complexas de codificação e decodificação de ABI, etc.
Para o pessoal de segurança:
Considerar os riscos de segurança que o compilador pode introduzir durante a auditoria.
Apressar a atualização da versão do compilador no processo de desenvolvimento
Avaliar o impacto real da segurança das vulnerabilidades do compilador com base nas circunstâncias específicas
Alguns recursos úteis:
Alerta de segurança oficial do Solidity
Lista de bugs no repositório GitHub do Solidity
Lista de bugs dos compiladores de várias versões
Aviso de segurança na página de código de contrato do Etherscan
Em suma, desenvolvedores e profissionais de segurança devem estar atentos aos riscos de segurança que as vulnerabilidades do compilador Solidity podem trazer, adotando medidas como a atualização do compilador e a melhoria dos testes para reduzir os riscos associados.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
24 Curtidas
Recompensa
24
6
Compartilhar
Comentário
0/400
StakeWhisperer
· 07-21 09:21
Já seguiu os bugs do compilador? Este novato está a morrer a rir.
Ver originalResponder0
OnchainGossiper
· 07-21 06:50
Acabei de corrigir uma falha e já vem outra... mãos ao ar
Ver originalResponder0
blockBoy
· 07-20 10:39
Este é um problema complicado... quem o pode resolver verdadeiramente?
Ver originalResponder0
BearMarketSage
· 07-20 10:39
Desenvolver e não testar o contrato por conta própria?
Análise das vulnerabilidades do compilador Solidity e suas estratégias de enfrentamento
Análise de vulnerabilidades do compilador Solidity e medidas de resposta
O compilador é um dos componentes básicos dos sistemas de computação modernos, cuja função é converter o código-fonte de linguagens de programação de alto nível em código de instrução executável pelo computador. Embora os desenvolvedores e os profissionais de segurança geralmente se concentrem na segurança do código de aplicação do programa, o compilador em si, como programa de computador, também pode ter vulnerabilidades de segurança, o que em certas situações pode trazer sérios riscos de segurança.
O papel do compilador Solidity é transformar 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 manifestam-se principalmente na conversão do Solidity para o código EVM, o que pode não afetar diretamente a rede Ethereum em si, mas pode resultar em código EVM gerado que não corresponde às expectativas do desenvolvedor.
Abaixo estão alguns exemplos reais de vulnerabilidades do compilador Solidity:
SOL-2016-9 HighOrderByteCleanStorage: A vulnerabilidade existe em versões antigas do compilador Solidity (>=0.1.6 <0.4.4). Devido a um erro no compilador ao lidar com estouro de inteiros, pode resultar na modificação acidental de variáveis adjacentes.
SOL-2022-4 InlineAssemblyMemorySideEffects: A vulnerabilidade existe nas versões do compilador de 0.8.13 a 0.8.15. Devido à otimização do compilador que analisa blocos de assembly individuais, pode erroneamente remover instruções de escrita em memória que parecem redundantes, mas que na verdade são úteis.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Esta vulnerabilidade afeta os compiladores das versões 0.5.8 a 0.8.16. Ao realizar a operação abi.encode em arrays do tipo calldata, a limpeza errada de certos dados resulta na modificação de dados adjacentes.
Em relação à vulnerabilidade do compilador Solidity, a equipe de segurança da blockchain Cobo propõe as seguintes recomendações:
Para desenvolvedores:
Para o pessoal de segurança:
Alguns recursos úteis:
Em suma, desenvolvedores e profissionais de segurança devem estar atentos aos riscos de segurança que as vulnerabilidades do compilador Solidity podem trazer, adotando medidas como a atualização do compilador e a melhoria dos testes para reduzir os riscos associados.