Análisis de vulnerabilidades del compilador Solidity y medidas de prevención
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, y su función principal es convertir el código fuente de lenguajes de programación de alto nivel en instrucciones de código ejecutables por la computadora. Aunque la mayoría de los desarrolladores y personal de seguridad suelen centrarse en la seguridad del código de las aplicaciones, la seguridad del propio compilador tampoco debe pasarse por alto. De hecho, como un programa informático, el compilador también puede tener vulnerabilidades de seguridad, lo que en algunos casos puede conllevar riesgos de seguridad graves.
El propósito del compilador de Solidity es 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 en sí de la EVM, las vulnerabilidades del compilador de Solidity se refieren principalmente a problemas que surgen durante el proceso de conversión del código. Este tipo de vulnerabilidades no afectarán directamente a la red de Ethereum, pero pueden resultar en que el código EVM generado no coincida con lo que el desarrollador esperaba, lo que puede provocar consecuencias graves.
A continuación se presentan algunos ejemplos reales de vulnerabilidades del compilador Solidity:
SOL-2016-9 AlmacenamientoLimpioDeByteDeOrdenAlto
La vulnerabilidad existe en versiones tempranas del compilador Solidity (>=0.1.6 <0.4.4). Puede hacer que las variables de almacenamiento devuelvan valores no esperados sin haber sido modificadas. Esta inconsistencia puede causar problemas graves en operaciones críticas como la verificación de permisos o la contabilidad de activos.
SOL-2022-4 Efectos Secundarios de Memoria en InlineAssembly
Esta vulnerabilidad afecta a los compiladores de las versiones >=0.8.13 y <0.8.15. Se origina en el hecho de que el compilador eliminó incorrectamente, durante el proceso de optimización, instrucciones de operaciones de memoria que parecen redundantes pero que son necesarias, lo que provoca que el valor de retorno de la función no coincida con lo esperado.
La vulnerabilidad afecta a compiladores de versiones >= 0.5.8 y < 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, el compilador eliminó incorrectamente algunos datos, lo que provocó que los datos adyacentes se modificaran, lo que finalmente resultó en una incoherencia en los datos después de la codificación y decodificación.
Para hacer frente a los riesgos derivados de las vulnerabilidades del compilador de Solidity, el equipo de seguridad blockchain de Cobo propone las siguientes recomendaciones:
Para los desarrolladores:
Utiliza una versión más reciente del compilador Solidity
Mejorar los casos de prueba unitarios para aumentar la cobertura del código
Evite usar ensamblaje en línea, operaciones complejas de codificación y decodificación de ABI, y use con precaución nuevas características y funciones experimentales.
Para el personal de seguridad:
Prestar atención a los riesgos que el compilador puede introducir durante la auditoría de seguridad
Impulsar la actualización de la versión del compilador en el proceso de desarrollo de SDL, considerar la introducción de una verificación automática en CI/CD.
Evaluar el impacto real de seguridad de las vulnerabilidades del compilador según las circunstancias del proyecto específico.
Algunos recursos útiles:
Alerta de seguridad publicada oficialmente por Solidity
Lista de errores en el repositorio de GitHub de Solidity
Consejos de seguridad en la página de código de contrato de Etherscan
Al prestar atención a la seguridad del compilador y utilizar adecuadamente los recursos relacionados, los desarrolladores y el personal de seguridad pueden prevenir mejor los riesgos potenciales que conllevan las vulnerabilidades del compilador de Solidity, mejorando así 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.
18 me gusta
Recompensa
18
6
Compartir
Comentar
0/400
MEVSupportGroup
· 07-24 16:22
Un problema con el compilador es un gran desastre...
Ver originalesResponder0
MetaverseLandlord
· 07-24 02:50
¡Advertencia de alta peligrosidad para los programadores actuales!
Ver originalesResponder0
Ramen_Until_Rich
· 07-22 03:21
No te rindas hasta que llegues al río Amarillo.
Ver originalesResponder0
AirdropHunterXM
· 07-22 03:15
¿Cómo empezar a ganar dinero en las pruebas?
Ver originalesResponder0
LiquidityWitch
· 07-22 03:15
El riesgo de desbordamiento es una locura.
Ver originalesResponder0
SelfStaking
· 07-22 03:06
Un montón de prisa, actualiza a la última versión.
Análisis de vulnerabilidades del compilador de Solidity y medidas de prevención
Análisis de vulnerabilidades del compilador Solidity y medidas de prevención
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, y su función principal es convertir el código fuente de lenguajes de programación de alto nivel en instrucciones de código ejecutables por la computadora. Aunque la mayoría de los desarrolladores y personal de seguridad suelen centrarse en la seguridad del código de las aplicaciones, la seguridad del propio compilador tampoco debe pasarse por alto. De hecho, como un programa informático, el compilador también puede tener vulnerabilidades de seguridad, lo que en algunos casos puede conllevar riesgos de seguridad graves.
El propósito del compilador de Solidity es 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 en sí de la EVM, las vulnerabilidades del compilador de Solidity se refieren principalmente a problemas que surgen durante el proceso de conversión del código. Este tipo de vulnerabilidades no afectarán directamente a la red de Ethereum, pero pueden resultar en que el código EVM generado no coincida con lo que el desarrollador esperaba, lo que puede provocar consecuencias graves.
A continuación se presentan algunos ejemplos reales de vulnerabilidades del compilador Solidity:
La vulnerabilidad existe en versiones tempranas del compilador Solidity (>=0.1.6 <0.4.4). Puede hacer que las variables de almacenamiento devuelvan valores no esperados sin haber sido modificadas. Esta inconsistencia puede causar problemas graves en operaciones críticas como la verificación de permisos o la contabilidad de activos.
Esta vulnerabilidad afecta a los compiladores de las versiones >=0.8.13 y <0.8.15. Se origina en el hecho de que el compilador eliminó incorrectamente, durante el proceso de optimización, instrucciones de operaciones de memoria que parecen redundantes pero que son necesarias, lo que provoca que el valor de retorno de la función no coincida con lo esperado.
La vulnerabilidad afecta a compiladores de versiones >= 0.5.8 y < 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, el compilador eliminó incorrectamente algunos datos, lo que provocó que los datos adyacentes se modificaran, lo que finalmente resultó en una incoherencia en los datos después de la codificación y decodificación.
Para hacer frente a los riesgos derivados de las vulnerabilidades del compilador de Solidity, el equipo de seguridad blockchain de Cobo propone las siguientes recomendaciones:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos útiles:
Al prestar atención a la seguridad del compilador y utilizar adecuadamente los recursos relacionados, los desarrolladores y el personal de seguridad pueden prevenir mejor los riesgos potenciales que conllevan las vulnerabilidades del compilador de Solidity, mejorando así la seguridad general de los contratos inteligentes.