El mistake ‘Trojan Source’ amenaza la seguridad de todo el código – Krebs on Stability


Prácticamente todos los compiladores (programas que transforman el código fuente legible por humanos en código de máquina ejecutable por computadora) son vulnerables a un ataque insidioso en el que un adversario puede introducir vulnerabilidades específicas en cualquier program sin ser detectado, advierte una nueva investigación publicada hoy. La divulgación de la vulnerabilidad se coordinó con varias organizaciones, algunas de las cuales ahora están lanzando actualizaciones para abordar la debilidad de la seguridad.

Investigadores con el Universidad de Cambridge descubrió un mistake que afecta a la mayoría de los compiladores de códigos informáticos y a muchos entornos de desarrollo de software program. En cuestión es un componente del estándar de codificación de texto electronic. Unicode, que permite a las computadoras intercambiar información independientemente del idioma utilizado. Unicode outline actualmente más de 143.000 caracteres en 154 escrituras de idiomas diferentes (además de muchos conjuntos de caracteres que no son de script, como emojis).

Específicamente, la debilidad involucra el bidireccional o «Algoritmo Bidi ”, que maneja la visualización de texto que incluye escrituras mixtas con diferentes órdenes de visualización, como árabe, que se lee de derecha a izquierda, e inglés (de izquierda a derecha).

Pero los sistemas informáticos deben tener una forma determinista de resolver la direccionalidad conflictiva en el texto. Ingrese la «Anulación de bidi», que se puede usar para hacer que el texto de izquierda a derecha se lea de derecha a izquierda y viceversa.

«En algunos escenarios, el orden predeterminado establecido por el algoritmo Bidi puede no ser suficiente», escribieron los investigadores de Cambridge. «Para estos casos, los caracteres de regulate de anulación de Bidi permiten cambiar el orden de visualización de los grupos de caracteres».

Las anulaciones bidi permiten que incluso los caracteres de un solo script se muestren en un orden diferente al de su codificación lógica. Como señalan los investigadores, este hecho se ha aprovechado previamente para disfrazar las extensiones de archivo de malware que se difunden por correo electrónico.

Aquí está el problema: la mayoría de los lenguajes de programación le permiten poner estas anulaciones de Bidi en comentarios y cadenas. Esto es malo porque la mayoría de los lenguajes de programación permiten comentarios dentro de los cuales todo el texto, incluido personajes de management – es ignorado por compiladores e intérpretes. Además, es malo porque la mayoría de los lenguajes de programación permiten literales de cadena que puede contener caracteres arbitrarios, incluidos caracteres de handle.

«Para que pueda utilizarlos en un código fuente que parezca inocuo para un revisor humano [that] realmente puede hacer algo desagradable «, dijo Ross Anderson, profesor de seguridad informática en Cambridge y coautor de la investigación. “Esas son malas noticias para proyectos como Linux y Webkit que aceptan contribuciones de personas al azar, las someten a revisión handbook y luego las incorporan al código crítico. Esta vulnerabilidad es, hasta donde yo sé, la primera que afecta a casi todo ”.

El artículo de investigación, que denominó la vulnerabilidad «Fuente troyana, ”Señala que, si bien tanto los comentarios como las cadenas tendrán una semántica específica de la sintaxis que indique su inicio y closing, estos límites no son respetados por las anulaciones de Bidi. Del periódico:

“Por lo tanto, al colocar caracteres de anulación de Bidi exclusivamente dentro de comentarios y cadenas, podemos pasarlos de contrabando al código fuente de una manera que la mayoría de los compiladores aceptarán. Nuestra notion clave es que podemos reordenar los caracteres del código fuente de tal manera que el orden de visualización resultante también represente el código fuente sintácticamente válido «.

“Al reunir todo esto, llegamos a un novedoso ataque a la cadena de suministro en el código fuente. Al inyectar caracteres de anulación Unicode Bidi en comentarios y cadenas, un adversario puede producir código fuente sintácticamente válido en la mayoría de los lenguajes modernos para los que el orden de visualización de los caracteres presenta una lógica que diverge de la lógica authentic. En efecto, anagramamos el programa A en el programa B. «

Anderson dijo que un ataque de este tipo podría ser un desafío para que lo detecte un revisor de código humano, ya que el código fuente renderizado parece perfectamente aceptable.

«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», dijo.

Igualmente preocupante es que Bidi anula los caracteres persistir a través de las funciones de copiar y pegar en la mayoría de los navegadores, editores y sistemas operativos modernos.

“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”, dijo Anderson a KrebsOnSecurity. «Esta copia de código es una fuente importante de vulnerabilidades de seguridad en el mundo authentic».

Imagen: XKCD.com/2347/

Matthew Eco-friendly, profesor asociado en la Instituto de Seguridad de la Información Johns Hopkins, dijo que la investigación de Cambridge muestra claramente que la mayoría de los compiladores pueden ser engañados con Unicode para que procesen el código de una manera diferente a la que un lector esperaría que se procesara.

