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, cuya función es convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutables por la computadora. En comparación con el código de las aplicaciones, la seguridad del propio compilador a menudo puede ser pasada por alto. Sin embargo, el compilador como programa informático también puede tener vulnerabilidades de seguridad, lo que en ciertos casos puede conllevar serios riesgos de seguridad.
El propósito del compilador de Solidity es convertir el código de contratos inteligentes en código de instrucciones para la máquina virtual de Ethereum (EVM). A diferencia de las vulnerabilidades de la EVM en sí, las vulnerabilidades del compilador de Solidity no afectan directamente a la red de Ethereum, pero pueden llevar a que el código EVM generado no coincida con las expectativas del desarrollador, lo que a su vez puede provocar problemas de seguridad en los contratos inteligentes.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
SOL-2016-9 HighOrderByteCleanStorage
La vulnerabilidad existe en versiones tempranas del compilador Solidity (>=0.1.6 <0.4.4). En ciertos casos, el compilador no limpia correctamente los bytes de alto orden, lo que lleva a que el valor de la variable se modifique accidentalmente.
SOL-2022-4 Efectos secundarios de memoria de InlineAssembly
La vulnerabilidad afecta a los compiladores de las versiones 0.8.13 a 0.8.15. Debido a un manejo incorrecto de un bloque de assembly durante el proceso de optimización de compilación, las operaciones de memoria pueden ser eliminadas incorrectamente.
Esta vulnerabilidad afecta a los compiladores de las versiones 0.5.8 a 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, se limpiaron erróneamente ciertos datos, lo que provocó la modificación de datos adyacentes.
Ante las vulnerabilidades del compilador Solidity, se proponen las siguientes recomendaciones de seguridad:
Para los desarrolladores:
Utiliza una versión más reciente del compilador Solidity
Mejorar los casos de prueba unitarios
Evitar el uso de ensamblaje en línea, operaciones complejas de codificación y decodificación de ABI, etc.
Para el personal de seguridad:
Considerar los riesgos de seguridad que el compilador puede introducir durante la auditoría
Instar a actualizar la versión del compilador en el proceso de desarrollo
Evaluar el impacto de seguridad real de las vulnerabilidades del compilador según las circunstancias específicas.
Algunos recursos prácticos:
Blog de alertas de seguridad oficial de Solidity
Lista de errores en el repositorio de GitHub de Solidity
Advertencia de vulnerabilidad del compilador en la página de código del contrato de Etherscan
En resumen, aunque no se debe entrar en pánico excesivo por las vulnerabilidades del compilador, los desarrolladores y el personal de seguridad deben mantener la vigilancia y tomar las medidas adecuadas para reducir los riesgos asociados.
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.
12 me gusta
Recompensa
12
5
Compartir
Comentar
0/400
hodl_therapist
· hace21h
¡Atención, los reyes de los volúmenes, cuiden su salud!
Ver originalesResponder0
CommunitySlacker
· hace21h
La vulnerabilidad ha sido revisada, ¡qué molesto!
Ver originalesResponder0
GasGuru
· hace21h
No me atrevo a operar en contratos.
Ver originalesResponder0
SmartContractRebel
· hace22h
Me parece que el compilador es demasiado dulce.
Ver originalesResponder0
PebbleHander
· hace22h
¿Qué hacemos con la nueva vulnerabilidad del contrato...? No te preocupes.
Análisis de vulnerabilidades del compilador 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, cuya función es convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutables por la computadora. En comparación con el código de las aplicaciones, la seguridad del propio compilador a menudo puede ser pasada por alto. Sin embargo, el compilador como programa informático también puede tener vulnerabilidades de seguridad, lo que en ciertos casos puede conllevar serios riesgos de seguridad.
El propósito del compilador de Solidity es convertir el código de contratos inteligentes en código de instrucciones para la máquina virtual de Ethereum (EVM). A diferencia de las vulnerabilidades de la EVM en sí, las vulnerabilidades del compilador de Solidity no afectan directamente a la red de Ethereum, pero pueden llevar a que el código EVM generado no coincida con las expectativas del desarrollador, lo que a su vez puede provocar problemas de seguridad en los contratos inteligentes.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
La vulnerabilidad existe en versiones tempranas del compilador Solidity (>=0.1.6 <0.4.4). En ciertos casos, el compilador no limpia correctamente los bytes de alto orden, lo que lleva a que el valor de la variable se modifique accidentalmente.
La vulnerabilidad afecta a los compiladores de las versiones 0.8.13 a 0.8.15. Debido a un manejo incorrecto de un bloque de assembly durante el proceso de optimización de compilación, las operaciones de memoria pueden ser eliminadas incorrectamente.
Esta vulnerabilidad afecta a los compiladores de las versiones 0.5.8 a 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, se limpiaron erróneamente ciertos datos, lo que provocó la modificación de datos adyacentes.
Ante las vulnerabilidades del compilador Solidity, se proponen las siguientes recomendaciones de seguridad:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos prácticos:
En resumen, aunque no se debe entrar en pánico excesivo por las vulnerabilidades del compilador, los desarrolladores y el personal de seguridad deben mantener la vigilancia y tomar las medidas adecuadas para reducir los riesgos asociados.