Análisis de vulnerabilidades del compilador Solidity: riesgos de seguridad y estrategias de respuesta

robot
Generación de resúmenes en curso

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, responsable de convertir lenguajes de programación de alto nivel en instrucciones ejecutables de bajo nivel. Aunque los desarrolladores suelen centrarse en la seguridad del código de la aplicación, la seguridad del propio compilador también es importante. Las vulnerabilidades del compilador pueden, en ciertos casos, causar graves riesgos de seguridad, como las vulnerabilidades del motor JavaScript del navegador que pueden llevar a la ejecución remota de código.

El compilador de Solidity no es una excepción, existen múltiples versiones con vulnerabilidades de seguridad. A diferencia de las vulnerabilidades en la EVM, las vulnerabilidades en el compilador de Solidity solo afectan a los desarrolladores de contratos y no ponen en peligro directamente la seguridad de la red de Ethereum. Sin embargo, puede llevar a que el código EVM generado no coincida con las expectativas del desarrollador, lo que puede provocar vulnerabilidades en los contratos inteligentes y poner en riesgo la seguridad de los activos de los usuarios.

Análisis de vulnerabilidades del compilador Solidity y medidas de respuesta

A continuación se presentan algunos ejemplos reales de vulnerabilidades del compilador Solidity:

  1. SOL-2016-9 AlmacenamientoLimpioDeByteDeOrdenSuperior

Versión afectada: >=0.1.6 <0.4.4

Esta vulnerabilidad podría provocar que la variable de almacenamiento se modifique accidentalmente. Por ejemplo:

solidez contrato C { uint32 a = 0x1234; uint32 b = 0; function run() returns (uint) { a += 1; return b; } }

la función run() debería devolver 0, pero en realidad devuelve 1. Esto se debe a que el compilador no limpió correctamente los bits altos al manejar el desbordamiento de enteros, lo que provocó que los bits de desbordamiento se escribieran en una variable adyacente.

  1. SOL-2022-4 EfectosSecundariosDeMemoriaEnInlineAssembly

Versión afectada: >=0.8.13 <0.8.15

La vulnerabilidad se origina en el proceso de optimización de la compilación. Por ejemplo:

solidez contrato C { function f() public pure returns (uint) { ensamblaje { mstore(0, 0x42) } uint x; ensamblaje { x := mload(0) } return x; } }

f() La función debería devolver 0x42, pero la versión con vulnerabilidad devolverá 0. Esto se debe a que el compilador eliminó incorrectamente la operación de escritura en memoria en el primer bloque de assembly.

  1. SOL-2022-6 Desbordamiento de Encabezado AbiReencodingConLimpiezaDeArregloEstático

Versión afectada: >= 0.5.8 < 0.8.16

Esta vulnerabilidad involucra la codificación ABI del array calldata. Por ejemplo:

solidez contrato C { función f(bytes[1] calldata a) pública pura devuelve (bytes memoria) { return abi.encode(a); } }

f() La función debería devolver el array de entrada, pero la versión con vulnerabilidad devuelve una cadena vacía. Esto se debe a que el compilador limpió incorrectamente los datos adyacentes durante el proceso de codificación.

Análisis de vulnerabilidades del compilador Solidity y medidas de respuesta

Para reducir el riesgo de vulnerabilidades en el compilador de Solidity, los desarrolladores deben:

  • Utilizar una versión más reciente del compilador
  • Mejorar las pruebas unitarias, aumentar la cobertura del código
  • Evitar el uso de características de lenguaje complejas, como ensamblaje en línea, codificación ABI de arreglos multidimensionales, etc.

Los auditores de seguridad deben:

  • Considerar los riesgos potenciales del compilador durante el proceso de auditoría
  • Se sugiere al equipo de desarrollo que actualice a la versión más reciente del compilador.
  • Incluir la verificación automática de la versión del compilador en el flujo de CI/CD

Recursos de referencia útiles:

  • Blog oficial de advertencias de seguridad de Solidity
  • Lista de errores del repositorio de Solidity en GitHub
  • Advertencia de vulnerabilidad del compilador en la página de contratos de Etherscan

Análisis de vulnerabilidades del compilador Solidity y medidas de respuesta

En resumen, aunque las vulnerabilidades del compilador no son comunes, su impacto puede ser grave. Los desarrolladores y el personal de seguridad deben estar alertas y tomar medidas correspondientes para reducir el riesgo.

Ver originales
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.
  • Recompensa
  • 5
  • Compartir
Comentar
0/400
blockBoyvip
· hace7h
Otra vez un fallo en el contrato, ¡qué molesto!~
Ver originalesResponder0
GasGuzzlervip
· 07-07 09:10
Otra vez el compilador está haciendo de las suyas
Ver originalesResponder0
GweiTooHighvip
· 07-07 09:05
¿Qué demonios? ¿Otra vulnerabilidad?
Ver originalesResponder0
RektRecoveryvip
· 07-07 09:00
*suspiro* otra vulnerabilidad predecible... ¿cuándo aprenderán los desarrolladores a dejar de jugar con fuego?
Ver originalesResponder0
GasGuzzlervip
· 07-07 08:44
No he tenido este problema después de probar durante medio día.
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)