Una nueva técnica de “fuente de troyanos” permite a los ciberdelincuentes ocultar vulnerabilidades en el código fuente

Publicado por: Manuel Abreu Ortiz - social@manuelabreuo.com

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 publicado recientemente.

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), 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, forzando así que el texto de izquierda a derecha sea tratado como de derecha a izquierda.

Aunque se espera que la salida de un compilador implemente correctamente el código fuente que se le ha suministrado, las discrepancias creadas al insertar caracteres de anulación bidireccional 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.

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 homoglyphs para redefinir funciones preexistentes en un paquete upstream e invocarlas desde un programa víctima.

Info – Ciberseguridad Latam