El módulo de seguridad de referencia del lenguaje Move presenta una vulnerabilidad de desbordamiento de enteros
Recientemente, se ha descubierto una grave vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de referencia del lenguaje Move. Esta vulnerabilidad podría llevar a ataques de denegación de servicio, representando una amenaza potencial para la seguridad del lenguaje Move.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en varios pasos. Esta vulnerabilidad aparece en el paso de reference_safety, que es responsable de verificar la seguridad de las referencias, incluyendo la comprobación de si hay referencias colgantes y si el acceso a referencias mutables es seguro.
La raíz de la vulnerabilidad radica en un problema de desbordamiento de enteros en el módulo de seguridad de referencia. Cuando la suma de la cantidad de parámetros de función y la cantidad de variables locales supera 256, el uso del tipo u8 para iterar sobre las variables locales puede provocar un desbordamiento de enteros. Este desbordamiento puede ser explotado para eludir las comprobaciones de seguridad, lo que resulta finalmente en un ataque de denegación de servicio.
En concreto, el proceso de explotación de vulnerabilidades es el siguiente:
Construir un bloque de código Move que contenga un bucle, para que se ejecute múltiples veces.
Establecer una gran cantidad de parámetros de función y variables locales, de modo que su suma supere 256.
En la primera ejecución, debido a un desbordamiento de enteros, la longitud del nuevo mapa de locales se convertirá en un valor muy pequeño.
Al intentar acceder a un índice de variable local que no existe durante la ejecución posterior, se produce un pánico y un fallo del programa.
Esta vulnerabilidad expone que incluso lenguajes enfocados en la seguridad como Move pueden tener riesgos de seguridad pasados por alto. Nos recuerda la importancia de la auditoría de código y la necesidad de consideraciones de seguridad más completas en el diseño de lenguajes.
Para los usuarios y desarrolladores del lenguaje Move, se recomienda estar atentos a las actualizaciones de seguridad oficiales. Al escribir código en Move, también es importante controlar la cantidad de parámetros de función y variables locales para evitar activar este tipo de situaciones límite.
Desde una perspectiva más macro, esta vulnerabilidad también refleja que depender únicamente de la verificación estática puede no ser suficiente para garantizar una seguridad completa. En el futuro, el lenguaje Move podría necesitar agregar más verificaciones dinámicas en tiempo de ejecución para prevenir problemas de seguridad similares.
En general, el descubrimiento de esta vulnerabilidad demuestra una vez más la importancia de la investigación continua en seguridad para mejorar la seguridad de la tecnología blockchain. A medida que el lenguaje Move se aplica cada vez más en el ámbito de Web3, esperamos ver más medidas de mejora de seguridad introducidas para construir un ecosistema de contratos inteligentes más robusto y confiable.
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.
La amenaza de vulnerabilidad por desbordamiento de enteros en el módulo de seguridad de referencia de Move.
El módulo de seguridad de referencia del lenguaje Move presenta una vulnerabilidad de desbordamiento de enteros
Recientemente, se ha descubierto una grave vulnerabilidad de desbordamiento de enteros en el módulo de seguridad de referencia del lenguaje Move. Esta vulnerabilidad podría llevar a ataques de denegación de servicio, representando una amenaza potencial para la seguridad del lenguaje Move.
El lenguaje Move realiza una verificación de código antes de ejecutar el bytecode, que se divide en varios pasos. Esta vulnerabilidad aparece en el paso de reference_safety, que es responsable de verificar la seguridad de las referencias, incluyendo la comprobación de si hay referencias colgantes y si el acceso a referencias mutables es seguro.
La raíz de la vulnerabilidad radica en un problema de desbordamiento de enteros en el módulo de seguridad de referencia. Cuando la suma de la cantidad de parámetros de función y la cantidad de variables locales supera 256, el uso del tipo u8 para iterar sobre las variables locales puede provocar un desbordamiento de enteros. Este desbordamiento puede ser explotado para eludir las comprobaciones de seguridad, lo que resulta finalmente en un ataque de denegación de servicio.
En concreto, el proceso de explotación de vulnerabilidades es el siguiente:
Construir un bloque de código Move que contenga un bucle, para que se ejecute múltiples veces.
Establecer una gran cantidad de parámetros de función y variables locales, de modo que su suma supere 256.
En la primera ejecución, debido a un desbordamiento de enteros, la longitud del nuevo mapa de locales se convertirá en un valor muy pequeño.
Al intentar acceder a un índice de variable local que no existe durante la ejecución posterior, se produce un pánico y un fallo del programa.
Esta vulnerabilidad expone que incluso lenguajes enfocados en la seguridad como Move pueden tener riesgos de seguridad pasados por alto. Nos recuerda la importancia de la auditoría de código y la necesidad de consideraciones de seguridad más completas en el diseño de lenguajes.
Para los usuarios y desarrolladores del lenguaje Move, se recomienda estar atentos a las actualizaciones de seguridad oficiales. Al escribir código en Move, también es importante controlar la cantidad de parámetros de función y variables locales para evitar activar este tipo de situaciones límite.
Desde una perspectiva más macro, esta vulnerabilidad también refleja que depender únicamente de la verificación estática puede no ser suficiente para garantizar una seguridad completa. En el futuro, el lenguaje Move podría necesitar agregar más verificaciones dinámicas en tiempo de ejecución para prevenir problemas de seguridad similares.
En general, el descubrimiento de esta vulnerabilidad demuestra una vez más la importancia de la investigación continua en seguridad para mejorar la seguridad de la tecnología blockchain. A medida que el lenguaje Move se aplica cada vez más en el ámbito de Web3, esperamos ver más medidas de mejora de seguridad introducidas para construir un ecosistema de contratos inteligentes más robusto y confiable.