Logotipo de Zephyrnet

El desarrollador de JavaScript destruye sus propios proyectos en la "lección" de la cadena de suministro

Fecha:

Probablemente hayas visto las noticias, incluso si no estás seguro de lo que pasó.

A menos que sea un programador de JavaScript y dependa de uno o ambos de un par de módulos llamados faker.js y colors.js.

Si usted era un usuario de cualquiera de esos proyectos, y si está (¡o estuvo!) inclinado a aceptar todas y cada una de las actualizaciones de su código fuente automáticamente sin ningún tipo de revisión o prueba del código...

…probablemente sepa muy bien qué sucedió exactamente y cómo lo afectó.

Ataques a la cadena de suministro

Los lectores a largo plazo de Naked Security estarán familiarizados con el problema de los llamados ataques a la cadena de suministro en bibliotecas de software de código abierto, porque hemos escrito antes sobre este tipo de problema en los ecosistemas de programación.

Hemos escrito acerca de los agujeros de seguridad que aparecen repentinamente en numerosas comunidades de codificación, incluyendo PHP programadores, pitonistas, Rubí usuarios, y NPM ventiladores.

El año pasado, incluso tuvimos motivos para debatir la moralidad de investigadores académicos autoproclamados que utilizaron deliberadamente el repositorio de código fuente del kernel de Linux como campo de pruebas para lo que descaradamente denominaron hipócrita comete.

Los ataques a la cadena de suministro de software generalmente involucran contenido venenoso, peligroso o modificado deliberadamente que infecta su red o su equipo de desarrollo indirectamente, a diferencia de un ataque directo donde los atacantes ingresan a su red y montan un ataque frontal.

Los ataques a la cadena de suministro a menudo se transmiten sin saberlo por uno de sus proveedores de productos y servicios, quienes pueden haber ingerido las modificaciones no autorizadas de alguien anterior a ellos, y así sucesivamente.

MÁS INFORMACIÓN SOBRE LOS ATAQUES A LA CADENA DE SUMINISTRO

Haga clic y arrastre las ondas de sonido a continuación para saltar a cualquier punto del podcast.
También puede escuchar directamente en Soundcloud, o leer una transcripción completa.


Poco ético, tal vez, pero a veces no criminal

Sin embargo, como mencionamos anteriormente, los problemas de la cadena de suministro de este tipo no siempre surgen de una intención delictiva, aunque en última instancia pueden considerarse poco éticos (o infantiles, mal pensados ​​o cualquier combinación de ellos).

Ya mencionamos hipócrita comete, cuyo objetivo era recordarnos a todos que es posible inyectar un código de puerta trasera malicioso al amparo de dos o más cambios que no introducen agujeros de seguridad por sí solos, pero crean una vulnerabilidad cuando se combinan.

Y enlazamos con la historia de un "investigador" que estaba tan interesado en recordarnos lo fácil que es crear paquetes de software traicioneros que subió deliberadamente cerca de 4000 de ellos en una explosión sostenida de “ayuda”.

Como sugerimos en ese momento, ambos "expertos" -los hipócritas y los sobrecargados- parecen haber adoptado el lema egoísta de que vale la pena hacer un trabajo. exagerar...

…creando así enormes cantidades de trabajo innecesario para otros voluntarios inocentes en las comunidades de Linux y Python respectivamente.

Colors y Faker se vuelven rebeldes

Esta vez, el fundador de dos populares módulos de codificación de JavaScript conocidos como colors.js y faker.js ha arrojado dos llaves ligeramente diferentes en las obras.

Colores es un conjunto de herramientas pequeño y simple que lo ayuda a agregar texto en color en la salida de su consola, a menudo para que la información sea más interesante de ver y más fácil de leer.

Por ejemplo, cuando hicimos nuestro Log4Shell - La película recientemente, agregamos un toque de color a la salida de nuestro servidor LDAP simulado para facilitar el seguimiento de las solicitudes entrantes, utilizando secuencias de control ANSI en la salida del terminal para agregar marcas verdes y rojas para indicar éxitos y fallas:

Uso moderado de marcadores terminales verdes y rojos para lograr un atractivo visual y claridad.

por desgracia para colors.js usuarios, el fundador del proyecto, después de no publicar ninguna actualización desde 2019, de repente agregó un nuevo código para tomar el número de versión de 1.4.0 al identificador de versión algo inusual de 1.4.4-liberty-2.

