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 lenguajes de programación de alto nivel en instrucciones de bajo nivel que la computadora puede ejecutar. Aunque la mayoría de los desarrolladores y profesionales de seguridad se centran principalmente en la seguridad del código de las aplicaciones, la seguridad del propio compilador también es importante. Como un programa informático, el compilador también puede tener vulnerabilidades de seguridad, lo que en ciertos casos puede presentar riesgos de seguridad graves.
El papel del compilador de Solidity es convertir el código del contrato inteligente en 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 inteligentes y no amenazan directamente la seguridad de la red de Ethereum. Sin embargo, las vulnerabilidades del compilador pueden llevar a que el código EVM generado no coincida con lo que el desarrollador esperaba, lo que podría resultar en pérdidas de activos de los usuarios y otras consecuencias graves.
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). El problema radica en que la EVM utiliza elementos de pila de 32 bytes, mientras que Solidity admite tipos de datos más pequeños. En ciertos casos, el compilador no limpia correctamente los bytes más altos, lo que provoca una sobrescritura de datos inesperada.
SOL-2022-4 Efectos secundarios en la memoria de InlineAssembly
Esta vulnerabilidad afecta a las versiones >=0.8.13 <0.8.15 del compilador. El problema surge de un manejo incorrecto de los bloques de ensamblado en línea durante el proceso de optimización del compilador, lo que provoca que ciertas operaciones de escritura en memoria sean eliminadas incorrectamente.
SOL-2022-6 Overflow de AbiReencodingHead con limpieza de array estático
La vulnerabilidad existe en los compiladores de versiones >=0.5.8 <0.8.16. Al realizar la codificación ABI de ciertos tipos de arreglos de calldata, una operación de limpieza de datos incorrecta provoca que los datos adyacentes se modifiquen, lo que resulta en inconsistencias en los resultados de codificación y decodificación.
Con respecto a las vulnerabilidades del compilador de Solidity, ofrecemos las siguientes recomendaciones:
Para los desarrolladores:
Utilizar una versión más reciente del compilador Solidity
Mejorar los casos de prueba de unidad 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 puede introducir durante la auditoría.
Supervisar la actualización de la versión del compilador en el proceso de desarrollo
Introducir la verificación automática de la versión del compilador en CI/CD
Algunos recursos prácticos:
Alerta de seguridad oficial de Solidity
Lista de errores en el repositorio de Solidity
Lista de errores del compilador de versiones
Advertencia de vulnerabilidad del compilador en Etherscan
En resumen, aunque no es necesario preocuparse en exceso por las vulnerabilidades del compilador, durante el proceso de desarrollo y auditoría de contratos inteligentes, se debe prestar plena atención a esta amenaza potencial de seguridad. Al tomar las precauciones adecuadas, se puede minimizar el riesgo que representan las vulnerabilidades del compilador.
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.
9 me gusta
Recompensa
9
7
Compartir
Comentar
0/400
BoredApeResistance
· 07-08 04:11
Es mejor ser cauteloso con el código.
Ver originalesResponder0
SelfCustodyBro
· 07-06 15:49
¿Todavía estás escribiendo código? Primero ve a casa a probar.
Ver originalesResponder0
TokenDustCollector
· 07-05 04:47
Antes de revisar el contrato, también hay que revisar el compilador.
Ver originalesResponder0
0xSoulless
· 07-05 04:46
Todos los días me toman por tonto, sería mejor que el compilador me cortara de una vez.
Ver originalesResponder0
SmartContractPlumber
· 07-05 04:43
Sé que todos están ansiosos por lanzar en Mainnet, pero ¿te atreves a hacerlo con vulnerabilidades?
Ver originalesResponder0
ConsensusDissenter
· 07-05 04:39
Otra vez se estrellan los contratos inteligentes.
Ver originalesResponder0
BoredWatcher
· 07-05 04:28
¿Por qué todavía hay tantos fallos? Es una lástima.
Vulnerabilidades del compilador Solidity: Lo que los desarrolladores deben saber y estrategias de respuesta
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 lenguajes de programación de alto nivel en instrucciones de bajo nivel que la computadora puede ejecutar. Aunque la mayoría de los desarrolladores y profesionales de seguridad se centran principalmente en la seguridad del código de las aplicaciones, la seguridad del propio compilador también es importante. Como un programa informático, el compilador también puede tener vulnerabilidades de seguridad, lo que en ciertos casos puede presentar riesgos de seguridad graves.
El papel del compilador de Solidity es convertir el código del contrato inteligente en 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 inteligentes y no amenazan directamente la seguridad de la red de Ethereum. Sin embargo, las vulnerabilidades del compilador pueden llevar a que el código EVM generado no coincida con lo que el desarrollador esperaba, lo que podría resultar en pérdidas de activos de los usuarios y otras consecuencias graves.
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). El problema radica en que la EVM utiliza elementos de pila de 32 bytes, mientras que Solidity admite tipos de datos más pequeños. En ciertos casos, el compilador no limpia correctamente los bytes más altos, lo que provoca una sobrescritura de datos inesperada.
Esta vulnerabilidad afecta a las versiones >=0.8.13 <0.8.15 del compilador. El problema surge de un manejo incorrecto de los bloques de ensamblado en línea durante el proceso de optimización del compilador, lo que provoca que ciertas operaciones de escritura en memoria sean eliminadas incorrectamente.
La vulnerabilidad existe en los compiladores de versiones >=0.5.8 <0.8.16. Al realizar la codificación ABI de ciertos tipos de arreglos de calldata, una operación de limpieza de datos incorrecta provoca que los datos adyacentes se modifiquen, lo que resulta en inconsistencias en los resultados de codificación y decodificación.
Con respecto a las vulnerabilidades del compilador de Solidity, ofrecemos las siguientes recomendaciones:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos prácticos:
En resumen, aunque no es necesario preocuparse en exceso por las vulnerabilidades del compilador, durante el proceso de desarrollo y auditoría de contratos inteligentes, se debe prestar plena atención a esta amenaza potencial de seguridad. Al tomar las precauciones adecuadas, se puede minimizar el riesgo que representan las vulnerabilidades del compilador.