Análisis de vulnerabilidades del compilador de Solidity y medidas de respuesta
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, y su 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. Aunque los desarrolladores y el personal de seguridad suelen centrarse en la seguridad del código de las aplicaciones, el compilador en sí, como programa informático, también puede tener vulnerabilidades de seguridad, que en ciertos casos pueden traer 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 se manifiestan principalmente en problemas que pueden surgir al convertir Solidity en código de EVM, lo que no afecta directamente a la red de Ethereum, pero puede llevar a que el código de EVM generado no coincida con las expectativas del desarrollador.
A continuación se presentan algunos ejemplos reales de vulnerabilidades del compilador de Solidity:
SOL-2016-9 HighOrderByteCleanStorage:
La vulnerabilidad existe en las versiones tempranas del compilador Solidity (>=0.1.6 <0.4.4). Debido a que el compilador no limpia correctamente los bits altos al manejar el desbordamiento de enteros, puede llevar a la modificación accidental de variables adyacentes.
SOL-2022-4 Efectos secundarios de memoria InlineAssembly:
La vulnerabilidad existe en los compiladores de las versiones 0.8.13 a 0.8.15. Debido a la optimización del compilador que analiza bloques de ensamblaje individuales, podría eliminar incorrectamente instrucciones de escritura en memoria que parecen redundantes pero que en realidad son útiles.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup:
Esta vulnerabilidad afecta a las versiones de compilador de 0.5.8 a 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, se eliminan incorrectamente ciertos datos, lo que provoca la modificación de datos adyacentes.
Con respecto a las vulnerabilidades del compilador de Solidity, el equipo de seguridad de blockchain de Cobo propone las siguientes recomendaciones:
Para los desarrolladores:
Utiliza una versión más reciente del compilador de Solidity
Mejorar los casos de prueba de unidad
Evitar el uso de ensamblado 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 durante 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:
Alerta de seguridad oficial de Solidity
Lista de errores en el repositorio de GitHub de Solidity
Lista de errores del compilador de varias versiones
Consejos de seguridad en la página de código del contrato de Etherscan
En resumen, los desarrolladores y el personal de seguridad deben prestar atención a los riesgos de seguridad que pueden surgir de las vulnerabilidades del compilador de Solidity, y tomar medidas como actualizar el compilador y mejorar las pruebas 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.
24 me gusta
Recompensa
24
6
Compartir
Comentar
0/400
StakeWhisperer
· 07-21 09:21
¿Ya sigues los bugs del compilador? Este novato me hace reír a muerte.
Ver originalesResponder0
OnchainGossiper
· 07-21 06:50
Acabo de arreglar un error y ya viene otro nuevo... [摊手]
Ver originalesResponder0
blockBoy
· 07-20 10:39
Este es un problema difícil de resolver... ¿quién puede solucionarlo realmente?
Ver originalesResponder0
BearMarketSage
· 07-20 10:39
¿Desarrollar y no saber probar el contrato uno mismo?
Ver originalesResponder0
WalletDetective
· 07-20 10:36
Este compilador es realmente problemático.
Ver originalesResponder0
BrokeBeans
· 07-20 10:34
¡Parece que hay que reescribir el contrato otra vez!
Análisis de las vulnerabilidades del compilador Solidity y sus estrategias de respuesta
Análisis de vulnerabilidades del compilador de Solidity y medidas de respuesta
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, y su 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. Aunque los desarrolladores y el personal de seguridad suelen centrarse en la seguridad del código de las aplicaciones, el compilador en sí, como programa informático, también puede tener vulnerabilidades de seguridad, que en ciertos casos pueden traer 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 se manifiestan principalmente en problemas que pueden surgir al convertir Solidity en código de EVM, lo que no afecta directamente a la red de Ethereum, pero puede llevar a que el código de EVM generado no coincida con las expectativas del desarrollador.
A continuación se presentan algunos ejemplos reales de vulnerabilidades del compilador de Solidity:
SOL-2016-9 HighOrderByteCleanStorage: La vulnerabilidad existe en las versiones tempranas del compilador Solidity (>=0.1.6 <0.4.4). Debido a que el compilador no limpia correctamente los bits altos al manejar el desbordamiento de enteros, puede llevar a la modificación accidental de variables adyacentes.
SOL-2022-4 Efectos secundarios de memoria InlineAssembly: La vulnerabilidad existe en los compiladores de las versiones 0.8.13 a 0.8.15. Debido a la optimización del compilador que analiza bloques de ensamblaje individuales, podría eliminar incorrectamente instrucciones de escritura en memoria que parecen redundantes pero que en realidad son útiles.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Esta vulnerabilidad afecta a las versiones de compilador de 0.5.8 a 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, se eliminan incorrectamente ciertos datos, lo que provoca la modificación de datos adyacentes.
Con respecto a las vulnerabilidades del compilador de Solidity, el equipo de seguridad de blockchain de Cobo propone las siguientes recomendaciones:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos útiles:
En resumen, los desarrolladores y el personal de seguridad deben prestar atención a los riesgos de seguridad que pueden surgir de las vulnerabilidades del compilador de Solidity, y tomar medidas como actualizar el compilador y mejorar las pruebas para reducir los riesgos asociados.