El módulo de seguridad de Move ha detectado una vulnerabilidad de desbordamiento de enteros, lo que podría provocar un ataque de construcción o un colapso del sistema.
Se descubrió una vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de referencia de Move
Recientemente, un estudio en profundidad ha descubierto una nueva vulnerabilidad de desbordamiento de enteros en el lenguaje Move. Esta vulnerabilidad se encuentra en el proceso de verificación de seguridad de referencias, involucrando algunos conceptos y mecanismos centrales del lenguaje Move.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en cuatro pasos. Esta nueva vulnerabilidad se presenta en el paso de reference_safety. Este paso es responsable de verificar la seguridad de las referencias, incluyendo la comprobación de referencias en desuso, la seguridad de acceso a referencias mutables y la seguridad de acceso a referencias de almacenamiento global, entre otros.
El núcleo de la verificación de seguridad en la cita es analizar los bloques fundamentales en cada función. Un bloque fundamental es una secuencia de código que no tiene instrucciones de bifurcación, excepto en la entrada y salida. El lenguaje Move identifica los bloques fundamentales al recorrer el bytecode y buscar todas las instrucciones de bifurcación e instrucciones de bucle.
Durante el proceso de verificación, el sistema mantendrá una estructura AbstractState que contiene información sobre el gráfico de préstamos y locales, utilizada para garantizar la seguridad de las referencias en la función. El proceso de verificación ejecutará el código de bloques básicos, 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 lo propagará a los bloques posteriores.
La vulnerabilidad se encuentra en la función join_. Cuando la longitud de los parámetros de la función más la longitud de las variables locales supera 256, el uso del tipo u8 para representar variables locales puede provocar un desbordamiento de entero. Aunque el lenguaje Move tiene un mecanismo para verificar el número de locals, solo verifica la cantidad de variables locales y no incluye la longitud de los parámetros.
Esta vulnerabilidad de desbordamiento podría llevar a un ataque de denegación de servicio. Un atacante puede construir un bloque de código en bucle, aprovechando el desbordamiento para cambiar el estado del bloque. Cuando se ejecuta nuevamente el bloque básico, si el índice que necesita acceder a la instrucción no existe en el nuevo mapa de locales, puede causar que el sistema se bloquee.
Para demostrar esta vulnerabilidad, los investigadores proporcionaron una prueba de concepto (PoC). Al configurar parámetros específicos y el número de variables locales, se puede provocar un desbordamiento de enteros, lo que provoca un pánico en el sistema.
Esta vulnerabilidad revela que incluso los lenguajes diseñados de manera rigurosa pueden tener riesgos de seguridad. Destaca la importancia de la auditoría de código y la necesidad de considerar más casos límite en el diseño del lenguaje. Para el lenguaje Move, se sugiere agregar más comprobaciones de seguridad en tiempo de ejecución, en lugar de depender únicamente de los mecanismos de seguridad de la fase de verificación.
Con la amplia aplicación del lenguaje Move en el ámbito de Web3, es crucial investigar y descubrir este tipo de vulnerabilidades potenciales para mejorar la seguridad de todo el ecosistema. Los desarrolladores y los investigadores de seguridad deben mantenerse alerta, prestando atención constante y mejorando el rendimiento de seguridad del lenguaje Move.
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.
14 me gusta
Recompensa
14
9
Republicar
Compartir
Comentar
0/400
GateUser-aa7df71e
· 08-19 18:48
Otro proyecto va a fracasar, la burbuja va a estallar.
Ver originalesResponder0
TokenVelocity
· 08-17 11:11
Después de trabajar durante dos años y mantener a todos, me arruiné y solo yo sigo adelante con la carga, despertando de un sueño emprendedor de 3000 días.
Ver originalesResponder0
GateUser-0717ab66
· 08-16 22:28
Quien se desborda, quien es un sb
Ver originalesResponder0
ForumLurker
· 08-16 22:27
¿move está causando problemas de nuevo?
Ver originalesResponder0
TokenTaxonomist
· 08-16 22:23
estadísticamente hablando, otro callejón sin salida evolutivo para mover... no estoy sorprendido, para ser honesto
Ver originalesResponder0
SolidityStruggler
· 08-16 22:20
Los desbordamientos son realmente molestos...
Ver originalesResponder0
RiddleMaster
· 08-16 22:10
Otra vez es un error de desbordamiento, no se acaba nunca.
El módulo de seguridad de Move ha detectado una vulnerabilidad de desbordamiento de enteros, lo que podría provocar un ataque de construcción o un colapso del sistema.
Se descubrió una vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de referencia de Move
Recientemente, un estudio en profundidad ha descubierto una nueva vulnerabilidad de desbordamiento de enteros en el lenguaje Move. Esta vulnerabilidad se encuentra en el proceso de verificación de seguridad de referencias, involucrando algunos conceptos y mecanismos centrales del lenguaje Move.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en cuatro pasos. Esta nueva vulnerabilidad se presenta en el paso de reference_safety. Este paso es responsable de verificar la seguridad de las referencias, incluyendo la comprobación de referencias en desuso, la seguridad de acceso a referencias mutables y la seguridad de acceso a referencias de almacenamiento global, entre otros.
El núcleo de la verificación de seguridad en la cita es analizar los bloques fundamentales en cada función. Un bloque fundamental es una secuencia de código que no tiene instrucciones de bifurcación, excepto en la entrada y salida. El lenguaje Move identifica los bloques fundamentales al recorrer el bytecode y buscar todas las instrucciones de bifurcación e instrucciones de bucle.
Durante el proceso de verificación, el sistema mantendrá una estructura AbstractState que contiene información sobre el gráfico de préstamos y locales, utilizada para garantizar la seguridad de las referencias en la función. El proceso de verificación ejecutará el código de bloques básicos, 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 lo propagará a los bloques posteriores.
La vulnerabilidad se encuentra en la función join_. Cuando la longitud de los parámetros de la función más la longitud de las variables locales supera 256, el uso del tipo u8 para representar variables locales puede provocar un desbordamiento de entero. Aunque el lenguaje Move tiene un mecanismo para verificar el número de locals, solo verifica la cantidad de variables locales y no incluye la longitud de los parámetros.
Esta vulnerabilidad de desbordamiento podría llevar a un ataque de denegación de servicio. Un atacante puede construir un bloque de código en bucle, aprovechando el desbordamiento para cambiar el estado del bloque. Cuando se ejecuta nuevamente el bloque básico, si el índice que necesita acceder a la instrucción no existe en el nuevo mapa de locales, puede causar que el sistema se bloquee.
Para demostrar esta vulnerabilidad, los investigadores proporcionaron una prueba de concepto (PoC). Al configurar parámetros específicos y el número de variables locales, se puede provocar un desbordamiento de enteros, lo que provoca un pánico en el sistema.
Esta vulnerabilidad revela que incluso los lenguajes diseñados de manera rigurosa pueden tener riesgos de seguridad. Destaca la importancia de la auditoría de código y la necesidad de considerar más casos límite en el diseño del lenguaje. Para el lenguaje Move, se sugiere agregar más comprobaciones de seguridad en tiempo de ejecución, en lugar de depender únicamente de los mecanismos de seguridad de la fase de verificación.
Con la amplia aplicación del lenguaje Move en el ámbito de Web3, es crucial investigar y descubrir este tipo de vulnerabilidades potenciales para mejorar la seguridad de todo el ecosistema. Los desarrolladores y los investigadores de seguridad deben mantenerse alerta, prestando atención constante y mejorando el rendimiento de seguridad del lenguaje Move.