Análisis de vulnerabilidades del compilador de Solidity y estrategias de respuesta
El compilador es uno de los componentes fundamentales de los sistemas informáticos modernos, y su función es convertir el código fuente de un lenguaje de programación de alto nivel en instrucciones de código ejecutables por la computadora. Al igual que el código de las aplicaciones, el propio compilador también puede tener vulnerabilidades de seguridad, lo que en ciertos casos puede presentar 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 para la Máquina Virtual de Ethereum (EVM). A diferencia de las vulnerabilidades de la propia EVM, las vulnerabilidades del compilador de Solidity no afectan directamente a la red de Ethereum, pero pueden resultar en que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede provocar problemas de seguridad en los contratos inteligentes.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores Solidity:
SOL-2016-9 HighOrderByteCleanStorage
La vulnerabilidad existe en versiones anteriores del compilador de Solidity ( >= 0.1.6 < 0.4.4). En ciertos casos, el compilador no limpia correctamente los bytes de mayor orden, lo que lleva a la modificación accidental del valor de las variables de almacenamiento.
SOL-2022-4 InlineAssemblyMemorySideEffects
La vulnerabilidad existe en las versiones del compilador de 0.8.13 a 0.8.15. Debido al manejo incorrecto de los bloques de assembly durante el proceso de optimización de compilación, puede provocar que las operaciones de escritura en memoria se eliminen incorrectamente.
SOL-2022-6 Overflow de Cabeza de Recodificación Abi con Limpieza de Arreglo Estático
La vulnerabilidad afecta a las versiones del compilador desde la 0.5.8 hasta la 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, es posible que se eliminen incorrectamente algunos datos, lo que provoca la modificación de datos adyacentes.
Para las vulnerabilidades del compilador Solidity, el equipo de seguridad de la blockchain de Cobo sugiere las siguientes recomendaciones:
Para los desarrolladores:
Utilizar una versión más reciente del compilador de Solidity
Mejorar los casos de prueba unitarios
Evite el uso de características de lenguaje complejas, como ensamblado en línea, codificación y decodificación de ABI de arreglos multidimensionales, 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 real en la seguridad de las vulnerabilidades del compilador según las circunstancias específicas
Algunos recursos útiles:
Blog de alertas de seguridad oficial de Solidity
Lista de errores en el repositorio de GitHub de Solidity
Lista de errores del compilador de varias versiones
Aviso de vulnerabilidad del compilador en la página de código del contrato de Etherscan
Al comprender las características y efectos de las vulnerabilidades del compilador de Solidity, los desarrolladores y los profesionales de la seguridad pueden evaluar de manera más integral los riesgos de seguridad de los contratos inteligentes y tomar las medidas preventivas adecuadas.
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.
20 me gusta
Recompensa
20
5
Compartir
Comentar
0/400
blocksnark
· 07-10 15:09
El dinero de los bugs es el más sabroso.
Ver originalesResponder0
BlockchainDecoder
· 07-08 10:18
Según el artículo clásico Análisis del Compilador Solidity (2022), el coeficiente de riesgo de este tipo de vulnerabilidades alcanza el 78.3%, se recomienda adoptar con precaución la versión 0.8.0 o superior para evitarlo.
Ver originalesResponder0
DaisyUnicorn
· 07-08 10:14
Yingying, el compilador también tiene un pequeño error. ¡Vamos a actualizar a una nueva versión rápidamente!
Ver originalesResponder0
FlashLoanLarry
· 07-08 10:13
simplemente otro día en defi... exploits de compilador = oportunidades infinitas de mev, para ser honesto
Ver originalesResponder0
AlphaLeaker
· 07-08 10:04
Ni siquiera una nueva actualización puede resistir a los hackers.
Análisis de vulnerabilidades del compilador Solidity y estrategias de prevención
Análisis de vulnerabilidades del compilador de Solidity y estrategias de respuesta
El compilador es uno de los componentes fundamentales de los sistemas informáticos modernos, y su función es convertir el código fuente de un lenguaje de programación de alto nivel en instrucciones de código ejecutables por la computadora. Al igual que el código de las aplicaciones, el propio compilador también puede tener vulnerabilidades de seguridad, lo que en ciertos casos puede presentar 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 para la Máquina Virtual de Ethereum (EVM). A diferencia de las vulnerabilidades de la propia EVM, las vulnerabilidades del compilador de Solidity no afectan directamente a la red de Ethereum, pero pueden resultar en que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede provocar problemas de seguridad en los contratos inteligentes.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores Solidity:
La vulnerabilidad existe en versiones anteriores del compilador de Solidity ( >= 0.1.6 < 0.4.4). En ciertos casos, el compilador no limpia correctamente los bytes de mayor orden, lo que lleva a la modificación accidental del valor de las variables de almacenamiento.
La vulnerabilidad existe en las versiones del compilador de 0.8.13 a 0.8.15. Debido al manejo incorrecto de los bloques de assembly durante el proceso de optimización de compilación, puede provocar que las operaciones de escritura en memoria se eliminen incorrectamente.
La vulnerabilidad afecta a las versiones del compilador desde la 0.5.8 hasta la 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, es posible que se eliminen incorrectamente algunos datos, lo que provoca la modificación de datos adyacentes.
Para las vulnerabilidades del compilador Solidity, el equipo de seguridad de la blockchain de Cobo sugiere las siguientes recomendaciones:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos útiles:
Al comprender las características y efectos de las vulnerabilidades del compilador de Solidity, los desarrolladores y los profesionales de la seguridad pueden evaluar de manera más integral los riesgos de seguridad de los contratos inteligentes y tomar las medidas preventivas adecuadas.