El módulo de seguridad de referencia Move tiene una vulnerabilidad de desbordamiento de entero
Recientemente, investigadores de seguridad descubrieron una grave vulnerabilidad por desbordamiento de enteros al analizar a fondo el lenguaje Move. Esta vulnerabilidad existe en el módulo de verificación de seguridad de referencias y podría llevar a ataques de denegación de servicio. Este artículo detallará el principio y el impacto de esta vulnerabilidad.
Contexto de la vulnerabilidad
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que incluye la comprobación de la seguridad de las referencias. Este proceso se divide en varios pasos, y la vulnerabilidad descubierta se presentó en la fase de verificación de la seguridad de las referencias.
El proceso principal de validación de seguridad es:
Dividir el código en bloques básicos
Analizar cada bloque básico
Estado antes y después del análisis de fusión
Propagar resultados a bloques posteriores
Se utiliza la estructura AbstractState para representar el estado de análisis, que incluye información sobre locals y el gráfico de préstamos.
Detalles de la vulnerabilidad
La vulnerabilidad se encuentra en la función join_ del estado de análisis de fusión. Esta función itera sobre locals utilizando el tipo u8, pero si la suma de la longitud de los parámetros y la longitud de las variables locales supera 256, se producirá un desbordamiento de enteros.
Específicamente:
usar self.iter_locals() para iterar locales en la función join_
iter_locals() devuelve un iterador de tipo u8
Si la longitud de los parámetros + la longitud de las variables locales > 256, el iterador se desbordará.
Aunque Move tiene un proceso de verificación del número de locales, solo verifica la cantidad de variables locales y no incluye la longitud de los parámetros.
Explotación de vulnerabilidades
Un atacante puede construir un bloque de código en bucle para utilizar un desbordamiento y cambiar el estado del bloque:
El número total de parámetros y variables locales es mayor que 256
Después de la primera ejecución, la longitud del nuevo mapa de locales se desbordará y se volverá más pequeña
Al ejecutar nuevamente, acceder a un índice de locals que no existe provocará un panic
Esto podría provocar un ataque de denegación de servicio en los nodos.
Impacto de la vulnerabilidad
Esta vulnerabilidad puede causar:
El validador de bytecode Move se bloquea
Los nodos de blockchain que dependen de Move rechazan el servicio
Evitar parte de las verificaciones de seguridad
Sugerencias de reparación
Añadir verificación de la longitud de los parámetros en la comprobación de límites de locals
Utilizar tipos de enteros más grandes como u16 para iterar locales
Agregar verificaciones de seguridad adicionales durante la ejecución
Resumen
Esta vulnerabilidad demuestra una vez más que incluso los lenguajes diseñados rigurosamente pueden tener fallos de seguridad. En el caso del lenguaje Move, se recomienda agregar las verificaciones de seguridad necesarias no solo en la fase de validación, sino también en tiempo de ejecución. Los investigadores de seguridad continuarán analizando a fondo el lenguaje Move para descubrir más problemas potenciales.
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
5
Republicar
Compartir
Comentar
0/400
MidnightTrader
· hace5h
¿De quién es este código escrito por un novato? Estoy rendido.
Ver originalesResponder0
MevShadowranger
· hace5h
Otra vez jugando con desbordamiento de enteros
Ver originalesResponder0
WagmiOrRekt
· hace5h
Afortunadamente, cerré todas las posiciones en Move anteriormente.
Ver originalesResponder0
CommunityWorker
· hace5h
¿Se va a desplomar move de nuevo? ¿Por qué tanto miedo?
Ver originalesResponder0
CryingOldWallet
· hace5h
¿Otra vulnerabilidad? Move ya no es atractivo, ¿verdad?
La vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de Move puede causar que el nodo rechace el servicio.
El módulo de seguridad de referencia Move tiene una vulnerabilidad de desbordamiento de entero
Recientemente, investigadores de seguridad descubrieron una grave vulnerabilidad por desbordamiento de enteros al analizar a fondo el lenguaje Move. Esta vulnerabilidad existe en el módulo de verificación de seguridad de referencias y podría llevar a ataques de denegación de servicio. Este artículo detallará el principio y el impacto de esta vulnerabilidad.
Contexto de la vulnerabilidad
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que incluye la comprobación de la seguridad de las referencias. Este proceso se divide en varios pasos, y la vulnerabilidad descubierta se presentó en la fase de verificación de la seguridad de las referencias.
El proceso principal de validación de seguridad es:
Se utiliza la estructura AbstractState para representar el estado de análisis, que incluye información sobre locals y el gráfico de préstamos.
Detalles de la vulnerabilidad
La vulnerabilidad se encuentra en la función join_ del estado de análisis de fusión. Esta función itera sobre locals utilizando el tipo u8, pero si la suma de la longitud de los parámetros y la longitud de las variables locales supera 256, se producirá un desbordamiento de enteros.
Específicamente:
Aunque Move tiene un proceso de verificación del número de locales, solo verifica la cantidad de variables locales y no incluye la longitud de los parámetros.
Explotación de vulnerabilidades
Un atacante puede construir un bloque de código en bucle para utilizar un desbordamiento y cambiar el estado del bloque:
Esto podría provocar un ataque de denegación de servicio en los nodos.
Impacto de la vulnerabilidad
Esta vulnerabilidad puede causar:
Sugerencias de reparación
Resumen
Esta vulnerabilidad demuestra una vez más que incluso los lenguajes diseñados rigurosamente pueden tener fallos de seguridad. En el caso del lenguaje Move, se recomienda agregar las verificaciones de seguridad necesarias no solo en la fase de validación, sino también en tiempo de ejecución. Los investigadores de seguridad continuarán analizando a fondo el lenguaje Move para descubrir más problemas potenciales.