La nueva técnica «Trojan Source» permite a los hackers ocultar vulnerabilidades en el código fuente

Las amenazas podrían explotar una nueva clase de vulnerabilidades para inyectar malware visualmente engañoso de una manera que sea semánticamente aceptable, pero cambie la lógica definida por el código fuente y efectivamente abra la puerta a un mayor riesgo propio y de la cadena de suministro.

Esta técnica, denominada «ataques de origen troyano», utiliza sutilezas en los estándares de codificación de texto, como Unicode, para crear un código fuente cuyos tokens se codifican lógicamente en un orden diferente al que se muestran, lo que genera vulnerabilidades que no se pueden percibir directamente. revisores de código humano ”, dijeron los investigadores de la Universidad de Cambridge Nicholas Boucher y Ross Anderson en un artículo recientemente 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 código fuente legible por humanos de alto nivel en sus representaciones de nivel inferior, como lenguaje de instrucción simbólico, código de objeto o código de máquina, que luego puede ejecutar el sistema operativo.

En esencia, el problema es un algoritmo Unicode bidireccional (o Bidi) que admite idiomas de izquierda a derecha (como el inglés) y de derecha a izquierda (como el árabe o el hebreo) y también incluye lo que es llamada reescritura bidireccional para permitir escribir palabras de izquierda a derecha en una oración de derecha a izquierda o viceversa, lo que le permite insertar texto en una dirección de lectura diferente en grandes bloques de texto.

Aunque se espera que la salida del compilador implemente correctamente el código fuente que se le proporcionó, las inconsistencias creadas al insertar caracteres de anulación Unicode Bidi en comentarios y cadenas pueden permitir un escenario que proporcione un código fuente sintácticamente válido en el que el orden en que aparecen los caracteres representa la lógica que difiere de la lógica real.

En otras palabras, el ataque funciona apuntando a archivos de código fuente para crear vulnerabilidades específicas, en lugar de introducir errores lógicos intencionalmente para cambiar visualmente el orden de los tokens en el código fuente, lo que, aunque representado de una manera perfectamente aceptable, hace que el compilador proceso el código cambia de manera diferente y drástica el flujo del programa; por ejemplo, al hacer que el comentario parezca código.

«De hecho, anagramamos el Programa A en el Programa B», dijeron los investigadores. «Si el cambio en la lógica es lo suficientemente sutil como para no ser detectado en pruebas posteriores, el enemigo podría introducir una vulnerabilidad específica sin ser detectado».

Los investigadores advierten que este tipo de codificación hostil puede tener un impacto grave en la cadena de suministro cuando una vulnerabilidad de software invisible incrustada en el software de código abierto avanza y afecta potencialmente a todos los usuarios del software. Peor aún, los ataques de fuente troyana pueden ser más graves si un atacante utiliza homoglifos para redefinir las funciones existentes en un paquete ascendente y las recupera del programa de la víctima.

Al reemplazar las letras latinas con caracteres similares de otros conjuntos de la familia Unicode (por ejemplo, cambiar la «H» por la «Н» cirílica), el actor de la amenaza puede crear una función de homoglifo que parece similar a la función original, pero que en realidad contiene un código malicioso que podría luego agregarse a un proyecto de código abierto sin llamar más la atención. Un ataque de este tipo podría ser catastrófico si se usa contra una característica común que está disponible a través de una dependencia o biblioteca importada, señaló el documento.

«El hecho de que la vulnerabilidad de la fuente troyana afecte a casi todos los lenguajes informáticos hace que sea una oportunidad única para comparaciones de respuestas respetuosas con el medio ambiente y en todo el sistema entre plataformas y proveedores», dijeron los investigadores. «Debido a que estas técnicas facilitan el lanzamiento de fuertes ataques a la cadena de suministro, es esencial que las organizaciones involucradas en la cadena de suministro de software implementen defensa».

Continua leyendo