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 es convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutables por la computadora. Aunque la mayoría de los desarrolladores y personal de seguridad suelen centrarse en la seguridad del código de las aplicaciones, la seguridad del propio compilador también es importante. Como programa informático, el compilador también puede tener vulnerabilidades de seguridad, que en ciertas circunstancias pueden representar riesgos de seguridad graves.
Tomando como ejemplo un navegador, durante la compilación y la ejecución del código JavaScript, pueden ocurrir graves consecuencias como la ejecución remota de código debido a vulnerabilidades en el motor de JavaScript. El compilador de Solidity no es una excepción, ya que existen vulnerabilidades de seguridad en múltiples versiones.
El propósito del compilador de Solidity es convertir el código del contrato inteligente en código de instrucciones para la Máquina Virtual de Ethereum (EVM). Es necesario distinguir entre las vulnerabilidades del compilador de Solidity y las vulnerabilidades de la propia EVM. Las vulnerabilidades de la EVM se refieren a problemas de seguridad que surgen durante la ejecución de instrucciones de la máquina virtual, lo que puede afectar a toda la red de Ethereum. Por otro lado, las vulnerabilidades del compilador de Solidity se refieren a problemas en el proceso de compilación, que no afectan directamente a la red de Ethereum, pero pueden llevar a que el código EVM generado no coincida con lo que el desarrollador esperaba.
Una de las amenazas de una vulnerabilidad en el compilador de Solidity es que puede dar lugar a que el código EVM generado difiera de las expectativas del desarrollador del contrato inteligente. Dado que los contratos inteligentes a menudo implican activos de criptomonedas de los usuarios, cualquier error causado por el compilador podría tener graves consecuencias. Es difícil detectar este tipo de problemas solo auditando el código fuente del contrato; se requiere un análisis conjunto de la versión específica del compilador y del patrón de código.
A continuación, se presentan varios ejemplos reales de vulnerabilidades en compiladores de Solidity, mostrando su forma específica, causas y peligros.
La vulnerabilidad SOL-2016-9 HighOrderByteCleanStorage existe en versiones anteriores del compilador Solidity ( >=0.1.6 <0.4.4). Esta vulnerabilidad puede hacer que las variables de almacenamiento devuelvan valores inesperados sin modificaciones. Esta inconsistencia puede causar consecuencias graves en escenarios como la verificación de permisos y la contabilidad de activos.
La vulnerabilidad InlineAssemblyMemorySideEffects en SOL-2022-4 existe en los compiladores de versiones >=0.8.13 <0.8.15. Esta vulnerabilidad se origina en un manejo incorrecto del código de ensamblaje en línea durante el proceso de optimización de compilación, lo que puede llevar a que ciertas operaciones de memoria sean eliminadas incorrectamente.
La vulnerabilidad SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup afecta a compiladores de versiones >= 0.5.8 y < 0.8.16. Esta vulnerabilidad puede provocar inconsistencias de datos al realizar operaciones abi.encode en arreglos de tipo calldata.
Basado en el análisis de las vulnerabilidades del compilador de Solidity, se proponen las siguientes recomendaciones para desarrolladores y personal de seguridad:
Desarrollador:
Utilizar una versión más reciente del compilador Solidity
Mejorar los casos de prueba unitarios y aumentar la cobertura del código
Evita usar ensamblado en línea, operaciones complejas de codificación y decodificación de ABI, etc.
Utiliza con precaución las nuevas características y funciones experimentales
Personal de seguridad:
Considerar los riesgos que el compilador puede introducir durante la auditoría de seguridad
Promover la actualización de la versión del compilador en el proceso SDL
Introducir la verificación automática de la versión del compilador en CI/CD
Evaluar el impacto real de las vulnerabilidades del compilador según el proyecto específico.
Algunos recursos útiles:
Alerta de seguridad publicada oficialmente por Solidity
Lista de errores en el repositorio de GitHub de Solidity
Lista de errores del compilador de cada versión
Advertencia de vulnerabilidad del compilador en Etherscan
En resumen, aunque las vulnerabilidades del compilador Solidity no son comunes, pueden tener consecuencias graves. Los desarrolladores y el personal de seguridad deben mantenerse alerta y tomar las medidas adecuadas para reducir los riesgos.
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.
8 me gusta
Recompensa
8
5
Compartir
Comentar
0/400
MetaverseHobo
· hace23h
Otra vez un montón de vulnerabilidades, ¿qué tanto se preocupan?
Ver originalesResponder0
OfflineValidator
· hace23h
Jugué a perder más de 2k usdt, golpeando a los que entienden la compra baja y la venta alta.
Con el compilador, otra vez hubo un fallo...
Ver originalesResponder0
FallingLeaf
· hace23h
Me asustó la vulnerabilidad, no me atrevo a jugar a nada.
Ver originalesResponder0
PoetryOnChain
· hace23h
Otra vez seguir la vulnerabilidad. Me escapé, me escapé.
Ver originalesResponder0
AirDropMissed
· hace23h
Otra vez el compilador tiene problemas, no puedo evitar reírme.
Análisis de vulnerabilidades del compilador de Solidity: riesgos, ejemplos 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 es convertir el código fuente de lenguajes de programación de alto nivel en código de instrucciones ejecutables por la computadora. Aunque la mayoría de los desarrolladores y personal de seguridad suelen centrarse en la seguridad del código de las aplicaciones, la seguridad del propio compilador también es importante. Como programa informático, el compilador también puede tener vulnerabilidades de seguridad, que en ciertas circunstancias pueden representar riesgos de seguridad graves.
Tomando como ejemplo un navegador, durante la compilación y la ejecución del código JavaScript, pueden ocurrir graves consecuencias como la ejecución remota de código debido a vulnerabilidades en el motor de JavaScript. El compilador de Solidity no es una excepción, ya que existen vulnerabilidades de seguridad en múltiples versiones.
El propósito del compilador de Solidity es convertir el código del contrato inteligente en código de instrucciones para la Máquina Virtual de Ethereum (EVM). Es necesario distinguir entre las vulnerabilidades del compilador de Solidity y las vulnerabilidades de la propia EVM. Las vulnerabilidades de la EVM se refieren a problemas de seguridad que surgen durante la ejecución de instrucciones de la máquina virtual, lo que puede afectar a toda la red de Ethereum. Por otro lado, las vulnerabilidades del compilador de Solidity se refieren a problemas en el proceso de compilación, que no afectan directamente a la red de Ethereum, pero pueden llevar a que el código EVM generado no coincida con lo que el desarrollador esperaba.
Una de las amenazas de una vulnerabilidad en el compilador de Solidity es que puede dar lugar a que el código EVM generado difiera de las expectativas del desarrollador del contrato inteligente. Dado que los contratos inteligentes a menudo implican activos de criptomonedas de los usuarios, cualquier error causado por el compilador podría tener graves consecuencias. Es difícil detectar este tipo de problemas solo auditando el código fuente del contrato; se requiere un análisis conjunto de la versión específica del compilador y del patrón de código.
A continuación, se presentan varios ejemplos reales de vulnerabilidades en compiladores de Solidity, mostrando su forma específica, causas y peligros.
La vulnerabilidad SOL-2016-9 HighOrderByteCleanStorage existe en versiones anteriores del compilador Solidity ( >=0.1.6 <0.4.4). Esta vulnerabilidad puede hacer que las variables de almacenamiento devuelvan valores inesperados sin modificaciones. Esta inconsistencia puede causar consecuencias graves en escenarios como la verificación de permisos y la contabilidad de activos.
La vulnerabilidad InlineAssemblyMemorySideEffects en SOL-2022-4 existe en los compiladores de versiones >=0.8.13 <0.8.15. Esta vulnerabilidad se origina en un manejo incorrecto del código de ensamblaje en línea durante el proceso de optimización de compilación, lo que puede llevar a que ciertas operaciones de memoria sean eliminadas incorrectamente.
La vulnerabilidad SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup afecta a compiladores de versiones >= 0.5.8 y < 0.8.16. Esta vulnerabilidad puede provocar inconsistencias de datos al realizar operaciones abi.encode en arreglos de tipo calldata.
Basado en el análisis de las vulnerabilidades del compilador de Solidity, se proponen las siguientes recomendaciones para desarrolladores y personal de seguridad:
Desarrollador:
Personal de seguridad:
Algunos recursos útiles:
En resumen, aunque las vulnerabilidades del compilador Solidity no son comunes, pueden tener consecuencias graves. Los desarrolladores y el personal de seguridad deben mantenerse alerta y tomar las medidas adecuadas para reducir los riesgos.
Con el compilador, otra vez hubo un fallo...