Una nueva clase de vulnerabilidades podría ser aprovechada por los actores de la amenaza para inyectar malware visualmente engañoso de una manera que es semánticamente permisible, pero altera la lógica definida por el código fuente, abriendo efectivamente la puerta a más riesgos de primera parte y de la cadena de suministro.
Esta técnica, denominada «ataques a la fuente del troyano«, «aprovecha las sutilezas de los estándares de codificación de texto, como Unicode, para producir un código fuente cuyos tokens se codifican lógicamente en un orden diferente al que se muestran, lo que da lugar a vulnerabilidades que no pueden ser percibidas directamente por los revisores de código humanos», afirman los investigadores de la Universidad de Cambridge Nicholas Boucher y Ross Anderson en un artículo recién publicado.
Las vulnerabilidades -rastreadas como CVE-2021-42574 y CVE-2021-42694- afectan a los compiladores de todos los lenguajes de programación populares, como C, C++, C#, JavaScript, Java, Rust, Go y Python.
Los compiladores son programas que traducen el código fuente de alto nivel legible por el ser humano a sus representaciones de bajo nivel, como el lenguaje ensamblador, el código objeto o el código máquina, que luego pueden ser ejecutados por el sistema operativo.
En el fondo, la cuestión se refiere al algoritmo bidireccional (o Bidi) de Unicode, que permite la compatibilidad con los idiomas de izquierda a derecha (por ejemplo, el inglés) y de derecha a izquierda (por ejemplo, el árabe o el hebreo), y también presenta lo que se denomina anulaciones bidireccionales para permitir la escritura de palabras de izquierda a derecha dentro de una frase de derecha a izquierda, o viceversa, lo que hace posible incrustar texto de una dirección de lectura diferente dentro de grandes bloques de texto.
Mientras que se espera que la salida de un compilador implemente correctamente el código fuente que se le suministra, las discrepancias creadas al insertar caracteres de anulación Bidi Unicode en comentarios y cadenas pueden permitir un escenario que produzca un código fuente sintácticamente válido en el que el orden de visualización de los caracteres presente una lógica que diverja de la lógica real.
Dicho de otro modo, el ataque se centra en la codificación de los archivos de código fuente para crear vulnerabilidades específicas, en lugar de introducir deliberadamente errores lógicos, con el fin de reordenar visualmente los tokens en el código fuente que, aunque se presenta de manera perfectamente aceptable, engaña al compilador para que procese el código de una manera diferente y cambie drásticamente el flujo del programa, por ejemplo, haciendo que un comentario aparezca como si fuera código.
«En efecto, anagramamos el programa A para convertirlo en el programa B», conjeturan los investigadores. «Si el cambio en la lógica es lo suficientemente sutil como para pasar desapercibido en las pruebas posteriores, un adversario podría introducir vulnerabilidades específicas sin ser detectado».
Los investigadores advierten que estas codificaciones adversas pueden tener un grave impacto en la cadena de suministro, cuando las vulnerabilidades invisibles del software inyectado en el software de código abierto se abren camino hacia abajo, afectando potencialmente a todos los usuarios del software. Y lo que es peor, los ataques de Trojan Source pueden agravarse si un atacante utiliza los homólogos para redefinir funciones preexistentes en un paquete upstream e invocarlas desde un programa víctima.
Sustituyendo las letras latinas por caracteres parecidos de otros conjuntos de la familia Unicode (por ejemplo, cambiando la «H» por el cirílico «Н»), un actor de la amenaza puede crear una función de homoglifo que aparentemente parezca similar a la función original, pero que en realidad contenga código malicioso que luego podría añadirse a un proyecto de código abierto sin atraer mucho escrutinio. Un ataque de este tipo podría ser desastroso cuando se aplica contra una función común que está disponible a través de una dependencia o biblioteca importada, señala el documento.
«El hecho de que la vulnerabilidad de Trojan Source afecte a casi todos los lenguajes informáticos hace que sea una oportunidad poco frecuente para comparar las respuestas entre plataformas y proveedores, de forma sistemática y ecológicamente válida», señalaron los investigadores. «Como se pueden lanzar fácilmente poderosos ataques a la cadena de suministro utilizando estas técnicas, es esencial que las organizaciones que participan en una cadena de suministro de software implementen defensas».
Fuente: Cristianhous.com
Copiar URL