Skip to main content

El protestware es tendencia en el código abierto: 4 tipos y su impacto

blog feature social trends

22 de marzo de 2022

0 minutos de lectura

Hace unos días, Snyk informó sobre un nuevo tipo de vector de amenaza en la comunidad de código abierto: el protestware. El aviso trataba sobre una vulnerabilidad transitiva —peacenotwar— en node-ipc que afectó la cadena de suministro de muchos desarrolladores. Snyk usa diversas fuentes de inteligencia sobre amenazas y algoritmos para monitorear conversaciones sobre posibles amenazas al código abierto, y creemos que esto podría ser solo la punta del iceberg del protestware.

Desde la publicación del aviso sobre node-ipc, hemos visto un aumento masivo en nuestras alertas específicas sobre amenazas relacionadas con el conflicto y, posteriormente, un incremento en la cantidad de distintos tipos de posibles protestware vinculados con la invasión de Ucrania.

La tendencia actual del protestware adopta muchas formas. Algunas parecen ser formas aceptables de libertad de expresión, mientras que otras, como node-ipc, son más destructivas y dañinas. En Snyk, queremos ayudar a la comunidad a llegar a un consenso sobre cómo abordar las distintas formas de protestware que están surgiendo y a diferenciarlas.

¿Qué es el protestware?

Protestware es un término general que se usa para describir paquetes que se modifican de alguna manera para protestar contra un evento determinado. A diferencia de los paquetes maliciosos, estas modificaciones no las hacen “hackers” ni otros actores maliciosos, sino miembros conocidos y respetados de la comunidad de código abierto, que suelen ser mantenedores o colaboradores activos de proyectos grandes de código abierto.

Antes de continuar, Snyk está del lado de Ucrania. Nuestra postura se refleja en nuestra decisión de donar ayuda a Ucrania, dar visibilidad al increíble software de código abierto que surge de Ucrania y cortar los vínculos comerciales con entidades rusas y bielorrusas. Dicho esto, sigue siendo nuestro deber informar sobre cualquier amenaza que descubramos en la comunidad de código abierto y hacer nuestra parte para mantener el código abierto seguro.

En este blog presentaremos los cuatro tipos generales de actividad de protestware que hemos encontrado hasta ahora, así como nuestra política para cada tipo. Esperamos que esto sirva como punto de partida para seguir conversando sobre el tema en la comunidad.

Tipos de protestware

1. Banners en repositorios

En este tipo de paquetes, los mantenedores agregan mensajes políticos en “banners” dentro del propio repositorio. Esto puede consistir en modificar archivos README para expresar apoyo a Ucrania, cambiar la descripción del paquete para apoyar la causa o incluso publicar issues con un mensaje explícito. Desde el punto de vista de Snyk, este tipo de protesta es claramente una forma no destructiva de libertad de expresión, y cada mantenedor y colaborador tiene derecho a expresar su opinión sobre cualquier tema que considere pertinente.

En estos casos, tenemos muy claro que no es necesario que tomemos ninguna medida.

2. Mensajes de protesta en registros de CLI

La segunda forma de protesta va un paso más allá: muestra mensajes de protesta directamente en las máquinas de los usuarios, dentro de los registros de CLI durante la instalación del paquete y después de esta. es5-ext es un buen ejemplo de esto en un paquete de código abierto muy popular, y el vector que vemos en este caso es bastante representativo de este tipo de protestware:

  1. Una máquina local realiza una comprobación de la zona horaria para determinar la ubicación de la máquina.

  2. Según la ubicación, se agrega un registro de CLI mediante un script posterior a la instalación, con un mensaje de apoyo a Ucrania e información sobre la guerra, además de instrucciones para descargar Tor y eludir la censura del gobierno ruso sobre los sitios web con noticias acerca de la guerra.

Al examinar ambas partes de este vector, concluimos que, aunque se trata de un comportamiento inusual, tiene precedentes en el ecosistema de software. En cuanto a la comprobación de la zona horaria, las verificaciones locales de un sistema a veces forman parte del comportamiento normal de instalación; por ejemplo, para determinar la mejor forma de instalar un paquete. En lo que respecta a los mensajes que se registran en la CLI durante la instalación, es común que se registren mensajes detallados durante la instalación de un paquete, y no todos están directamente relacionados con ella (a veces se registran créditos, emojis y otra información “informal”).

Mientras los mensajes se mantengan dentro del entorno de instalación (la CLI), creemos que actualmente no es necesario señalar específicamente estos paquetes.

3. Mensajes de protesta fuera del entorno

Esta última distinción nos lleva directamente al tercer grupo de protestware: paquetes que protestan al ejecutar código fuera del entorno de instalación. Algunos ejemplos son los paquetes event-source-pollyfill y peacenotwar. Aunque ambos comparten el “vector de geolocalización mediante la zona horaria” que describimos antes, van más allá de escribir mensajes de protesta en los registros y ejecutan código activamente en la máquina para protestar.

Creemos que este tipo de protestware, aunque no sea destructivo, genera comportamientos que no esperaríamos ni desearíamos en un paquete de código abierto. Podría difundirse información mediante ventanas emergentes de alerta, la apertura y redirección de navegadores a sitios web con información o incluso la creación de archivos nuevos en el escritorio del sistema con información detallada.

En el caso de estos paquetes, agregaremos un aviso con el título “Comportamiento no deseado”. Nuestros vectores CVSS se diseñarán para mostrar exactamente cuál es ese comportamiento no deseado y cómo afecta la integridad de la máquina donde se ejecuta.

4. Protestas destructivas

Por último, llegamos al tipo de paquete que muestra claramente un comportamiento destructivo y amenaza directamente las máquinas donde se ejecuta. Node-ipc es actualmente el paquete más importante y conocido de este tipo y, como divulgamos anteriormente, intenta borrar los discos duros del sistema.

Los paquetes que realizan acciones realmente dañinas, como eliminar archivos, filtrar información privada o cualquier otra acción perjudicial, se clasificarán como “Paquete malicioso”, con una gravedad alta o crítica (según el impacto específico del paquete).

Tipo de protestware

Ejemplo

Recomendación actual de aviso de Snyk

Banner en repositorio

README con información de protesta

Sin aviso

Mensajes de protesta en registros de CLI

Registro de instalación con información de protesta

Sin aviso

Mensajes de protesta fuera del entorno

Archivo con información de protesta creado en el escritorio

Aviso de “Comportamiento no deseado” de gravedad baja a media

Protestas destructivas

Sobrescritura de archivos en el disco con información de protesta

Aviso de “Paquete malicioso” de gravedad alta a crítica

Mantente alerta ante el protestware

En resumen, la situación actual es inestable y esperamos seguir enfrentándonos a nuevos vectores de amenaza relacionados con el protestware. Consideramos que nuestro papel tiene dos objetivos:

  1. Seguir alertando a la comunidad sobre los nuevos patrones de amenazas que surjan, con la mayor rapidez y diligencia posibles.

  2. Ayudar a orientar la conversación sobre cómo debería responder nuestra comunidad al protestware en todas sus formas y, con suerte, avanzar hacia un consenso más general sobre este tema.

Si encuentras algún otro caso de protestware en paquetes de código abierto, no dudes en contactarnos a través de nuestro programa de divulgación de vulnerabilidades de código abierto. Gracias por ayudar a mantener el código abierto seguro para todos.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.