Análisis de vulnerabilidades del compilador de Solidity y medidas de respuesta
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, cuya función es convertir el código fuente de 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 suelen centrarse en la seguridad del código de las aplicaciones, la seguridad del propio compilador también es importante. Las vulnerabilidades del compilador pueden conllevar riesgos de seguridad graves en situaciones específicas, por ejemplo, cuando un navegador está interpretando y ejecutando código Javascript, podría resultar en la ejecución remota de código debido a vulnerabilidades en el motor de análisis.
El compilador de Solidity no es una excepción, ya que existen vulnerabilidades de seguridad en varias versiones. 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). Es importante tener en cuenta que las vulnerabilidades del compilador de Solidity son diferentes de las vulnerabilidades de la EVM en sí. Las vulnerabilidades de la EVM pueden afectar a toda la red de Ethereum, mientras que las vulnerabilidades del compilador de Solidity afectan principalmente a los desarrolladores de contratos inteligentes y a los usuarios.
Una de las peligros de las vulnerabilidades del compilador de Solidity es que puede llevar a que el código EVM generado no coincida con lo que el desarrollador esperaba. Dado que los contratos inteligentes a menudo implican los activos de criptomonedas de los usuarios, cualquier error causado por el compilador puede tener graves consecuencias. Este tipo de problemas son difíciles de detectar mediante una simple auditoría de código y requieren un análisis conjunto de la versión específica del compilador y el patrón de código.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
SOL-2016-9 HighOrderByteCleanStorage:
La vulnerabilidad existe en las versiones tempranas del compilador de Solidity (>=0.1.6 <0.4.4). Debido a que el compilador no maneja correctamente las operaciones de limpieza de los bits altos después de un desbordamiento de enteros, esto puede provocar que los valores de las variables adyacentes se modifiquen accidentalmente.
SOL-2022-4 InlineAssemblyMemorySideEffects:
La vulnerabilidad existe en compiladores de versiones >=0.8.13 <0.8.15. Debido a un manejo incorrecto del código de ensamblaje en línea durante el proceso de optimización del compilador, algunas operaciones de memoria pueden ser eliminadas incorrectamente.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup:
La vulnerabilidad afecta a las versiones de compiladores >= 0.5.8 < 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, podría eliminar incorrectamente ciertos datos, lo que provoca que los datos adyacentes sean modificados.
Con respecto a la vulnerabilidad del compilador de Solidity, el equipo de seguridad blockchain de Cobo sugiere lo siguiente:
Para los desarrolladores:
Utiliza una versión más reciente del compilador de Solidity
Mejorar los casos de prueba unitarios
Evitar el uso de ensamblaje en línea, operaciones complejas de codificación y decodificación de ABI, etc.
Usa con precaución las nuevas características del lenguaje y las funciones experimentales
Para el personal de seguridad:
Considerar los riesgos que el compilador puede introducir durante la auditoría de seguridad.
Impulsar 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 el proceso CI/CD
Evaluar el impacto real en la seguridad de las vulnerabilidades del compilador según las circunstancias específicas del proyecto.
Algunos recursos útiles:
Alerta de seguridad publicada oficialmente por Solidity
Lista de errores actualizada del repositorio oficial de Solidity
Lista de errores del compilador de cada versión
Función de aviso de vulnerabilidades del compilador proporcionada por Etherscan
Al centrarse en la seguridad del compilador, mejorar las pruebas, usar características complejas con precaución y actualizar oportunamente las versiones del compilador, los desarrolladores y los expertos en seguridad pueden reducir eficazmente los riesgos asociados a las vulnerabilidades del compilador de Solidity y mejorar la seguridad general de los contratos inteligentes.
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
Rekt_Recovery
· 07-12 06:08
rip a los fondos de todos... he estado allí, lo perdí todo por errores en el compilador en 2018 smh
Ver originalesResponder0
RunWhenCut
· 07-12 05:51
Sea que se mida o no, de todos modos se tomará a la gente por tonta.
Ver originalesResponder0
FUDwatcher
· 07-12 03:11
Este bug es realmente aterrador, ¡me voy!
Ver originalesResponder0
ResearchChadButBroke
· 07-09 10:27
¿El compilador tiene problemas otra vez? Vamos a desvelarnos para arreglar el bug.
Ver originalesResponder0
MoonlightGamer
· 07-09 10:19
He revisado el código, no hay ningún problema.
Ver originalesResponder0
GasGuzzler
· 07-09 09:58
Aún estoy escribiendo contratos inteligentes, tiene un olor a tontos.
Análisis de vulnerabilidades del compilador Solidity y estrategias de respuesta
Análisis de vulnerabilidades del compilador de Solidity y medidas de respuesta
El compilador es uno de los componentes básicos de los sistemas informáticos modernos, cuya función es convertir el código fuente de 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 suelen centrarse en la seguridad del código de las aplicaciones, la seguridad del propio compilador también es importante. Las vulnerabilidades del compilador pueden conllevar riesgos de seguridad graves en situaciones específicas, por ejemplo, cuando un navegador está interpretando y ejecutando código Javascript, podría resultar en la ejecución remota de código debido a vulnerabilidades en el motor de análisis.
El compilador de Solidity no es una excepción, ya que existen vulnerabilidades de seguridad en varias versiones. 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). Es importante tener en cuenta que las vulnerabilidades del compilador de Solidity son diferentes de las vulnerabilidades de la EVM en sí. Las vulnerabilidades de la EVM pueden afectar a toda la red de Ethereum, mientras que las vulnerabilidades del compilador de Solidity afectan principalmente a los desarrolladores de contratos inteligentes y a los usuarios.
Una de las peligros de las vulnerabilidades del compilador de Solidity es que puede llevar a que el código EVM generado no coincida con lo que el desarrollador esperaba. Dado que los contratos inteligentes a menudo implican los activos de criptomonedas de los usuarios, cualquier error causado por el compilador puede tener graves consecuencias. Este tipo de problemas son difíciles de detectar mediante una simple auditoría de código y requieren un análisis conjunto de la versión específica del compilador y el patrón de código.
A continuación se presentan algunos ejemplos reales de vulnerabilidades en compiladores de Solidity:
SOL-2016-9 HighOrderByteCleanStorage: La vulnerabilidad existe en las versiones tempranas del compilador de Solidity (>=0.1.6 <0.4.4). Debido a que el compilador no maneja correctamente las operaciones de limpieza de los bits altos después de un desbordamiento de enteros, esto puede provocar que los valores de las variables adyacentes se modifiquen accidentalmente.
SOL-2022-4 InlineAssemblyMemorySideEffects: La vulnerabilidad existe en compiladores de versiones >=0.8.13 <0.8.15. Debido a un manejo incorrecto del código de ensamblaje en línea durante el proceso de optimización del compilador, algunas operaciones de memoria pueden ser eliminadas incorrectamente.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: La vulnerabilidad afecta a las versiones de compiladores >= 0.5.8 < 0.8.16. Al realizar la operación abi.encode en un array de tipo calldata, podría eliminar incorrectamente ciertos datos, lo que provoca que los datos adyacentes sean modificados.
Con respecto a la vulnerabilidad del compilador de Solidity, el equipo de seguridad blockchain de Cobo sugiere lo siguiente:
Para los desarrolladores:
Para el personal de seguridad:
Algunos recursos útiles:
Al centrarse en la seguridad del compilador, mejorar las pruebas, usar características complejas con precaución y actualizar oportunamente las versiones del compilador, los desarrolladores y los expertos en seguridad pueden reducir eficazmente los riesgos asociados a las vulnerabilidades del compilador de Solidity y mejorar la seguridad general de los contratos inteligentes.