Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador é um dos componentes básicos dos sistemas de computação modernos, cuja função é converter o código fonte em linguagens de programação de alto nível em código de instruções executáveis pelo computador. Embora a maioria dos desenvolvedores e profissionais de segurança geralmente se concentre na segurança do código das aplicações, a segurança do próprio compilador também é igualmente importante. Como programa de computador, o compilador pode também ter vulnerabilidades de segurança, que em certas circunstâncias podem representar riscos sérios de segurança.
Tomando o navegador como exemplo, ao compilar e analisar a execução de código JavaScript, pode haver consequências graves, como a execução remota de código, devido a vulnerabilidades no motor JavaScript. O compilador Solidity não é exceção, apresentando vulnerabilidades de segurança em várias versões.
O papel do compilador Solidity é converter o código do contrato inteligente em código de instrução da Máquina Virtual Ethereum (EVM). É necessário distinguir entre vulnerabilidades do compilador Solidity e vulnerabilidades da própria EVM. Vulnerabilidades da EVM referem-se a problemas de segurança que surgem durante a execução das instruções pela máquina virtual, podendo afetar toda a rede Ethereum. Por outro lado, vulnerabilidades do compilador Solidity referem-se a problemas durante o processo de compilação, que não afetam diretamente a rede Ethereum, mas podem resultar em um código EVM gerado que não está alinhado com as expectativas do desenvolvedor.
Uma das consequências de uma vulnerabilidade no compilador Solidity é que pode levar a uma discrepância entre o código EVM gerado e as expectativas do desenvolvedor do contrato inteligente. Como os contratos inteligentes geralmente envolvem ativos de criptomoeda dos usuários, qualquer bug causado pelo compilador pode ter consequências graves. Apenas auditar o código-fonte do contrato torna difícil identificar tais problemas, sendo necessário combinar a análise com versões específicas do compilador e padrões de código.
Abaixo, são apresentados alguns exemplos reais de vulnerabilidades do compilador Solidity, mostrando suas formas específicas, causas e danos.
A vulnerabilidade SOL-2016-9 HighOrderByteCleanStorage existe em versões anteriores do compilador Solidity ( >=0.1.6 <0.4.4). Essa vulnerabilidade pode fazer com que as variáveis de armazenamento retornem valores inesperados sem terem sido modificadas. Essa inconsistência pode ter consequências graves em cenários como validação de permissões e contabilidade de ativos.
A vulnerabilidade InlineAssemblyMemorySideEffects na versão >=0.8.13 <0.8.15 do compilador resulta de um tratamento incorreto do código de assembly inline durante o processo de otimização de compilação, podendo levar à remoção incorreta de certas operações de memória.
A vulnerabilidade SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup afeta compiladores com versão >= 0.5.8 e < 0.8.16. Esta vulnerabilidade pode levar a inconsistências de dados ao realizar operações abi.encode em arrays do tipo calldata.
Com base na análise de vulnerabilidades do compilador Solidity, apresentamos as seguintes recomendações para desenvolvedores e profissionais de segurança:
Desenvolvedor:
Use uma versão mais recente do compilador Solidity
Melhorar os casos de teste unitários, aumentar a cobertura de código
Evite usar assembly inline, operações complexas de codificação e decodificação ABI, etc.
Use com cautela as novas funcionalidades e recursos experimentais
Segurança:
Considerar os riscos que o compilador pode introduzir durante a auditoria de segurança
Promover a atualização da versão do compilador no processo SDL
Introdução da verificação automática da versão do compilador no CI/CD
Avaliar o impacto real das vulnerabilidades do compilador com base em projetos específicos
Alguns recursos práticos:
Alerta de segurança oficial lançado pelo 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 no Etherscan
Em suma, as vulnerabilidades do compilador Solidity, embora não sejam comuns, podem ter consequências graves. Os desenvolvedores e profissionais de segurança devem estar em alerta e tomar medidas adequadas para reduzir os riscos.
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.
8 gostos
Recompensa
8
5
Partilhar
Comentar
0/400
MetaverseHobo
· 8h atrás
Outra pilha de vulnerabilidades. Para que tanta pressa?
Ver originalResponder0
OfflineValidator
· 8h atrás
Brinquei com mais de dois k usdt, ataque de redução para aqueles que entendem comprar baixo e vender alto
Dependendo do compilador, houve outro bug...
Ver originalResponder0
FallingLeaf
· 8h atrás
Fiquei assustado com a falha, não me atrevo a jogar nada.
Ver originalResponder0
PoetryOnChain
· 8h atrás
Outra vez a seguir a falha, fui embora, fui embora.
Ver originalResponder0
AirDropMissed
· 8h atrás
Mais uma vez o compilador deu erro, não consigo deixar de rir.
Análise de vulnerabilidades do compilador Solidity: riscos, exemplos e estratégias de resposta
Análise de vulnerabilidades do compilador Solidity e estratégias de resposta
O compilador é um dos componentes básicos dos sistemas de computação modernos, cuja função é converter o código fonte em linguagens de programação de alto nível em código de instruções executáveis pelo computador. Embora a maioria dos desenvolvedores e profissionais de segurança geralmente se concentre na segurança do código das aplicações, a segurança do próprio compilador também é igualmente importante. Como programa de computador, o compilador pode também ter vulnerabilidades de segurança, que em certas circunstâncias podem representar riscos sérios de segurança.
Tomando o navegador como exemplo, ao compilar e analisar a execução de código JavaScript, pode haver consequências graves, como a execução remota de código, devido a vulnerabilidades no motor JavaScript. O compilador Solidity não é exceção, apresentando vulnerabilidades de segurança em várias versões.
O papel do compilador Solidity é converter o código do contrato inteligente em código de instrução da Máquina Virtual Ethereum (EVM). É necessário distinguir entre vulnerabilidades do compilador Solidity e vulnerabilidades da própria EVM. Vulnerabilidades da EVM referem-se a problemas de segurança que surgem durante a execução das instruções pela máquina virtual, podendo afetar toda a rede Ethereum. Por outro lado, vulnerabilidades do compilador Solidity referem-se a problemas durante o processo de compilação, que não afetam diretamente a rede Ethereum, mas podem resultar em um código EVM gerado que não está alinhado com as expectativas do desenvolvedor.
Uma das consequências de uma vulnerabilidade no compilador Solidity é que pode levar a uma discrepância entre o código EVM gerado e as expectativas do desenvolvedor do contrato inteligente. Como os contratos inteligentes geralmente envolvem ativos de criptomoeda dos usuários, qualquer bug causado pelo compilador pode ter consequências graves. Apenas auditar o código-fonte do contrato torna difícil identificar tais problemas, sendo necessário combinar a análise com versões específicas do compilador e padrões de código.
Abaixo, são apresentados alguns exemplos reais de vulnerabilidades do compilador Solidity, mostrando suas formas específicas, causas e danos.
A vulnerabilidade SOL-2016-9 HighOrderByteCleanStorage existe em versões anteriores do compilador Solidity ( >=0.1.6 <0.4.4). Essa vulnerabilidade pode fazer com que as variáveis de armazenamento retornem valores inesperados sem terem sido modificadas. Essa inconsistência pode ter consequências graves em cenários como validação de permissões e contabilidade de ativos.
A vulnerabilidade InlineAssemblyMemorySideEffects na versão >=0.8.13 <0.8.15 do compilador resulta de um tratamento incorreto do código de assembly inline durante o processo de otimização de compilação, podendo levar à remoção incorreta de certas operações de memória.
A vulnerabilidade SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup afeta compiladores com versão >= 0.5.8 e < 0.8.16. Esta vulnerabilidade pode levar a inconsistências de dados ao realizar operações abi.encode em arrays do tipo calldata.
Com base na análise de vulnerabilidades do compilador Solidity, apresentamos as seguintes recomendações para desenvolvedores e profissionais de segurança:
Desenvolvedor:
Segurança:
Alguns recursos práticos:
Em suma, as vulnerabilidades do compilador Solidity, embora não sejam comuns, podem ter consequências graves. Os desenvolvedores e profissionais de segurança devem estar em alerta e tomar medidas adequadas para reduzir os riscos.
Dependendo do compilador, houve outro bug...