Análise de vulnerabilidades do compilador Solidity e estratégias de mitigação
O compilador é um dos componentes básicos dos sistemas de computação modernos, cuja função é transformar o código fonte em linguagens de programação de alto nível em instruções que podem ser executadas pelo computador. Assim como o código de aplicativos, o compilador em si também pode ter vulnerabilidades de segurança, o que, em certas circunstâncias, pode acarretar riscos de segurança graves.
O compilador Solidity tem a função de converter o código do contrato inteligente em código de instrução para a Máquina Virtual Ethereum (EVM). Ao contrário das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity não afetam diretamente a rede Ethereum, mas podem levar a um código EVM gerado que não corresponde às expectativas do desenvolvedor, causando assim problemas de segurança nos contratos inteligentes.
Aqui estão alguns exemplos reais de vulnerabilidades do compilador Solidity:
SOL-2016-9 HighOrderByteCleanStorage
A vulnerabilidade existe em versões mais antigas do compilador Solidity ( >=0.1.6 <0.4.4). Em certos casos, o compilador não limpa corretamente os bytes mais significativos, resultando em uma modificação inesperada do valor das variáveis de armazenamento.
SOL-2022-4 Efeitos Colaterais de Memória em Inline Assembly
A vulnerabilidade existe nas versões do compilador de 0.8.13 a 0.8.15. Devido a um manuseio incorreto dos blocos de assembly durante o processo de otimização da compilação, pode levar à remoção incorreta de operações de escrita na memória.
A vulnerabilidade afeta os compiladores das versões 0.5.8 a 0.8.16. Ao realizar a operação abi.encode em um array do tipo calldata, pode haver a limpeza incorreta de alguns dados, resultando 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 características de linguagem complexas, como montagem em linha, codificação e decodificação ABI de arrays multidimensionais, etc.
Para os seguranças:
Considerar os riscos de segurança que o compilador pode introduzir durante a auditoria
Incentivar a atualização da versão do compilador durante o processo de desenvolvimento
Avaliar o impacto real da segurança das vulnerabilidades do compilador com base nas circunstâncias específicas
Alguns recursos úteis:
Blog de 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 vulnerabilidade do compilador na página de código de contrato do Etherscan
Ao entender as características e os impactos das vulnerabilidades do compilador Solidity, os desenvolvedores e profissionais de segurança podem avaliar de forma mais abrangente os riscos de segurança dos contratos inteligentes e tomar as medidas preventivas adequadas.
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.
20 Curtidas
Recompensa
20
5
Compartilhar
Comentário
0/400
blocksnark
· 07-10 15:09
O dinheiro para resolver bugs é o mais saboroso.
Ver originalResponder0
BlockchainDecoder
· 07-08 10:18
De acordo com o artigo clássico "Análise do Compilador Solidity (2022)", o coeficiente de risco para esse tipo de vulnerabilidade é de 78,3%, recomendando-se o uso cauteloso da versão 0.8.0+ para mitigação.
Ver originalResponder0
DaisyUnicorn
· 07-08 10:14
Yingying, o compilador também teve um bug, vamos atualizar para uma nova versão rapidamente.
Ver originalResponder0
FlashLoanLarry
· 07-08 10:13
apenas mais um dia no defi... explorações de compilador = oportunidades infinitas de mev para ser sincero
Ver originalResponder0
AlphaLeaker
· 07-08 10:04
Mesmo com mais atualizações, não dá para aguentar os Hackers.
Análise de vulnerabilidades do compilador Solidity e estratégias de mitigação
Análise de vulnerabilidades do compilador Solidity e estratégias de mitigação
O compilador é um dos componentes básicos dos sistemas de computação modernos, cuja função é transformar o código fonte em linguagens de programação de alto nível em instruções que podem ser executadas pelo computador. Assim como o código de aplicativos, o compilador em si também pode ter vulnerabilidades de segurança, o que, em certas circunstâncias, pode acarretar riscos de segurança graves.
O compilador Solidity tem a função de converter o código do contrato inteligente em código de instrução para a Máquina Virtual Ethereum (EVM). Ao contrário das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity não afetam diretamente a rede Ethereum, mas podem levar a um código EVM gerado que não corresponde às expectativas do desenvolvedor, causando assim problemas de segurança nos contratos inteligentes.
Aqui estão alguns exemplos reais de vulnerabilidades do compilador Solidity:
A vulnerabilidade existe em versões mais antigas do compilador Solidity ( >=0.1.6 <0.4.4). Em certos casos, o compilador não limpa corretamente os bytes mais significativos, resultando em uma modificação inesperada do valor das variáveis de armazenamento.
A vulnerabilidade existe nas versões do compilador de 0.8.13 a 0.8.15. Devido a um manuseio incorreto dos blocos de assembly durante o processo de otimização da compilação, pode levar à remoção incorreta de operações de escrita na memória.
A vulnerabilidade afeta os compiladores das versões 0.5.8 a 0.8.16. Ao realizar a operação abi.encode em um array do tipo calldata, pode haver a limpeza incorreta de alguns dados, resultando 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 os seguranças:
Alguns recursos úteis:
Ao entender as características e os impactos das vulnerabilidades do compilador Solidity, os desenvolvedores e profissionais de segurança podem avaliar de forma mais abrangente os riscos de segurança dos contratos inteligentes e tomar as medidas preventivas adequadas.