Se ha descubierto un nuevo漏洞 de desbordamiento de enteros en el lenguaje Move
Recientemente, los investigadores de seguridad han descubierto una nueva vulnerabilidad de desbordamiento de enteros al analizar en profundidad el lenguaje Move. Esta vulnerabilidad se presenta durante el proceso de verificación de la seguridad de las referencias en el lenguaje Move, lo que podría provocar que los nodos se bloqueen.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, dividiéndose en cuatro pasos. Esta vulnerabilidad existe en el paso de reference_safety. La verificación de seguridad de referencias principalmente verifica si hay 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 analizará cada bloque básico. Un bloque básico es una secuencia de código que no tiene instrucciones de bifurcación, excepto la de entrada y salida. Move identifica los bloques básicos al recorrer el bytecode y buscar instrucciones de bifurcación e instrucciones de bucle.
El proceso principal para verificar la seguridad de las referencias es: ejecutar el código para cada bloque básico, generar el estado después de la ejecución, y luego combinar el estado antes y después de la ejecución, actualizar el estado del bloque y propagarlo a los bloques subsiguientes. Este proceso se repite hasta que el estado ya no cambie o se produzca un error.
La vulnerabilidad ocurre durante el proceso de estado de fusión. Si la longitud de los parámetros de la función más la longitud de las variables locales es mayor que 256, puede causar un desbordamiento del tipo u8. Aunque hay una verificación de código para el número de variables locales, no se incluye la longitud de los parámetros.
Utilizar este desbordamiento puede cambiar el estado del bloque, haciendo que el nuevo estado sea diferente del antiguo. Al ejecutar nuevamente el bloque básico, acceder a un índice que no existe en el nuevo estado provocará un fallo en el programa.
Los investigadores presentaron un código de prueba de concepto que puede desencadenar esta vulnerabilidad, causando la caída de nodos. Esto indica que incluso los lenguajes de tipo estático pueden tener problemas de seguridad, por lo que la auditoría del código es importante. Se sugiere que el lenguaje Move implemente más verificaciones de seguridad en tiempo de ejecución, y no solo en la fase de validación.
El descubrimiento de esta vulnerabilidad demuestra una vez más que no existe un código absolutamente seguro. Incluso los lenguajes de tipo fuerte pueden tener vulnerabilidades. Los investigadores de seguridad continuarán analizando en profundidad el lenguaje Move en busca de 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.
9 me gusta
Recompensa
9
7
Republicar
Compartir
Comentar
0/400
BlockchainRetirementHome
· hace3h
¿Se va a enfriar Move?
Ver originalesResponder0
MemeEchoer
· hace3h
Otra caída, ¿cuántas veces ha sido hoy?
Ver originalesResponder0
AirdropBlackHole
· hace3h
Este grupo de tendencias se ha alineado ~ move ha explotado
Ver originalesResponder0
UncleLiquidation
· hace4h
Otra vez tengo que reparar la olla, ¿eh?
Ver originalesResponder0
MidnightSnapHunter
· hace4h
move se ha enfriado
Ver originalesResponder0
ApeWithNoChain
· hace4h
¿Se ha caído otra vez move? Ya no vale la pena esperar...
Descubrimiento de una vulnerabilidad de desbordamiento de enteros en el lenguaje Move que podría causar la caída del nodo
Se ha descubierto un nuevo漏洞 de desbordamiento de enteros en el lenguaje Move
Recientemente, los investigadores de seguridad han descubierto una nueva vulnerabilidad de desbordamiento de enteros al analizar en profundidad el lenguaje Move. Esta vulnerabilidad se presenta durante el proceso de verificación de la seguridad de las referencias en el lenguaje Move, lo que podría provocar que los nodos se bloqueen.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, dividiéndose en cuatro pasos. Esta vulnerabilidad existe en el paso de reference_safety. La verificación de seguridad de referencias principalmente verifica si hay 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 analizará cada bloque básico. Un bloque básico es una secuencia de código que no tiene instrucciones de bifurcación, excepto la de entrada y salida. Move identifica los bloques básicos al recorrer el bytecode y buscar instrucciones de bifurcación e instrucciones de bucle.
El proceso principal para verificar la seguridad de las referencias es: ejecutar el código para cada bloque básico, generar el estado después de la ejecución, y luego combinar el estado antes y después de la ejecución, actualizar el estado del bloque y propagarlo a los bloques subsiguientes. Este proceso se repite hasta que el estado ya no cambie o se produzca un error.
La vulnerabilidad ocurre durante el proceso de estado de fusión. Si la longitud de los parámetros de la función más la longitud de las variables locales es mayor que 256, puede causar un desbordamiento del tipo u8. Aunque hay una verificación de código para el número de variables locales, no se incluye la longitud de los parámetros.
Utilizar este desbordamiento puede cambiar el estado del bloque, haciendo que el nuevo estado sea diferente del antiguo. Al ejecutar nuevamente el bloque básico, acceder a un índice que no existe en el nuevo estado provocará un fallo en el programa.
Los investigadores presentaron un código de prueba de concepto que puede desencadenar esta vulnerabilidad, causando la caída de nodos. Esto indica que incluso los lenguajes de tipo estático pueden tener problemas de seguridad, por lo que la auditoría del código es importante. Se sugiere que el lenguaje Move implemente más verificaciones de seguridad en tiempo de ejecución, y no solo en la fase de validación.
El descubrimiento de esta vulnerabilidad demuestra una vez más que no existe un código absolutamente seguro. Incluso los lenguajes de tipo fuerte pueden tener vulnerabilidades. Los investigadores de seguridad continuarán analizando en profundidad el lenguaje Move en busca de más problemas potenciales.