Se encuentra otra vulnerabilidad crítica en el lenguaje Move: el desbordamiento de enteros puede provocar la caída del Nodo
Recientemente, los investigadores de seguridad han descubierto una nueva vulnerabilidad de desbordamiento de enteros al analizar en profundidad el lenguaje Move, lo que podría provocar el colapso del Nodo. Esta vulnerabilidad existe en el módulo de verificación de seguridad de referencias del lenguaje Move, e involucra el análisis de bloques básicos y el proceso de fusión de estados.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en 4 pasos. La vulnerabilidad descubierta se encuentra en la fase de verificación de referencia de seguridad (reference_safety). Esta fase analiza los bloques básicos en la función y valida la legalidad de las operaciones de referencia.
Durante el proceso de verificación, se mantendrá una estructura AbstractState, que contiene las variables locales (locals) y el gráfico de relaciones de préstamo (borrow graph). Al analizar el bloque básico, se ejecutarán las instrucciones dentro del bloque para generar el estado posterior, que luego se combinará con el estado anterior para actualizar el estado.
La vulnerabilidad se produce en la función join_ en estado de fusión. Esta función recorre la variable locals, pero locals contiene los parámetros de la función y las variables locales. Cuando la suma de la cantidad de parámetros y la cantidad de variables locales supera 256, se produce un desbordamiento entero debido al uso de la iteración de tipo u8.
Los atacantes pueden construir bloques de código de bucle especiales, aprovechando este desbordamiento para cambiar el estado. En el próximo análisis, ciertas instrucciones pueden acceder a índices de locals que no existen, lo que podría provocar un panic que cause la caída del Nodo.
Los investigadores proporcionaron una prueba de concepto ( PoC ), al configurar 264 variables locales, lo que puede desencadenar un panic en la segunda ronda de análisis. Esto expone la falta de suficientes chequeos de seguridad en tiempo de ejecución del lenguaje Move.
Esta vulnerabilidad vuelve a demostrar que incluso un lenguaje como Move, que enfatiza la seguridad, puede tener fallos. Se recomienda a los diseñadores del lenguaje Move que agreguen más comprobaciones de seguridad en tiempo de ejecución, en lugar de depender únicamente del análisis estático en la fase de verificación. Al mismo tiempo, se recuerda a los desarrolladores que refuercen la auditoría del código para evitar negligencias similares.
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.
9 me gusta
Recompensa
9
5
Republicar
Compartir
Comentar
0/400
SmartContractPhobia
· 08-02 02:38
move se ha colapsado por completo, el nativo también se ha colapsado.
Ver originalesResponder0
CoconutWaterBoy
· 07-30 03:38
move ha vuelto a fallar, ya era hora de cambiarlo
Ver originalesResponder0
SchrodingerWallet
· 07-30 03:36
move ha vuelto a fallar.
Ver originalesResponder0
0xDreamChaser
· 07-30 03:34
¿Se ha caído move otra vez? Ni siquiera se gradúan lo suficientemente rápido.
El lenguaje Move expone vulnerabilidades de desbordamiento de enteros, el riesgo de colapso del nodo llama la atención.
Se encuentra otra vulnerabilidad crítica en el lenguaje Move: el desbordamiento de enteros puede provocar la caída del Nodo
Recientemente, los investigadores de seguridad han descubierto una nueva vulnerabilidad de desbordamiento de enteros al analizar en profundidad el lenguaje Move, lo que podría provocar el colapso del Nodo. Esta vulnerabilidad existe en el módulo de verificación de seguridad de referencias del lenguaje Move, e involucra el análisis de bloques básicos y el proceso de fusión de estados.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en 4 pasos. La vulnerabilidad descubierta se encuentra en la fase de verificación de referencia de seguridad (reference_safety). Esta fase analiza los bloques básicos en la función y valida la legalidad de las operaciones de referencia.
Durante el proceso de verificación, se mantendrá una estructura AbstractState, que contiene las variables locales (locals) y el gráfico de relaciones de préstamo (borrow graph). Al analizar el bloque básico, se ejecutarán las instrucciones dentro del bloque para generar el estado posterior, que luego se combinará con el estado anterior para actualizar el estado.
La vulnerabilidad se produce en la función join_ en estado de fusión. Esta función recorre la variable locals, pero locals contiene los parámetros de la función y las variables locales. Cuando la suma de la cantidad de parámetros y la cantidad de variables locales supera 256, se produce un desbordamiento entero debido al uso de la iteración de tipo u8.
Los atacantes pueden construir bloques de código de bucle especiales, aprovechando este desbordamiento para cambiar el estado. En el próximo análisis, ciertas instrucciones pueden acceder a índices de locals que no existen, lo que podría provocar un panic que cause la caída del Nodo.
Los investigadores proporcionaron una prueba de concepto ( PoC ), al configurar 264 variables locales, lo que puede desencadenar un panic en la segunda ronda de análisis. Esto expone la falta de suficientes chequeos de seguridad en tiempo de ejecución del lenguaje Move.
Esta vulnerabilidad vuelve a demostrar que incluso un lenguaje como Move, que enfatiza la seguridad, puede tener fallos. Se recomienda a los diseñadores del lenguaje Move que agreguen más comprobaciones de seguridad en tiempo de ejecución, en lugar de depender únicamente del análisis estático en la fase de verificación. Al mismo tiempo, se recuerda a los desarrolladores que refuercen la auditoría del código para evitar negligencias similares.