Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador é um dos componentes fundamentais dos sistemas de computação modernos, e a sua função principal é converter linguagens de programação de alto nível em instruções de baixo nível executáveis pelo computador. Embora a maioria dos desenvolvedores e profissionais de segurança se concentre principalmente na segurança do código dos aplicativos, a segurança do próprio compilador também é igualmente importante. Como um programa de computador, um compilador também pode apresentar vulnerabilidades de segurança, o que pode representar riscos sérios em certas situações.
O compilador Solidity tem a função de converter o código dos contratos inteligentes em instruções da Máquina Virtual Ethereum (EVM). Ao contrário das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity afetam principalmente os desenvolvedores de contratos inteligentes, sem colocar em risco direto a segurança da rede Ethereum. No entanto, as vulnerabilidades do compilador podem levar a que o código EVM gerado não corresponda às expectativas dos desenvolvedores, resultando em consequências graves, como a perda de ativos dos usuários.
Aqui estão alguns exemplos reais de vulnerabilidades do compilador Solidity:
SOL-2016-9 HighOrderByteCleanStorage
A vulnerabilidade existe em versões anteriores do compilador Solidity (\u003e=0.1.6 \u003c0.4.4). O problema reside no uso de elementos de pilha de 32 bytes pela EVM, enquanto o Solidity suporta tipos de dados menores. Em alguns casos, o compilador falhou em limpar corretamente os bytes de ordem superior, resultando em sobreposição de dados inesperada.
SOL-2022-4 Efeitos Colaterais de Memória de Assembly Inline
Esta vulnerabilidade afeta compiladores com versões >=0.8.13 <0.8.15. O problema origina-se de um tratamento incorreto de blocos de assembly inline durante o processo de otimização do compilador, resultando na remoção indevida de certas operações de escrita na memória.
A vulnerabilidade existe nas versões do compilador >=0.5.8 <0.8.16. Durante a codificação ABI de arrays de certos tipos de calldata, uma operação de limpeza de dados incorreta resulta na modificação de dados adjacentes, causando inconsistências nos resultados de codificação e decodificação.
Para a vulnerabilidade do compilador Solidity, apresentamos as seguintes recomendações:
Para os desenvolvedores:
Use uma versão mais recente do compilador Solidity
Melhorar os casos de teste de unidade, aumentar a cobertura do código
Evite usar assembly inline, codificação e decodificação ABI complexas e outros recursos avançados.
Para a equipe de segurança:
Considerar os riscos de segurança que o compilador pode introduzir durante a auditoria
Acompanhar a atualização da versão do compilador durante o processo de desenvolvimento
Introduzir verificação automática da versão do compilador no CI/CD
Alguns recursos práticos:
Alerta de segurança oficial do Solidity
Lista de bugs no repositório Solidity
Lista de bugs do compilador de várias versões
Aviso de vulnerabilidade do compilador no Etherscan
Em resumo, embora não seja necessário se preocupar excessivamente com vulnerabilidades do compilador, ainda assim devemos dar a devida atenção a essa potencial ameaça de segurança durante o desenvolvimento e auditoria de contratos inteligentes. Ao tomar as precauções adequadas, podemos minimizar ao máximo os riscos associados às vulnerabilidades do compilador.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
9 gostos
Recompensa
9
7
Partilhar
Comentar
0/400
BoredApeResistance
· 07-08 04:11
É melhor ter cuidado com o código.
Ver originalResponder0
SelfCustodyBro
· 07-06 15:49
Ainda está a escrever código? Vai primeiro para casa testar.
Ver originalResponder0
TokenDustCollector
· 07-05 04:47
Antes de verificar o contrato, também é necessário verificar o compilador..
Ver originalResponder0
0xSoulless
· 07-05 04:46
Todos os dias sendo feito de parvo, era melhor que o compilador me fizesse de uma vez.
Ver originalResponder0
SmartContractPlumber
· 07-05 04:43
Sabemos que vocês estão ansiosos para entrar na Rede principal, mas você se atreve a ir com as falhas?
Vulnerabilidades do compilador Solidity: O que os desenvolvedores precisam saber e estratégias de resposta
Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador é um dos componentes fundamentais dos sistemas de computação modernos, e a sua função principal é converter linguagens de programação de alto nível em instruções de baixo nível executáveis pelo computador. Embora a maioria dos desenvolvedores e profissionais de segurança se concentre principalmente na segurança do código dos aplicativos, a segurança do próprio compilador também é igualmente importante. Como um programa de computador, um compilador também pode apresentar vulnerabilidades de segurança, o que pode representar riscos sérios em certas situações.
O compilador Solidity tem a função de converter o código dos contratos inteligentes em instruções da Máquina Virtual Ethereum (EVM). Ao contrário das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity afetam principalmente os desenvolvedores de contratos inteligentes, sem colocar em risco direto a segurança da rede Ethereum. No entanto, as vulnerabilidades do compilador podem levar a que o código EVM gerado não corresponda às expectativas dos desenvolvedores, resultando em consequências graves, como a perda de ativos dos usuários.
Aqui estão alguns exemplos reais de vulnerabilidades do compilador Solidity:
A vulnerabilidade existe em versões anteriores do compilador Solidity (\u003e=0.1.6 \u003c0.4.4). O problema reside no uso de elementos de pilha de 32 bytes pela EVM, enquanto o Solidity suporta tipos de dados menores. Em alguns casos, o compilador falhou em limpar corretamente os bytes de ordem superior, resultando em sobreposição de dados inesperada.
Esta vulnerabilidade afeta compiladores com versões >=0.8.13 <0.8.15. O problema origina-se de um tratamento incorreto de blocos de assembly inline durante o processo de otimização do compilador, resultando na remoção indevida de certas operações de escrita na memória.
A vulnerabilidade existe nas versões do compilador >=0.5.8 <0.8.16. Durante a codificação ABI de arrays de certos tipos de calldata, uma operação de limpeza de dados incorreta resulta na modificação de dados adjacentes, causando inconsistências nos resultados de codificação e decodificação.
Para a vulnerabilidade do compilador Solidity, apresentamos as seguintes recomendações:
Para os desenvolvedores:
Para a equipe de segurança:
Alguns recursos práticos:
Em resumo, embora não seja necessário se preocupar excessivamente com vulnerabilidades do compilador, ainda assim devemos dar a devida atenção a essa potencial ameaça de segurança durante o desenvolvimento e auditoria de contratos inteligentes. Ao tomar as precauções adequadas, podemos minimizar ao máximo os riscos associados às vulnerabilidades do compilador.