Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador, como una de las partes fundamentales de los sistemas informáticos modernos, tiene la función de convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutables a nivel de máquina. Aunque los desarrolladores y el personal de seguridad suelen centrarse más en la seguridad del código de las aplicaciones, la seguridad del propio compilador no debe pasarse por alto. Las vulnerabilidades del compilador pueden presentar riesgos de seguridad graves en ciertas circunstancias.
El compilador de Solidity tiene la función de convertir el código de los contratos inteligentes en código de instrucciones de la Máquina Virtual de Ethereum (EVM). A diferencia de las vulnerabilidades propias de la EVM, las vulnerabilidades del compilador de Solidity ocurren principalmente en el proceso de conversión de Solidity a código EVM. Esta vulnerabilidad no afecta directamente a la red de Ethereum, pero puede provocar que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede dar lugar a problemas de seguridad en los contratos inteligentes.
A continuación se presentan algunos ejemplos típicos de vulnerabilidades del compilador Solidity:
Vulnerabilidad HighOrderByteCleanStorage ( afecta a versiones: >=0.1.6 <0.4.4)
Esta vulnerabilidad puede hacer que la variable de almacenamiento devuelva un valor no esperado sin ser modificada.
La vulnerabilidad InlineAssemblyMemorySideEffects ( afecta a las versiones: >=0.8.13 <0.8.15)
Debido a problemas con la estrategia de optimización del compilador, es posible que las modificaciones en la memoria dentro del ensamblaje en línea se optimicen incorrectamente.
Vulnerabilidad AbiReencodingHeadOverflowWithStaticArrayCleanup ( afecta versiones: >= 0.5.8 < 0.8.16)
Al realizar la operación abi.encode en un array de tipo calldata, es posible que se modifiquen incorrectamente los datos adyacentes, lo que provoca que los datos codificados y decodificados no sean consistentes.
Para hacer frente a los riesgos derivados de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las siguientes medidas:
Sugerencias para desarrolladores:
Utiliza una versión más reciente del compilador de Solidity
Mejorar los casos de prueba unitaria para aumentar la cobertura del código
Evite el uso de ensamblado en línea, codificación y decodificación ABI complejas, y use nuevas características con precaución.
Personal de seguridad recomienda:
Considerar los riesgos que el compilador puede introducir en la auditoría de seguridad
Impulsar la actualización de la versión del compilador en el proceso de desarrollo
Introducir la verificación automática de la versión del compilador en el proceso de CI/CD
Recursos prácticos:
Blog oficial de alertas de seguridad de Solidity
Lista de errores en el repositorio de GitHub de Solidity
Lista de errores del compilador de cada versión
Advertencias de seguridad en la página de código del contrato de Etherscan
Al prestar atención a la seguridad del compilador y tomar las medidas preventivas adecuadas, se pueden reducir eficazmente los riesgos potenciales derivados de las vulnerabilidades del compilador de Solidity y mejorar la seguridad general de los contratos inteligentes.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
11 me gusta
Recompensa
11
4
Compartir
Comentar
0/400
0xSunnyDay
· hace13h
Solo juega con las vulnerabilidades del compilador cuando no hay nada más que hacer.
Ver originalesResponder0
BearMarketMonk
· hace13h
¿Quién sigue buscando vulnerabilidades por su cuenta? ¿No es mejor usar herramientas ya disponibles?
Ver originalesResponder0
NeverVoteOnDAO
· hace13h
Parece que hay muchas vulnerabilidades y solo se han utilizado cupones de clip.
Ver originalesResponder0
DefiEngineerJack
· hace13h
*sigh* los errores de compilador son literalmente la razón por la que necesitamos verificación formal... ngmi sin ella tbh
Análisis de vulnerabilidades del compilador de Solidity y estrategias de respuesta
Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador, como una de las partes fundamentales de los sistemas informáticos modernos, tiene la función de convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutables a nivel de máquina. Aunque los desarrolladores y el personal de seguridad suelen centrarse más en la seguridad del código de las aplicaciones, la seguridad del propio compilador no debe pasarse por alto. Las vulnerabilidades del compilador pueden presentar riesgos de seguridad graves en ciertas circunstancias.
El compilador de Solidity tiene la función de convertir el código de los contratos inteligentes en código de instrucciones de la Máquina Virtual de Ethereum (EVM). A diferencia de las vulnerabilidades propias de la EVM, las vulnerabilidades del compilador de Solidity ocurren principalmente en el proceso de conversión de Solidity a código EVM. Esta vulnerabilidad no afecta directamente a la red de Ethereum, pero puede provocar que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede dar lugar a problemas de seguridad en los contratos inteligentes.
A continuación se presentan algunos ejemplos típicos de vulnerabilidades del compilador Solidity:
Vulnerabilidad HighOrderByteCleanStorage ( afecta a versiones: >=0.1.6 <0.4.4) Esta vulnerabilidad puede hacer que la variable de almacenamiento devuelva un valor no esperado sin ser modificada.
La vulnerabilidad InlineAssemblyMemorySideEffects ( afecta a las versiones: >=0.8.13 <0.8.15) Debido a problemas con la estrategia de optimización del compilador, es posible que las modificaciones en la memoria dentro del ensamblaje en línea se optimicen incorrectamente.
Vulnerabilidad AbiReencodingHeadOverflowWithStaticArrayCleanup ( afecta versiones: >= 0.5.8 < 0.8.16) Al realizar la operación abi.encode en un array de tipo calldata, es posible que se modifiquen incorrectamente los datos adyacentes, lo que provoca que los datos codificados y decodificados no sean consistentes.
Para hacer frente a los riesgos derivados de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las siguientes medidas:
Sugerencias para desarrolladores:
Personal de seguridad recomienda:
Recursos prácticos:
Al prestar atención a la seguridad del compilador y tomar las medidas preventivas adecuadas, se pueden reducir eficazmente los riesgos potenciales derivados de las vulnerabilidades del compilador de Solidity y mejorar la seguridad general de los contratos inteligentes.