Hemos tenido mucha suerte. Hace un par de semanas, se descubrió un ataque a la cadena de suministro contra el paquete Linux xz Utils, que incluye la biblioteca de compresión liblzma, apenas unas semanas antes de que la versión comprometida de la biblioteca se hubiera incorporado a las distribuciones de Linux más utilizadas. El ataque insertó una puerta trasera en sshd que habría dado a los actores de amenazas acceso remoto al shell en cualquier sistema infectado. Los detalles del ataque se han discutido exhaustivamente en línea. Si quieres una exposición paso a paso, aquí tienes dos cronologías. ArsTechnica, Bruce Schneier y otras fuentes tienen buenos debates sobre el ataque y sus implicaciones. Para los propósitos de este artículo, aquí hay un breve resumen. Aprende más rápido. Excavar más hondo. Ver más lejos. El malware fue introducido en xz Utils por uno de sus mantenedores, una entidad llamada Jia Tan. Es casi seguro que ese no es el nombre de una persona; Se desconoce el verdadero autor. Es probable que el atacante sea un colectivo que opera bajo un único nombre. Jia Tan comenzó hace varios años enviando una serie de cambios y correcciones a xz, que se incluyeron en la distribución, estableciendo una reputación de realizar un trabajo útil. Un ataque coordinado contra el creador y mantenedor de xz, Lasse Collin, se quejó de que Collin no aprobaba los parches con la suficiente rapidez. Esta presión finalmente lo convenció de agregar a Jia Tan como mantenedor. Durante dos años, Jia Tan agregó gradualmente archivos fuente comprometidos a xz Utils. No hay nada realmente obvio o procesable; Los atacantes fueron lentos, metódicos y pacientes, introduciendo gradualmente componentes del malware y desactivando pruebas que podrían haber detectado el malware. No hubo cambios lo suficientemente significativos como para llamar la atención y los compromisos se ocultaron cuidadosamente. Por ejemplo, una prueba fue desactivada por la introducción de un error tipográfico inofensivo de un solo carácter. Sólo unas semanas antes de que las xz Utils comprometidas se convirtieran en parte del lanzamiento general de RedHat, Debian y varias otras distribuciones, Andrew Freund notó algunas anomalías de rendimiento en la distribución beta que estaba usando. Investigó más a fondo, descubrió el ataque y notificó a la comunidad de seguridad. Freund dejó claro que no es un investigador de seguridad y que puede haber otros problemas con el código que no detectó. ¿Es ese el final de la historia? El xz Utils comprometido nunca se distribuyó ampliamente y nunca causó ningún daño. Sin embargo, muchas personas siguen nerviosas, y con razón. Aunque el ataque se descubrió a tiempo, plantea una serie de cuestiones importantes que no podemos esconder debajo de la alfombra: estamos ante un ataque de ingeniería social que logra sus objetivos mediante la intimidación, algo que es muy común en el código abierto. world.A diferencia de la mayoría de los ataques a la cadena de suministro, que insertan malware de forma encubierta al pasarlo por un mantenedor, este ataque logró insertar un mantenedor corrupto, corrompiendo la versión misma. No se puede ir más arriba que eso. Y es posible que otros paquetes se hayan visto comprometidos de la misma manera. Muchos en la comunidad de seguridad creen que la calidad del malware y la paciencia de los actores es una señal de que están trabajando para una agencia gubernamental. El ataque fue descubierto por alguien que no era un experto en seguridad. Es comprensible que la comunidad de seguridad esté preocupada por no haber visto esto. ¿Qué podemos aprender de esto? Todos son responsables de la seguridad. No me preocupa que el ataque no haya sido descubierto por un experto en seguridad, aunque eso puede resultar algo embarazoso. Realmente significa que todos están en la comunidad de seguridad. A menudo se dice: «Con suficientes ojos, todos los insectos son superficiales». Realmente sólo necesitas un par de globos oculares, y en este caso, esos globos oculares pertenecían a Andrés Freund. Pero eso sólo plantea la pregunta: ¿cuántos globos oculares estaban observando? Para la mayoría de los proyectos, no es suficiente; posiblemente ninguno. Si nota algo que le parece divertido, mírelo más a fondo (consiga la ayuda de un experto en seguridad si es necesario); No asumas simplemente que todo está bien. «Si ves algo, di algo.» Esto se aplica tanto a corporaciones como a individuos: no aproveche los beneficios del software de código abierto sin comprometerse con su mantenimiento. Invierta para garantizar que el software que compartimos sea seguro. La Open Source Security Foundation (OpenSSF) enumera algunos patrones sospechosos, junto con las mejores prácticas para proteger un proyecto. Es más preocupante que un tipo particularmente abusivo de ingeniería social permitiera a los actores amenazantes comprometer el proyecto. Hasta donde puedo decir, este es un elemento nuevo: la ingeniería social generalmente toma una forma como «¿Puedes ayudarme?» o «Estoy tratando de ayudarte». Sin embargo, muchos proyectos de código abierto toleran comportamientos abusivos. En este caso, esa tolerancia abrió un nuevo vector de ataque: acosar a un mantenedor para que aceptara un segundo mantenedor corrupto. ¿Ha sucedido esto antes? Nadie lo sabe (todavía). ¿Sucederá de nuevo? Dado que estuvo tan cerca de funcionar una vez, es casi seguro. Soluciones como seleccionar a los mantenedores potenciales no abordan el problema real. El tipo de presión que aplicaron los atacantes sólo fue posible porque ese tipo de abuso es aceptado. Eso tiene que cambiar. Hemos aprendido que sabemos mucho menos sobre la integridad de nuestros sistemas de software de lo que pensábamos. Hemos aprendido que los ataques a la cadena de suministro de software de código abierto pueden comenzar muy arriba; de hecho, en el origen de la corriente. Lo que necesitamos ahora es hacer que ese miedo sea útil examinando cuidadosamente nuestras cadenas de suministro de software y garantizando su seguridad, y eso incluye la seguridad social. Si no lo hacemos, la próxima vez puede que no tengamos tanta suerte.