Análisis de la vulnerabilidad de desbordamiento entero en la verificación de seguridad de referencias del lenguaje Move

robot
Generación de resúmenes en curso

Análisis de la vulnerabilidad de desbordamiento de enteros en la verificación de seguridad de referencias del lenguaje Move

Recientemente, los investigadores descubrieron una nueva vulnerabilidad de desbordamiento de enteros al analizar a fondo Aptos Moveevm. Esta vulnerabilidad existe en el proceso de verificación de seguridad de referencias del lenguaje Move, específicamente en el paso de referencia_safety. Este artículo explorará en profundidad esta vulnerabilidad y explicará su proceso de activación y sus posibles impactos.

Numen Cyber descubrió exclusivamente otra vulnerabilidad crítica en el lenguaje move

Proceso de verificación del lenguaje Move

El lenguaje Move realiza una validación de unidades de código antes de ejecutar el bytecode, y este proceso se divide en 4 pasos. La vulnerabilidad descubierta en esta ocasión se encuentra en el paso de reference_safety. Este paso se utiliza principalmente para verificar la seguridad de las referencias, incluyendo la comprobación de si existen referencias colgantes, si el acceso a referencias mutables es seguro, y si el acceso a referencias de almacenamiento global es seguro, entre otros.

El proceso de verificación primero identificará los bloques básicos. En el lenguaje Move, los bloques básicos se determinan mediante la exploración del bytecode, buscando todas las instrucciones de bifurcación y las secuencias de instrucciones de bucle. Cada bloque básico es una secuencia de código sin instrucciones de bifurcación, excepto en la entrada y la salida.

Numen Cyber descubre en exclusiva otra vulnerabilidad crítica del lenguaje move

Mecanismo de verificación de seguridad de citas

El lenguaje Move admite dos tipos de referencias: referencias inmutables (&) y referencias mutables (&mut). El módulo de verificación de seguridad de referencias escaneará las instrucciones de bytecode de cada bloque básico en función de la función, determinando la legalidad de todas las operaciones de referencia.

El proceso de verificación utiliza la estructura AbstractState para representar el estado, que contiene dos componentes clave: el gráfico de préstamos (borrow graph) y las variables locales (locals). Durante la verificación, se comparan los cambios de estado antes y después de ejecutar el bloque básico, y se propagan los resultados a los bloques posteriores.

Numen Cyber descubre una nueva vulnerabilidad crítica en el lenguaje move

Detalles de la vulnerabilidad

La vulnerabilidad existe en la función join_. Esta función se utiliza para combinar el estado antes y después de la ejecución de bloques básicos. El problema radica en el método iter_locals(), que devuelve un iterador de tipo u8. Cuando la longitud de los parámetros de la función supera la suma de la longitud de las variables locales en 256, se produce un desbordamiento de enteros.

Aunque el lenguaje Move tiene un proceso para verificar la cantidad de locales, solo comprueba la cantidad de variables locales y no incluye la longitud de los parámetros. Esto puede ser un descuido por parte de los desarrolladores.

Numen Cyber descubrió un nuevo y grave fallo en el lenguaje move

Numen Cyber descubre exclusivamente otra vulnerabilidad crítica del lenguaje move

Numen Cyber descubre una nueva vulnerabilidad crítica en el lenguaje move

Numen Cyber descubrió otra vulnerabilidad crítica en el lenguaje move

Numen Cyber descubre exclusivamente otra vulnerabilidad crítica en el lenguaje move

Numen Cyber descubrió exclusivamente otra vulnerabilidad crítica en el lenguaje move

Numen Cyber descubre en exclusiva otra vulnerabilidad crítica en el lenguaje move

Numen Cyber descubre una nueva vulnerabilidad crítica en el lenguaje move

Numen Cyber descubre otra vulnerabilidad crítica en el lenguaje move

Explotación de vulnerabilidades e impacto

Aprovechando esta vulnerabilidad de desbordamiento de enteros, un atacante puede construir bloques de código de bucle especiales que cambian el estado del bloque. Cuando se ejecuta nuevamente el bloque básico, si el índice que accede la instrucción no existe en el nuevo mapa de locales, se producirá una denegación de servicio (DoS).

Específicamente, en el módulo de referencia de seguridad, los códigos de operación como MoveLoc/CopyLoc/FreeRef pueden provocar un pánico debido al acceso a un LocalIndex inexistente, lo que puede hacer que todo el nodo se bloquee.

Numen Cyber descubre en exclusiva otra vulnerabilidad crítica en el lenguaje move

Numen Cyber descubrió otra vulnerabilidad crítica en el lenguaje move

Resumen y Sugerencias

Esta vulnerabilidad demuestra una vez más que incluso los lenguajes diseñados cuidadosamente pueden tener problemas de seguridad. Para el lenguaje Move, recomendamos:

  1. Fortalecer la auditoría del código para evitar negligencias similares.
  2. Agregar más códigos de verificación durante la ejecución de Move, no solo depender de las verificaciones de seguridad en la fase de validación.
  3. Implementar medidas de refuerzo de seguridad en la fase de operación para evitar problemas más graves después de que la verificación sea eludida.

Como pioneros en la investigación de seguridad del lenguaje Move, continuaremos explorando en profundidad los problemas de seguridad relacionados, contribuyendo al desarrollo saludable del ecosistema Move.

Numen Cyber descubre exclusivamente otra vulnerabilidad crítica en el lenguaje move

Ver originales
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.
  • Recompensa
  • 9
  • Compartir
Comentar
0/400
LiquidationWatchervip
· 07-07 17:46
omg otro exploit de defi... me está dando importantes recuerdos de 2022 rn
Ver originalesResponder0
BearMarketSunriservip
· 07-07 02:16
move condenado ah,炒a aún no es mejor que炒b
Ver originalesResponder0
SundayDegenvip
· 07-06 08:36
Tsk, este bug es realmente un poco básico.
Ver originalesResponder0
MoonRocketmanvip
· 07-05 04:47
La altura de interceptación de Move de 256 ha sido superada, alerta sobre el riesgo de caída del cohete.
Ver originalesResponder0
Web3ProductManagervip
· 07-05 04:47
al observar los datos del embudo de conversión, este error de desbordamiento = gran fricción en la experiencia de usuario, para ser honesto
Ver originalesResponder0
PanicSeller69vip
· 07-05 04:47
Move, ¿está demasiado crujiente?
Ver originalesResponder0
WhaleMistakervip
· 07-05 04:46
¿se va a enfriar el perro de movimiento?
Ver originalesResponder0
NeverVoteOnDAOvip
· 07-05 04:28
¿Aptos tiene un error de código otra vez???
Ver originalesResponder0
SignatureCollectorvip
· 07-05 04:18
Otro problema de desbordamiento, sube.
Ver originalesResponder0
Ver más
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)