El módulo de seguridad de referencia de Move tiene una vulnerabilidad de desbordamiento de entero
Recientemente, los investigadores de seguridad han descubierto una nueva vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de referencia del lenguaje Move. Esta vulnerabilidad se presenta en el paso de seguridad de referencia del proceso de verificación de código y puede dar lugar a 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 4 pasos. La referencia_safety es uno de los pasos importantes, utilizado para verificar la seguridad de las referencias, incluyendo la comprobación de si existen referencias colgantes, si el acceso a referencias mutables es seguro, entre otros.
La vulnerabilidad proviene del manejo de la cantidad de variables locales durante el proceso de verificación de seguridad de referencia. En la función join_, si la suma del número de parámetros de la función y el número de variables locales excede 256, esto provocará un desbordamiento del tipo u8. Aunque el lenguaje Move tiene un proceso para verificar el número de locals, solo verifica el número de variables locales y no incluye el número de parámetros.
Los atacantes pueden construir códigos Move especiales para aprovechar esta vulnerabilidad de desbordamiento y cambiar el estado del bloque de código. Cuando se ejecuta nuevamente el bloque básico, si el índice que necesita ser accedido en las instrucciones no existe en el nuevo mapeo de variables locales, esto causará un panic, lo que hará que el nodo falle.
Los investigadores de seguridad proporcionaron un código de prueba de concepto (PoC), que al establecer una gran cantidad de parámetros y variables locales, provoca un desbordamiento de enteros, lo que finalmente conduce a un pánico.
Esta vulnerabilidad demuestra una vez más que incluso los lenguajes bien diseñados pueden tener riesgos de seguridad. Para el lenguaje Move, se sugiere agregar más comprobaciones de seguridad en tiempo de ejecución, en lugar de depender únicamente de las comprobaciones en la fase de validación. También refleja la importancia de la auditoría de código, que puede detectar oportunamente las negligencias de los desarrolladores.
Como pioneros en la investigación de seguridad del lenguaje Move, el equipo de seguridad ha declarado que continuará profundizando en los problemas de seguridad de Move. También han descubierto otra vulnerabilidad del lenguaje Move, y en el futuro revelarán más detalles.
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.
13 me gusta
Recompensa
13
4
Compartir
Comentar
0/400
SoliditySlayer
· 07-11 20:03
Las vulnerabilidades hay todos los días, no es gran cosa.
Ver originalesResponder0
BlockchainGriller
· 07-11 20:02
Veo bugs de nuevo, la canción de Move se vuelve cada vez más confusa~
Se revela una vulnerabilidad de desbordamiento de enteros en el módulo de seguridad del lenguaje Move, que podría causar la caída del Nodo.
El módulo de seguridad de referencia de Move tiene una vulnerabilidad de desbordamiento de entero
Recientemente, los investigadores de seguridad han descubierto una nueva vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de referencia del lenguaje Move. Esta vulnerabilidad se presenta en el paso de seguridad de referencia del proceso de verificación de código y puede dar lugar a 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 4 pasos. La referencia_safety es uno de los pasos importantes, utilizado para verificar la seguridad de las referencias, incluyendo la comprobación de si existen referencias colgantes, si el acceso a referencias mutables es seguro, entre otros.
La vulnerabilidad proviene del manejo de la cantidad de variables locales durante el proceso de verificación de seguridad de referencia. En la función join_, si la suma del número de parámetros de la función y el número de variables locales excede 256, esto provocará un desbordamiento del tipo u8. Aunque el lenguaje Move tiene un proceso para verificar el número de locals, solo verifica el número de variables locales y no incluye el número de parámetros.
Los atacantes pueden construir códigos Move especiales para aprovechar esta vulnerabilidad de desbordamiento y cambiar el estado del bloque de código. Cuando se ejecuta nuevamente el bloque básico, si el índice que necesita ser accedido en las instrucciones no existe en el nuevo mapeo de variables locales, esto causará un panic, lo que hará que el nodo falle.
Los investigadores de seguridad proporcionaron un código de prueba de concepto (PoC), que al establecer una gran cantidad de parámetros y variables locales, provoca un desbordamiento de enteros, lo que finalmente conduce a un pánico.
Esta vulnerabilidad demuestra una vez más que incluso los lenguajes bien diseñados pueden tener riesgos de seguridad. Para el lenguaje Move, se sugiere agregar más comprobaciones de seguridad en tiempo de ejecución, en lugar de depender únicamente de las comprobaciones en la fase de validación. También refleja la importancia de la auditoría de código, que puede detectar oportunamente las negligencias de los desarrolladores.
Como pioneros en la investigación de seguridad del lenguaje Move, el equipo de seguridad ha declarado que continuará profundizando en los problemas de seguridad de Move. También han descubierto otra vulnerabilidad del lenguaje Move, y en el futuro revelarán más detalles.