Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador, como uma das partes fundamentais dos sistemas de computadores modernos, tem a função de converter o código-fonte em linguagens de programação de alto nível em código de instruções executáveis no nível inferior do computador. Embora os desenvolvedores e os profissionais de segurança geralmente estejam mais preocupados com a segurança do código do aplicativo, a segurança do próprio compilador não deve ser ignorada. Vulnerabilidades no compilador podem, em certas circunstâncias, trazer riscos de segurança graves.
O papel do compilador Solidity é converter o código do contrato inteligente em código de instrução para a Máquina Virtual Ethereum (EVM). Diferente das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity ocorrem principalmente durante o processo de conversão de Solidity para código EVM. Essa vulnerabilidade não afeta diretamente a rede Ethereum, mas pode resultar em código EVM gerado que não corresponde às expectativas do desenvolvedor, o que pode levar a problemas de segurança nos contratos inteligentes.
Aqui estão alguns exemplos típicos de vulnerabilidades do compilador Solidity:
Vulnerabilidade HighOrderByteCleanStorage ( afeta versões: >=0.1.6 <0.4.4)
Esta vulnerabilidade pode levar a que a variável storage retorne valores não esperados sem ser modificada.
Vulnerabilidade InlineAssemblyMemorySideEffects ( afeta versões: >=0.8.13 <0.8.15)
Devido a problemas nas estratégias de otimização do compilador, as modificações na memória dentro da montagem inline podem ser otimizadas incorretamente.
Vulnerabilidade AbiReencodingHeadOverflowWithStaticArrayCleanup ( afeta versões: >= 0.5.8 < 0.8.16)
Ao realizar a operação abi.encode em um array do tipo calldata, pode haver uma modificação incorreta dos dados adjacentes, resultando em inconsistência nos dados codificados e decodificados.
Para lidar com os riscos apresentados pelas vulnerabilidades do compilador Solidity, os desenvolvedores e profissionais de segurança podem tomar as seguintes medidas:
Sugestões para desenvolvedores:
Use uma versão mais recente do compilador Solidity
Melhorar os casos de teste unitários, aumentar a cobertura de código
Evite usar montagem em linha, operações complexas de codificação e decodificação do abi, e use novos recursos com cautela.
Os agentes de segurança recomendam:
Considerar os riscos que o compilador pode introduzir na auditoria de segurança
Promover a atualização da versão do compilador durante o processo de desenvolvimento
Introduzir a verificação automática da versão do compilador no processo CI/CD
Recursos práticos:
Blog oficial de alertas de segurança Solidity
Lista de bugs no repositório GitHub do Solidity
Lista de bugs do compilador de várias versões
Dicas de segurança na página de código do contrato do Etherscan
Ao focar na segurança do compilador e tomar as devidas precauções, é possível reduzir efetivamente os riscos potenciais associados a vulnerabilidades do compilador Solidity, melhorando a segurança geral dos contratos inteligentes.
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.
11 Curtidas
Recompensa
11
4
Compartilhar
Comentário
0/400
0xSunnyDay
· 13h atrás
Não há problema em brincar com vulnerabilidades de compiladores.
Ver originalResponder0
BearMarketMonk
· 13h atrás
Quem ainda está à procura de falhas por conta própria? Não é melhor usar ferramentas já prontas?
Ver originalResponder0
NeverVoteOnDAO
· 13h atrás
Vulnerabilidades parecem estar a aumentar, só resta usar Cupões de Recorte.
Ver originalResponder0
DefiEngineerJack
· 13h atrás
*sigh* bugs de compilador são literalmente o motivo pelo qual precisamos de verificação formal... ngmi sem isso tbh
Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador, como uma das partes fundamentais dos sistemas de computadores modernos, tem a função de converter o código-fonte em linguagens de programação de alto nível em código de instruções executáveis no nível inferior do computador. Embora os desenvolvedores e os profissionais de segurança geralmente estejam mais preocupados com a segurança do código do aplicativo, a segurança do próprio compilador não deve ser ignorada. Vulnerabilidades no compilador podem, em certas circunstâncias, trazer riscos de segurança graves.
O papel do compilador Solidity é converter o código do contrato inteligente em código de instrução para a Máquina Virtual Ethereum (EVM). Diferente das vulnerabilidades da própria EVM, as vulnerabilidades do compilador Solidity ocorrem principalmente durante o processo de conversão de Solidity para código EVM. Essa vulnerabilidade não afeta diretamente a rede Ethereum, mas pode resultar em código EVM gerado que não corresponde às expectativas do desenvolvedor, o que pode levar a problemas de segurança nos contratos inteligentes.
Aqui estão alguns exemplos típicos de vulnerabilidades do compilador Solidity:
Vulnerabilidade HighOrderByteCleanStorage ( afeta versões: >=0.1.6 <0.4.4) Esta vulnerabilidade pode levar a que a variável storage retorne valores não esperados sem ser modificada.
Vulnerabilidade InlineAssemblyMemorySideEffects ( afeta versões: >=0.8.13 <0.8.15) Devido a problemas nas estratégias de otimização do compilador, as modificações na memória dentro da montagem inline podem ser otimizadas incorretamente.
Vulnerabilidade AbiReencodingHeadOverflowWithStaticArrayCleanup ( afeta versões: >= 0.5.8 < 0.8.16) Ao realizar a operação abi.encode em um array do tipo calldata, pode haver uma modificação incorreta dos dados adjacentes, resultando em inconsistência nos dados codificados e decodificados.
Para lidar com os riscos apresentados pelas vulnerabilidades do compilador Solidity, os desenvolvedores e profissionais de segurança podem tomar as seguintes medidas:
Sugestões para desenvolvedores:
Os agentes de segurança recomendam:
Recursos práticos:
Ao focar na segurança do compilador e tomar as devidas precauções, é possível reduzir efetivamente os riscos potenciais associados a vulnerabilidades do compilador Solidity, melhorando a segurança geral dos contratos inteligentes.