Cansado, aparentemente, de nunca obtener el reconocimiento financiero que sentía que merecía de las muchas personas que estaban usando su trabajo, el fundador destruyó su propio código al agregar un ciclo infinito como este:

/* remove this line after testing */
let am = require('../lib/custom/american');
am();
for (let i = 666; i < Infinity; i++) { if (i % 333) { // console.log('testing'.zalgo.rainbow) } console.log('testing testing testing testing testing testing testing'.zalgo)
}

El bucle al final de este código imprime el texto testing testing ... testing una y otra vez, después de aplicar una función llamada zalgo a la misma.

Zalgoificación

Zalgoificación, si nunca has oído hablar de él, es una forma de hacer que los caracteres romanos regulares se vean extraños y sin sentido al llenarlos de acentos, cedillas, diéresis y otros llamados marcas diacríticas – un poco como nombrar a tu banda Motörhead en lugar de Motorhead, pero sin la restricción de agregar un solo símbolo adicional.

El texto Zalgoed no solo no tiene sentido, sino que a menudo supone una gran carga para el software de representación de texto subyacente que intenta componerlo y diseñarlo para su visualización.

Un calígrafo humano se resistiría a que le pidieran que añadiera todos los acentos posibles a cada letra de una palabra, sabiendo que no tendría ningún sentido.

Pero un compositor computarizado simplemente intentará complacerlo combinando todas las marcas que solicite, dando a su banda Zalgometal un nombre estilizado algo como esto:

Marcas diacríticas agregadas al azar y sin sentido en todo el texto

Un monumento a Aaron Schwartz

Falsificador los usuarios experimentaron un tipo diferente de actualización, con el proyecto esencialmente eliminado y reemplazado por un README archivo preguntando “¿Qué pasó realmente con Aaron Swartz? "

Schwartz, un "hacktivista" acusado de delitos federales relacionados con el acceso no autorizado a trabajos académicos que pensó que deberían no se mantenga detrás de un muro de pago, lamentablemente se suicidó mientras estaba bajo el estrés de esperar su juicio.

El proyecto Faker llega a su fin. Tenga en cuenta el comentario "final del juego", la falta de archivos de código fuente,
y el README recordando a Aaron Schwartz.

Faker era un conjunto de herramientas útil para desarrolladores que facilitó la generación de grandes cantidades de datos realistas pero inventados para garantizar la calidad, como la creación de 100,000 nombres y direcciones que podría agregar a su base de datos de usuarios durante el desarrollo.

Los datos falsos son un aspecto vital para evitar un desastre de privacidad mientras todavía está trabajando con código incompleto y no probado porque significa que no está exponiendo datos confidenciales genuinos de manera irreflexiva (y posiblemente ilegal).

El autor de Faker aparentemente trató de comercializar el proyecto durante 2021, pero sin éxito, por lo que parece que ahora le ha dado al código su golpe de gracia.

Aparentemente, este plan no llegó a ninguna parte, con pocos fondos provenientes de usuarios corporativos.

Dado que el código ha sido lanzado durante muchos años bajo la licencia MIT, lo que básicamente significa que cualquiera puede usarlo de forma gratuita, incluso en productos comerciales de código cerrado, siempre que no afirmen haberlo creado ellos mismos, hay nada que impida que los usuarios existentes continúen con la versión anterior, o incluso con cualquier versión anterior.

Incluso pueden hacer sus propias modificaciones y mejoras a su gusto…

… por lo que no está claro cuál será el resultado final de destrozar el proyecto de manera tan espectacular para el autor, dado que no puede reescribir retrospectivamente las licencias de los usuarios que ya lo descargaron e implementaron.

¿Alguien gana o todos perdemos?

Como uno comentarista agraviado dijo (alguien que presumiblemente tomó la actualización en producción sin revisar lo que había cambiado, y que sufrió una interrupción temporal como resultado), realmente no ha terminado bien para nadie:

¿No es interesante que son las personas sin reputación las que parecen pensar que la reputación no tiene valor? A todas las personas que están aquí diciendo “nos han enseñado una valiosa lección sobre cómo confiar en el software libre”; Entienda esto…

Para causarme 15 minutos de dolor, todo lo que Marak tuvo que hacer fue destruir irreversiblemente su propia reputación.

¿De qué lado estás en un caso como este? Háganos saber en los comentarios a continuación...


Fuente: https://nakedsecurity.sophos.com/2022/01/11/javascript-developer-destroys-own-projects-in-supply-chain-lesson/

punto_img

Información más reciente

punto_img