Inicio / Alerta Temprana / Avisos Seguridad / Trojan Source: vulnerabilidades en Unicode que afectan a compiladores

Trojan Source: vulnerabilidades en Unicode que afectan a compiladores

Fecha de publicación: 
04/11/2021
Importancia: 
5 - Crítica
Recursos afectados: 
  • Prácticamente todos los compiladores de código;
  • estándar de codificación Unicode, hasta la versión 14.0;
  • Rust, versiones desde 1.0.0 hasta 1.56.0.
Descripción: 

Los investigadores Nicholas Boucher y Ross Anderson, de la Universidad de Cambridge, han descubierto 2 vulnerabilidades críticas que afectan a la mayoría de los compiladores de código y a muchos entornos de desarrollo de software, pudiendo utilizarse para realizar ataques a la cadena de suministro.

Con el exploit, un atacante podría enviar a las máquinas 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.

Solución: 
  • En el apartado The defense de la investigación se detallan unas medidas de mitigación;
  • comprobar periódicamente que los siguientes codepoints no están presentes en repositorios o dependencias: U+202A, U+202B, U+202C, U+202D, U+202E, U+2066, U+2067, U+2068 o U+2069;
  • actualizar Rust a la versión 1.56.1.
Detalle: 
  • 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 (por ejemplo, LRI: aislamiento de izquierda a derecha y RLI: aislamiento de derecha a izquierda), lo que podría ser utilizado para crear código fuente que se traduce en una lógica diferente a la ordenación lógica 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, de manera que las vulnerabilidades fuesen introducidas de forma invisible para los revisores humanos. Se ha asignado el identificador CVE-2021-42574 para esta vulnerabilidad.
  • Se ha descubierto una vulnerabilidad en las definiciones de caracteres de Unicode. La especificación permitiría 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 podrían aprovecharlo para inyectar código a través de definiciones de identificadores en dependencias de software upstream invocadas de forma engañosa en software downstream. Se ha asignado el identificador CVE-2021-42694 para esta vulnerabilidad.

Encuesta valoración