El ‘exploit’, denominado por los descubridores Trojan Source, es especialmente peligroso para los proyectos abiertos dado que persiste a través del uso de la función de copiar y pegar y es invisible para el ojo humano.
Un equipo de científicos de la Universidad de Cambridge descubrió una vulnerabilidad que amenaza a prácticamente cualquier ‘software’, así lo advierten en un artículo publicado este domingo en el que muestran los resultados de su análisis. Paralelamente, los divulgaron en el repositorio Github.
Prácticamente todos los compiladores (programas que ‘traducen’ el código legible para los humanos en un formato comprensible para la computadora) son vulnerables a un ataque en el que se pueden introducir vulnerabilidades específicas en cualquier software sin ser detectado.
La debilidad involucra el estándar de codificación de texto digital Unicode y, más específicamente, su algoritmo Bidi, que maneja la visualización del texto con diferentes órdenes de escritura, como el árabe (que se lee de derecha a izquierda) y el inglés o el español (en la dirección inversa).
«En algunos escenarios, el orden predeterminado establecido por el algoritmo Bidi puede no ser suficiente; para estos casos, se prevén los caracteres de control de anulación«, indican los científicos. Señalan que estos caracteres, que son invisibles, pueden insertarse muchas veces, permitiendo «reordenar las cadenas de manera casi arbitraria».
«Esto da a un adversario un control detallado, por lo que puede manipular el orden de visualización del texto [convirtiéndolo] en un anagrama de su orden lógicamente codificado», advierten los analistas.
Como resultado, el código manipulado puede verse normal para los humanos y, al mismo tiempo, ejecutarse de manera no esperada por los compiladores. Además, no se detectaría durante la revisión de la sintaxis de la programación en la mayoría de los idiomas.
«Nuestra idea clave es que podemos reordenar los caracteres del código fuente de manera que el orden de visualización resultante también represente un código fuente sintácticamente válido«, indican los expertos.
«La primera vulnerabilidad que afecta a casi todo»
De momento, la vulnerabilidad —denominada por los descubridores Trojan Source— ha sido confirmada en las programaciones asociadas con los lenguajes C#, C++, C, Go, Java, JavaScriipt, Python y Rust.
Dado que los caracteres de anulación de Bidi persisten a través de las funciones de copiar y pegar en la mayoría de los navegadores, editores y sistemas operativos modernos, es posible una proliferación incontrolada del ‘exploit’, dijo Ross Anderson, uno de los autores del estudio, al portal Krebs On Security.
«Cualquier desarrollador que copie código de una fuente que no sea de confianza en una base de código protegida puede introducir inadvertidamente una vulnerabilidad invisible», resaltó el experto.
«Esas son malas noticias para proyectos como Linux y Webkit que aceptan contribuciones de personas al azar, las someten a revisión manual y luego las incorporan al código crítico. Esta vulnerabilidad es, hasta donde yo sé, la primera que afecta a casi todo», señaló Anderson.