La verificación de seguridad de la referencia del lenguaje Move tiene una vulnerabilidad de desbordamiento de enteros que puede llevar a un ataque de denegación de servicio.
Se ha descubierto una nueva vulnerabilidad de desbordamiento de enteros en el lenguaje Move
Recientemente, se ha descubierto una nueva vulnerabilidad de desbordamiento de enteros en el lenguaje Move. Esta vulnerabilidad existe durante el proceso de verificación de código en la fase de comprobación de seguridad de referencias, lo que podría provocar ataques de denegación de servicio.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en cuatro pasos. Esta vulnerabilidad se presenta en el paso de referencia de seguridad (reference_safety). La verificación de referencia de seguridad principalmente valida si existen referencias colgantes en el código, si el acceso a referencias mutables es seguro, si el acceso a referencias de almacenamiento global es seguro, entre otros problemas.
Durante el proceso de verificación, se analizará cada bloque básico. Un bloque básico se refiere a una secuencia de código que no tiene instrucciones de bifurcación, excepto la de entrada y salida. Move identifica bloques básicos al recorrer el bytecode, buscando instrucciones de bifurcación y bucles.
El módulo de verificación de referencias escaneará las instrucciones de bytecode de cada bloque básico en la función para determinar si las operaciones de referencia son legales. El flujo principal incluye: ejecutar el código del bloque básico, generar el estado posterior a la ejecución, combinar y actualizar el estado del bloque con el estado anterior y propagarlo a los bloques posteriores.
La vulnerabilidad ocurre durante el proceso de estado de fusión. Cuando la suma del número de parámetros de función y el número de variables locales supera 256, se produce un desbordamiento entero debido al uso del tipo u8 para el almacenamiento. Esto provoca que en la ejecución posterior se acceda a variables locales que no existen, lo que genera un panic.
Un atacante puede construir un bloque básico cíclico, aprovechando este desbordamiento para cambiar el estado del bloque. Al ejecutarse nuevamente, el acceso a un índice de variable local que no existe provocará una denegación de servicio.
Esta vulnerabilidad refleja que incluso un lenguaje Move diseñado estrictamente puede tener vulnerabilidades de seguridad que pueden ser eludidas. Se sugiere a los diseñadores del lenguaje Move que implementen más comprobaciones en tiempo de ejecución para prevenir situaciones inesperadas similares. En el futuro, también se necesitará fortalecer aún más la investigación sobre la seguridad del lenguaje Move.
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.
7 me gusta
Recompensa
7
7
Compartir
Comentar
0/400
AirdropFreedom
· hace11h
La vulnerabilidad es bastante grave.
Ver originalesResponder0
PretendingSerious
· hace11h
El código es rey, la revisión es primordial
Ver originalesResponder0
NFTRegretDiary
· hace11h
Hay que reparar urgentemente la vulnerabilidad.
Ver originalesResponder0
DefiEngineerJack
· hace11h
*suspiro* problema trivial de desbordamiento u8
Ver originalesResponder0
WinterWarmthCat
· hace11h
No es de extrañar que la bandeja no esté estable.
Ver originalesResponder0
ForkPrince
· hace11h
Las vulnerabilidades de desbordamiento son muy mortales.
La verificación de seguridad de la referencia del lenguaje Move tiene una vulnerabilidad de desbordamiento de enteros que puede llevar a un ataque de denegación de servicio.
Se ha descubierto una nueva vulnerabilidad de desbordamiento de enteros en el lenguaje Move
Recientemente, se ha descubierto una nueva vulnerabilidad de desbordamiento de enteros en el lenguaje Move. Esta vulnerabilidad existe durante el proceso de verificación de código en la fase de comprobación de seguridad de referencias, lo que podría provocar ataques de denegación de servicio.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en cuatro pasos. Esta vulnerabilidad se presenta en el paso de referencia de seguridad (reference_safety). La verificación de referencia de seguridad principalmente valida si existen referencias colgantes en el código, si el acceso a referencias mutables es seguro, si el acceso a referencias de almacenamiento global es seguro, entre otros problemas.
Durante el proceso de verificación, se analizará cada bloque básico. Un bloque básico se refiere a una secuencia de código que no tiene instrucciones de bifurcación, excepto la de entrada y salida. Move identifica bloques básicos al recorrer el bytecode, buscando instrucciones de bifurcación y bucles.
El módulo de verificación de referencias escaneará las instrucciones de bytecode de cada bloque básico en la función para determinar si las operaciones de referencia son legales. El flujo principal incluye: ejecutar el código del bloque básico, generar el estado posterior a la ejecución, combinar y actualizar el estado del bloque con el estado anterior y propagarlo a los bloques posteriores.
La vulnerabilidad ocurre durante el proceso de estado de fusión. Cuando la suma del número de parámetros de función y el número de variables locales supera 256, se produce un desbordamiento entero debido al uso del tipo u8 para el almacenamiento. Esto provoca que en la ejecución posterior se acceda a variables locales que no existen, lo que genera un panic.
Un atacante puede construir un bloque básico cíclico, aprovechando este desbordamiento para cambiar el estado del bloque. Al ejecutarse nuevamente, el acceso a un índice de variable local que no existe provocará una denegación de servicio.
Esta vulnerabilidad refleja que incluso un lenguaje Move diseñado estrictamente puede tener vulnerabilidades de seguridad que pueden ser eludidas. Se sugiere a los diseñadores del lenguaje Move que implementen más comprobaciones en tiempo de ejecución para prevenir situaciones inesperadas similares. En el futuro, también se necesitará fortalecer aún más la investigación sobre la seguridad del lenguaje Move.