Se descubrió una vulnerabilidad en una gran cantidad de compiladores que le permite ocultar código malicioso

Expertos de la Universidad de Cambridge han publicado información sobre una vulnerabilidad peligrosa (CVE-2021-42574), que afecta a casi todoscompiladores de código fuente modernos. El artículo de Trojan Source describe un ataque insidioso que permite a los piratas informáticos ocultar código malicioso en el código fuente de varios programas.

El ataque se basa en la forma en que los compiladores manejan los identificadores únicos utilizados para determinar si el texto está orientado de izquierda a derecha o de derecha a izquierda.La debilidad radica en el algoritmo Unicode Bidi, que le permite usar palabras escritas de derecha a izquierda y de izquierda a derecha juntas.Gracias a este algoritmo, es posible combinar palabras en árabe e inglés.Lee el texto escrito de derecha a izquierda, de izquierda a derecha y viceversa.

En algunos casos, las capacidades del algoritmo.Unicode Bidi no es suficiente para cambiar la forma en que se muestran estas palabras, y en tales casos se utilizan caracteres de control especiales. Sin embargo, si la misma línea combina palabras con diferentes direcciones de texto, entonces usando estos caracteres de control puede cambiar la dirección en la que el compilador lee ese texto y, por ejemplo, hacer que las líneas que parecen comentarios actúen como código ejecutable.


</ img>

Con este método, puede agregar archivos maliciososinstrucción en el código fuente normal y hacer que el texto de esta instrucción sea invisible al ver el código mediante un comentario posterior. Esto insertará caracteres completamente diferentes, que en realidad podrían ser código arbitrario. El código fuente final sigue siendo semánticamente correcto, pero una vez compilado, sucede algo completamente diferente.

Al ver y analizar dicho código fuenteel programador verá código con comentarios que no levantan ninguna sospecha, pero el compilador o intérprete invertirá el orden lógico de los símbolos y el comentario inocente se convertirá en código adicional insertado en el programa. El error está presente en casi todos los compiladores &#8211; para lenguajes de programación C, C++ (gcc y clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go y Python; en una variedad de editores de código populares, incluidos VS Code, Emacs, Atom e interfaces de visualización de código fuente en GitHub, Gitlab, BitBucket y todos los productos Atlassian.

Fuente: trojansource, zdnet

</ p>