“Antes de leer este documento, la notion de que Unicode pudiera explotarse de alguna manera no me habría sorprendido”, dijo Inexperienced a KrebsOnSecurity. “Lo que sí me sorprende es cuántos compiladores analizarán felizmente Unicode sin ninguna defensa, y cuán efectiva es su técnica de codificación de derecha a izquierda para introducir código en bases de código. Es un truco realmente inteligente que ni siquiera sabía que era posible. ¡Ay! «

Eco-friendly dijo que la buena noticia es que los investigadores realizaron un escaneo de vulnerabilidad generalizado, pero no pudieron encontrar evidencia de que alguien estuviera explotando esto. Todavía.

«La mala noticia es que no tenía defensas, y ahora que la gente lo sabe, podrían comenzar a explotarlo», dijo Inexperienced. “¡Con suerte, los desarrolladores de compiladores y editores de código parchearán esto rápidamente! Pero dado que algunas personas no actualizan sus herramientas de desarrollo con regularidad, habrá algún riesgo al menos durante un tiempo «.

Nicholas Weaver, profesor del departamento de informática de Universidad de California, Berkeley, dijo que la investigación de Cambridge presenta «un conjunto de ataques muy easy y elegante que podría empeorar los ataques a la cadena de suministro».

“Ya es difícil para los humanos distinguir ‘esto está bien’ de ‘esto es malo’ en el código fuente”, dijo Weaver. “Con este ataque, puede usar el cambio de direccionalidad para cambiar la forma en que se procesan las cosas con comentarios y cadenas de modo que, por ejemplo, ‘Esto está bien’ es la forma en que se representa, pero ‘Esto está’ bien es cómo existe en el código. Afortunadamente, esto tiene una firma muy fácil de buscar, por lo que los compiladores pueden [detect] si lo encuentran en el futuro «.

La segunda mitad del artículo de Cambridge es un fascinante estudio de caso sobre las complejidades de orquestar la divulgación de vulnerabilidades con tantos lenguajes de programación y empresas de software package afectados. Los investigadores dijeron que ofrecieron un período de embargo de 99 días después de su divulgación inicial para permitir que los productos afectados se reparen con actualizaciones de software program.

“Encontramos una variedad de respuestas que van desde compromisos de parcheo y recompensas por errores hasta despidos rápidos y referencias a políticas legales”, escribieron los investigadores. “De los diecinueve proveedores de computer software con los que nos relacionamos, siete utilizaron una plataforma subcontratada para recibir divulgaciones de vulnerabilidades, seis tenían portales net dedicados para divulgaciones de vulnerabilidades, cuatro divulgaciones aceptadas a través de correo electrónico cifrado con PGP y dos divulgaciones aceptadas solo a través de correo electrónico no PGP. Todos confirmaron la recepción de nuestra divulgación y, finalmente, nueve de ellos se comprometieron a lanzar un parche «.

At the time de los destinatarios tenían programas de recompensas por errores que ofrecían pagos por divulgaciones de vulnerabilidades. Pero de estos, solo cinco recompensas pagadas, con un pago promedio de $ 2,246 y un rango de $ 4,475, informaron los investigadores.

Anderson dijo que hasta ahora aproximadamente la mitad de las organizaciones que mantienen los lenguajes de programación de computadoras afectados contactados han prometido parches. Otros están arrastrando los pies.

«Supervisaremos su despliegue durante los próximos días», dijo Anderson. «También esperamos acciones de Github, Gitlab y Atlassian, por lo que sus herramientas deberían detectar ataques al código en lenguajes que aún carecen de filtrado de caracteres bidi».

En cuanto a lo que se debe hacer con Trojan Source, los investigadores instan a los gobiernos y empresas que dependen de application crítico a identificar la postura de sus proveedores, ejercer presión sobre ellos para implementar defensas adecuadas y asegurarse de que cualquier brecha sea cubierta por controles en otras partes de su cadena de herramientas.

“El hecho de que la vulnerabilidad de la fuente troyana afecte a casi todos los lenguajes informáticos lo convierte en una oportunidad única para una comparación de respuestas entre plataformas y proveedores de todo el sistema y ecológicamente válida”, concluye el documento. «Dado que pueden lanzarse fácilmente ataques poderosos a la cadena de suministro utilizando estas técnicas, es esencial que las organizaciones que participan en una cadena de suministro de application implementen defensas».

Weaver calificó la investigación como «un trabajo realmente bueno para detener algo antes de que se convierta en un problema».

“Las lecciones de divulgación coordinadas son un excelente estudio sobre lo que se necesita para solucionar estos problemas”, dijo. «La vulnerabilidad es real, pero también destaca la vulnerabilidad aún mayor de la posición cambiante de dependencias y paquetes en los que se basa nuestro código moderno».

Rust ha liberado un aviso de seguridad para esta debilidad de seguridad, que se rastrea como CVE-2021-42574 y CVE-2021-42694. Se agregarán avisos de seguridad adicionales de otros idiomas afectados como actualizaciones aquí.

El artículo de investigación Trojan Supply está disponible aquí (PDF).



Enlace a la noticia initial