Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador es uno de los componentes fundamentales de los sistemas informáticos modernos, encargado de convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutable por la computadora. Aunque los desarrolladores y los profesionales de seguridad suelen centrarse más en la seguridad del código de las aplicaciones, la seguridad del compilador en sí no debe ser ignorada. Como programa informático, el compilador también puede tener vulnerabilidades de seguridad, que en ciertos casos pueden presentar graves riesgos de seguridad.
El propósito 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 propia EVM, las vulnerabilidades del compilador de Solidity afectan principalmente a los desarrolladores de contratos, sin poner en peligro directamente la seguridad de la red de Ethereum. Sin embargo, las vulnerabilidades del compilador pueden resultar en que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede llevar a pérdidas significativas de activos.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de 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 logró limpiar correctamente los bits altos después de un desbordamiento de enteros, lo que llevó a que el valor de las variables de almacenamiento se modificara accidentalmente.
SOL-2022-4 Efectos Secundarios de Memoria de InlineAssembly
Esta vulnerabilidad afecta a los compiladores de versiones >=0.8.13 <0.8.15. Debido a un problema en la optimización de bloques de ensamblaje en línea por parte del compilador, puede eliminar incorrectamente ciertas operaciones de escritura en memoria, lo que provoca un comportamiento anómalo del programa.
La vulnerabilidad existe en compiladores de la versión >= 0.5.8 < 0.8.16. Al realizar la operación abi.encode en un array del tipo calldata, el compilador limpia incorrectamente ciertos datos, lo que provoca que los datos adyacentes sean modificados, causando una inconsistencia en los datos después de la codificación y decodificación.
Para abordar los riesgos derivados de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las siguientes medidas:
Para desarrolladores:
Utiliza una versión más reciente del compilador de Solidity, ya que las nuevas versiones suelen corregir problemas de seguridad conocidos.
Mejorar los casos de prueba unitarios, aumentar la cobertura del código, ayuda a descubrir comportamientos anómalos introducidos por el compilador.
Intenta evitar el uso de ensamblador en línea, codificación y decodificación ABI complejas y otras operaciones que puedan causar problemas.
Para el personal de seguridad:
Durante la auditoría de seguridad, no subestimes los riesgos de seguridad que puede introducir el compilador.
En el proceso de desarrollo interno, se alienta al equipo de desarrollo a actualizar la versión del compilador a tiempo y considerar la introducción de una verificación automática de la versión del compilador en el proceso de CI/CD.
Mantente alerta ante las vulnerabilidades del compilador, pero no es necesario entrar en pánico excesivo. La mayoría de las vulnerabilidades solo se activan en patrones de código específicos, y es necesario evaluar el impacto real según las circunstancias.
Algunos recursos útiles:
Alertas de seguridad publicadas regularmente por el equipo de Solidity
Lista de vulnerabilidades actualizada periódicamente en el repositorio oficial de Solidity
Lista de vulnerabilidades de los compiladores de varias versiones, que se puede utilizar para la verificación automática en el proceso de CI/CD.
El icono de advertencia en la esquina superior derecha de la página de código del contrato de Etherscan puede indicar vulnerabilidades de seguridad en la versión actual del compilador.
Al comprender las características y riesgos de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las medidas preventivas adecuadas para proteger mejor la seguridad de los contratos inteligentes y reducir el riesgo de pérdidas de activos potenciales.
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.
15 me gusta
Recompensa
15
6
Compartir
Comentar
0/400
AirdropHunterKing
· hace2h
Después de tanto tiempo probando contratos, todavía caí en ellos y comí un montón de aire. ¡Hermanitos, no copien los contratos antiguos!
Ver originalesResponder0
Layer3Dreamer
· hace5h
teóricamente hablando, los errores de compilador = suposiciones de confianza recursivas, para ser honesto
Ver originalesResponder0
IntrovertMetaverse
· hace5h
¡La revisión de desbordamiento debe ser completa!
Ver originalesResponder0
NftDeepBreather
· hace5h
Esta vulnerabilidad es explosiva.
Ver originalesResponder0
RunWhenCut
· hace5h
Otra vez el viejo chiste de un fallo en el compilador, ¿no es molesto?
Ver originalesResponder0
FarmToRiches
· hace5h
Si no completas la prueba, prepárate para perder todo.
Análisis de las vulnerabilidades del compilador Solidity y sus estrategias de respuesta
Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
El compilador es uno de los componentes fundamentales de los sistemas informáticos modernos, encargado de convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutable por la computadora. Aunque los desarrolladores y los profesionales de seguridad suelen centrarse más en la seguridad del código de las aplicaciones, la seguridad del compilador en sí no debe ser ignorada. Como programa informático, el compilador también puede tener vulnerabilidades de seguridad, que en ciertos casos pueden presentar graves riesgos de seguridad.
El propósito 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 propia EVM, las vulnerabilidades del compilador de Solidity afectan principalmente a los desarrolladores de contratos, sin poner en peligro directamente la seguridad de la red de Ethereum. Sin embargo, las vulnerabilidades del compilador pueden resultar en que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede llevar a pérdidas significativas de activos.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
La vulnerabilidad existe en versiones anteriores del compilador de Solidity ( >=0.1.6 <0.4.4). En ciertos casos, el compilador no logró limpiar correctamente los bits altos después de un desbordamiento de enteros, lo que llevó a que el valor de las variables de almacenamiento se modificara accidentalmente.
Esta vulnerabilidad afecta a los compiladores de versiones >=0.8.13 <0.8.15. Debido a un problema en la optimización de bloques de ensamblaje en línea por parte del compilador, puede eliminar incorrectamente ciertas operaciones de escritura en memoria, lo que provoca un comportamiento anómalo del programa.
La vulnerabilidad existe en compiladores de la versión >= 0.5.8 < 0.8.16. Al realizar la operación abi.encode en un array del tipo calldata, el compilador limpia incorrectamente ciertos datos, lo que provoca que los datos adyacentes sean modificados, causando una inconsistencia en los datos después de la codificación y decodificación.
Para abordar 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:
Algunos recursos útiles:
Al comprender las características y riesgos de las vulnerabilidades del compilador de Solidity, los desarrolladores y el personal de seguridad pueden tomar las medidas preventivas adecuadas para proteger mejor la seguridad de los contratos inteligentes y reducir el riesgo de pérdidas de activos potenciales.