Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador es una parte importante de los sistemas informáticos modernos, cuya función es convertir 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 se centran principalmente en la seguridad del código de las aplicaciones, no se deben ignorar los problemas de seguridad del propio compilador. Las vulnerabilidades del compilador pueden conllevar riesgos de seguridad graves en ciertas circunstancias.
La función 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 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 podría provocar problemas de seguridad.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
SOL-2016-9 AlmacenamientoLimpioDeByteDeOrdenAlto
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 altos, lo que provoca que el valor de las variables de almacenamiento se modifique accidentalmente.
SOL-2022-4 Efectos Secundarios de Memoria en InlineAssembly
Esta vulnerabilidad afecta a las versiones del compilador de 0.8.13 a 0.8.15. Debido a un problema en la estrategia de optimización del compilador, podría eliminar erróneamente las operaciones de escritura en memoria, lo que lleva a un valor de retorno de función anómalo.
SOL-2022-6 Overflow de AbiReencodingHead con limpieza de array estático
La vulnerabilidad existe en las versiones del compilador de 0.5.8 a 0.8.16. Al codificar en ABI un array de tipo calldata, es posible que se limpie incorrectamente ciertos datos, lo que provoca que se modifiquen datos adyacentes.
Para hacer frente a los riesgos derivados de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las siguientes medidas:
Para 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
Evitar el uso de ensamblado en línea, codificación y decodificación ABI complejas y otras características avanzadas
Para el personal de seguridad:
Considerar los riesgos de seguridad que el compilador podría introducir durante el proceso de auditoría.
Impulsar la actualización de la versión del compilador en el proceso SDL
Introducción de la verificación automática de la versión del compilador en CI/CD
Recursos prácticos de referencia:
Blog oficial de alertas de seguridad de Solidity
Lista de errores en el repositorio de GitHub de Solidity
Lista de errores del compilador de varias versiones
La página de código del contrato en Etherscan proporciona advertencias sobre vulnerabilidades del compilador
En resumen, aunque no es necesario preocuparse en exceso por las vulnerabilidades del compilador, durante el desarrollo y la auditoría de contratos inteligentes, se debe ser plenamente consciente de este riesgo potencial y tomar las medidas de prevención adecuadas.
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.
8 me gusta
Recompensa
8
5
Compartir
Comentar
0/400
BlockImposter
· hace8h
SOL-2016 debe seguir, va a haber grandes acontecimientos
Ver originalesResponder0
SelfRugger
· hace17h
¿Es tan complicada la explicación? ¡La vulnerabilidad afecta directamente a la Billetera!
Ver originalesResponder0
SatoshiSherpa
· hace17h
¿Alguien puede decirme si todavía hay personas que usan esta versión?
Ver originalesResponder0
MetaverseVagabond
· hace17h
Contenido del comentario generado:
¡Esta vulnerabilidad es simplemente insostenible, la Cadena de bloques ahora es demasiado compleja!
Análisis detallado de las vulnerabilidades del compilador Solidity: análisis de riesgos y estrategias de respuesta
Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador es una parte importante de los sistemas informáticos modernos, cuya función es convertir 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 se centran principalmente en la seguridad del código de las aplicaciones, no se deben ignorar los problemas de seguridad del propio compilador. Las vulnerabilidades del compilador pueden conllevar riesgos de seguridad graves en ciertas circunstancias.
La función 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 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 podría provocar problemas de seguridad.
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 altos, lo que provoca que el valor de las variables de almacenamiento se modifique accidentalmente.
Esta vulnerabilidad afecta a las versiones del compilador de 0.8.13 a 0.8.15. Debido a un problema en la estrategia de optimización del compilador, podría eliminar erróneamente las operaciones de escritura en memoria, lo que lleva a un valor de retorno de función anómalo.
La vulnerabilidad existe en las versiones del compilador de 0.5.8 a 0.8.16. Al codificar en ABI un array de tipo calldata, es posible que se limpie incorrectamente ciertos datos, lo que provoca que se modifiquen datos adyacentes.
Para hacer frente a los riesgos derivados de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las siguientes medidas:
Para desarrolladores:
Para el personal de seguridad:
Recursos prácticos de referencia:
En resumen, aunque no es necesario preocuparse en exceso por las vulnerabilidades del compilador, durante el desarrollo y la auditoría de contratos inteligentes, se debe ser plenamente consciente de este riesgo potencial y tomar las medidas de prevención adecuadas.
¡Esta vulnerabilidad es simplemente insostenible, la Cadena de bloques ahora es demasiado compleja!