Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
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 ejecutable a nivel de máquina. 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 graves riesgos de seguridad.
El papel del compilador de Solidity es convertir el código de contratos inteligentes en código de instrucciones de la máquina virtual de Ethereum (EVM). A diferencia de las vulnerabilidades de la propia EVM, las vulnerabilidades del compilador de Solidity ocurren principalmente durante el proceso de compilación, no afectan directamente a la red de Ethereum en sí, pero pueden dar lugar a que el código de EVM generado no coincida con las expectativas del desarrollador, lo que puede provocar errores en la ejecución del contrato inteligente e incluso la pérdida de activos de los usuarios.
A continuación, se presentan varios casos reales para ilustrar las formas, causas y peligros específicos de las vulnerabilidades del compilador de Solidity:
SOL-2016-9 AlmacenamientoLimpioDeByteDeOrdenAlto
La vulnerabilidad existe en las versiones tempranas del compilador Solidity (\u003e=0.1.6 \u003c0.4.4). En ciertos casos, el compilador no eliminó correctamente los bits altos después de un desbordamiento de enteros, lo que provocó modificaciones inesperadas en las variables adyacentes. Esto podría causar errores en la lógica crítica como la verificación de permisos o la contabilidad de activos.
SOL-2022-4 Efectos Secundarios de Memoria en InlineAssembly
La vulnerabilidad existe en las versiones del compilador de 0.8.13 a 0.8.15. Debido a una implementación incorrecta de la estrategia de optimización de compilación, es posible que se eliminen erróneamente las instrucciones de escritura de memoria en el ensamblado en línea, lo que provoca inconsistencias en los datos.
La vulnerabilidad afecta a los compiladores de las versiones 0.5.8 a 0.8.16. Al codificar en abi un array de tipo calldata, se limpiaron incorrectamente ciertos datos, lo que provocó que los datos adyacentes se modificaran, causando inconsistencias en los resultados de codificación y decodificación.
En relación con las vulnerabilidades del compilador de Solidity, se recomienda a los desarrolladores y personal de seguridad que tomen las siguientes medidas:
Para los desarrolladores:
Utilizar una versión más reciente del compilador de Solidity
Mejorar los casos de prueba unitarios para aumentar la cobertura del código
Evita el uso de operaciones propensas a errores, como ensamblaje en línea y codificación/decodificación ABI compleja.
Para el personal de seguridad:
Prestar atención a los riesgos que puede introducir la versión del compilador durante la auditoría.
Incluir la verificación de la versión del compilador en el proceso de desarrollo
Evaluar el impacto real de las vulnerabilidades del compilador según el proyecto específico.
Algunos recursos útiles:
Alerta de seguridad oficial de Solidity
Lista de errores del repositorio de GitHub de Solidity
Mensaje de advertencia sobre vulnerabilidades del compilador en la página de código del contrato de Etherscan
Al comprender las características de las vulnerabilidades del compilador de Solidity y tomar medidas adecuadas, se puede reducir eficazmente el riesgo de problemas de seguridad en los contratos inteligentes debido a problemas con el compilador.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
7 me gusta
Recompensa
7
5
Compartir
Comentar
0/400
GateUser-bd883c58
· hace10h
Parece que el compilador tampoco es confiable.
Ver originalesResponder0
HashRatePhilosopher
· hace10h
¿Este compilador es bueno o no?
Ver originalesResponder0
LiquidationWatcher
· hace10h
he estado allí, he perdido demasiado... verifica tu versión del compilador o te quedas arruinado frfr
Análisis de los riesgos de vulnerabilidades del compilador Solidity y estrategias de mitigación
Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
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 ejecutable a nivel de máquina. 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 graves riesgos de seguridad.
El papel del compilador de Solidity es convertir el código de contratos inteligentes en código de instrucciones de la máquina virtual de Ethereum (EVM). A diferencia de las vulnerabilidades de la propia EVM, las vulnerabilidades del compilador de Solidity ocurren principalmente durante el proceso de compilación, no afectan directamente a la red de Ethereum en sí, pero pueden dar lugar a que el código de EVM generado no coincida con las expectativas del desarrollador, lo que puede provocar errores en la ejecución del contrato inteligente e incluso la pérdida de activos de los usuarios.
A continuación, se presentan varios casos reales para ilustrar las formas, causas y peligros específicos de las vulnerabilidades del compilador de Solidity:
La vulnerabilidad existe en las versiones tempranas del compilador Solidity (\u003e=0.1.6 \u003c0.4.4). En ciertos casos, el compilador no eliminó correctamente los bits altos después de un desbordamiento de enteros, lo que provocó modificaciones inesperadas en las variables adyacentes. Esto podría causar errores en la lógica crítica como la verificación de permisos o la contabilidad de activos.
La vulnerabilidad existe en las versiones del compilador de 0.8.13 a 0.8.15. Debido a una implementación incorrecta de la estrategia de optimización de compilación, es posible que se eliminen erróneamente las instrucciones de escritura de memoria en el ensamblado en línea, lo que provoca inconsistencias en los datos.
La vulnerabilidad afecta a los compiladores de las versiones 0.5.8 a 0.8.16. Al codificar en abi un array de tipo calldata, se limpiaron incorrectamente ciertos datos, lo que provocó que los datos adyacentes se modificaran, causando inconsistencias en los resultados de codificación y decodificación.
En relación con las vulnerabilidades del compilador de Solidity, se recomienda a los desarrolladores y personal de seguridad que tomen las siguientes medidas:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos útiles:
Al comprender las características de las vulnerabilidades del compilador de Solidity y tomar medidas adecuadas, se puede reducir eficazmente el riesgo de problemas de seguridad en los contratos inteligentes debido a problemas con el compilador.