El INCIBE alerta de un exploit que ataca al lenguaje Rust y puede enviar a los equipos un código diferente al original

El INCIBE alerta de un exploit que ataca al lenguaje Rust y puede enviar a los equipos un código diferente al original
2 comentarios

El Instituto Nacional de Ciberseguridad de España (INCIBE) ha alertado de un problema de seguridad que han descubierto investigadores de la Universidad de Cambridge. Se trata de 2 vulnerabilidades "críticas que afectan a la mayoría de los compiladores de código y a muchos entornos de desarrollo de software". Según los expertos, estas pueden usarse para realizar ataques a la cadena de suministro.

Los recursos afectados son "prácticamente todos los compiladores de código", el estándar de codificación Unicode, hasta la versión 14.0 y el lenguaje de programación Rust en las versiones desde 1.0.0 hasta 1.56.0. Hay que recordar que Rust es un lenguaje que se ha ido consolidando en los últimos años e incluso gigantes de la tecnología como Google, Facebook o Microsoft han apostado por él.

En la encuesta global de Stack Overflow para conocer los lenguajes de programación favoritos de los desarrolladores, Rust fue el más valorado en 2020 y también este 2021, con un 86,69% de desarrolladores que eligieron Rust como el lenguaje que más "aman". Aún así, no está libre de peligros.

Por su parte, Unicode, también afectado, es un set de caracteres universal, es decir, un estándar en el que se definen todos los caracteres necesarios para la escritura de la mayoría de los idiomas hablados en la actualidad que se usan en un ordenador.

Cómo funciona el exploit

programación

De acuerdo con las informaciones publicadas por el INCIBE, con este exploit descubierto un atacante podría enviar a los equipos un código diferente al que se pretendía originalmente, anulando las instrucciones de un programa.

"El ataque consiste en utilizar los caracteres de control incrustados en los comentarios y las cadenas para reordenar los caracteres del código fuente, de forma que cambie su lógica", de acuerdo con la información descubierta por los investigadores de Cambridge.

Por otro lado, la vulnerabilidad descubierta en las definiciones de caracteres de Unicode permite que un atacante produzca identificadores de código fuente, tales como nombres de funciones, utilizando homoglifos que son visualmente idénticos a un identificador de destino. Los atacantes pueden aprovecharlo para inyectar código.

También se ha descubierto una vulnerabilidad en el algoritmo bidireccional (Bidi) de Unicode que podría permitir la reordenación visual de los caracteres a través de secuencias de control. Esto podría ser usado para crear código fuente que se traduce en una lógica diferente a la ordenación de los tokens recibidos por los compiladores e intérpretes. Un atacante podría aprovecharlo para codificar el código fuente de los compiladores que aceptan Unicode.

Soluciones propuestas

programar

Para mitigar estas vulnerabilidades, en la información compartida por INCIBE se recomienda comprobar periódicamente que algunos codepoints no están presentes en repositorios o dependencias.

Los codepoints son estos: U+202A, U+202B, U+202C, U+202D, U+202E, U+2066, U+2067, U+2068 o U+2069.

Además, quienes usan Rust pueden actualizar a la versión 1.56.1

Temas
Inicio