Skip to main content

Protestware, tendencia en código abierto: 4 tipos diferentes y su impacto

22 de marzo de 2022

0 minutos de lectura

Unos días antes de la publicación de este artículo, Snyk informó sobre un nuevo vector de amenazas dentro de la comunidad de código abierto: el protestware. Se advertía sobre una vulnerabilidad transitiva (peacenotwar) en node-ipc que afectaba la cadena de suministro de una gran cantidad de desarrolladores. En Snyk, empleamos diversos algoritmos y fuentes de inteligencia de amenazas para supervisar conversaciones sobre posibles amenazas al código abierto, y creemos que esta ola de protestware apenas está comenzando.

Desde la publicación de la advertencia sobre node-ipc, vimos un aumento exponencial en nuestras alertas específicas ante amenazas sobre el conflicto y, posteriormente, una crecida en la cantidad de diferentes tipos de posible protestware relacionados con la invasión a Ucrania.

La tendencia actual del protestware puede tomar diversas formas: algunas parecerían ser formas aceptables de pensamiento libre, 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 los diversos protestware que están surgiendo y a diferenciar los diferentes tipos.

¿Qué es el protestware?

Protestware es un término general que se utiliza para describir paquetes modificados de alguna manera que se utilizan con el objetivo de protestar contra algún suceso. A diferencia de los paquetes maliciosos, no son hackers o personas maliciosas quienes realizan estas modificaciones, sino integrantes respetados y reconocidos de la comunidad de código abierto que contribuyen o mantienen de forma activa proyectos de código abierto a gran escala.

Antes de continuar, queremos dejar en claro que Snyk apoya a Ucrania. Nuestra postura siempre fue clara: donamos ayuda a Ucrania, celebramos el increíble OSS ucraniano y cancelamos cualquier relación comercial con entidades rusas y bielorrusas. De todos modos, es nuestro deber informar cualquier amenaza que encontremos en la comunidad de código abierto y hacer nuestra parte en lograr que el código abierto se mantenga seguro.

En esta publicación de blog, explicaremos cuatro tipos generales de actividades de protestware que encontramos y cómo es nuestra política ante cada uno. Esperamos que esta descripción pueda usarse como punto de partida para continuar la conversación al respecto en la comunidad.

Tipos de protestware

1\. Banners en repositorios

En estos paquetes, se agregan mensajes políticos en los “banners” de los repositorios. Aparecen como archivos README modificados para expresar apoyo a Ucrania, modificaciones a la descripción del paquete para respaldar la causa o problemas abiertos que contienen un mensaje expreso. En Snyk, creemos que estas son expresiones de pensamiento libre no destructivo y que cada persona que contribuye o mantiene código tiene derecho a expresar su opinión sobre cualquier asunto.

En estos casos, sentimos que no es necesario que realicemos ninguna acción.

2\. Registros de protesta en CLI

Esta segunda forma de protesta va un nivel más allá y envía mensajes de protesta directamente a las máquinas de los usuarios en los registros de CLI durante y luego de la instalación del paquete. Un buen ejemplo de esto es es5-ext, que sucedió en un paquete de código abierto muy conocido, y el vector que se usó evidencia este tipo de protestware:

  1. La máquina local verifica la zona horaria para determinar la ubicación de la máquina.

  2. Según la ubicación, mediante una secuencia de comandos ejecutada luego de la instalación, se deja un registro en la CLI con un mensaje de apoyo a Ucrania, información sobre la guerra e instrucciones sobre cómo descargar Tor para evitar la censura del gobierno ruso en sitios web con noticias sobre la guerra.

Al analizar ambas partes del vector, concluimos que, aunque se trate de un comportamiento inusual, tiene precedentes en el mundo del software. En lo que respecta a la verificación de la zona horaria, las comprobaciones locales suelen ser parte del comportamiento normal de instalación, por ejemplo, para determinar la mejor forma de instalar un paquete. Según los mensajes de registro en la CLI durante la instalación, suele haber mensajes concretos registrados durante la instalación de un paquete, no todos relacionados directamente con la instalación del paquete (por ejemplo, créditos, emojis y otra información secundaria).

Entonces, siempre que el mensaje se conserve dentro del entorno de instalación (es decir, la CLI), creemos que no es necesario marcar específicamente estos paquetes.

3\. Registros de protesta fuera del entorno

Ese último tipo es una continuación perfecta a la tercera clase de protestware: los paquetes que exhiben protestas ejecutando código por fuera del entorno de instalación. Algunos ejemplos de esto son los paquetes event-source-pollyfill y peacenotwar. Aunque ambos cuentan con la geolocalización mediante un vector de zona horaria mencionada anteriormente, este tipo va un paso más allá de la escritura de protestas en los registros, y ejecuta código de forma activa en la máquina a modo de protesta.

Este tipo, aunque no es destructivo, impulsa un comportamiento que no esperamos ni deseamos en un paquete de código abierto. Quizá la información se divulga mediante ventanas de alerta emergentes, la apertura y el redireccionamiento de navegadores a sitios web con información o incluso la creación de nuevos archivos en el escritorio del sistema con volcados de información.

Para estos paquetes, agregamos la advertencia “Undesired Behavior” (Comportamiento no deseado). Desarrollaremos los vectores del CVSS (sistema de puntuación de vulnerabilidades comunes) para demostrar cuál es el comportamiento no deseado y cómo afecta a la integridad de la máquina donde se ejecuta.

4\. Protestas destructivas

Ya es hora de hablar del tipo de paquete que exhibe comportamiento destructivo evidente y directamente amenaza a las máquinas donde se ejecuta. En la actualidad, node-ipc es el paquete más importante y conocido de este tipo y, como informamos antes, su objetivo es borrar los discos duros del sistema.

Los paquetes que tienen comportamiento dañino, como eliminar archivos, divulgar información privada o realizar alguna acción similar, se marcarán como “Malicious Package” (Paquete malicioso) de gravedad alta o crítica, según el impacto del paquete.

Tipo de protestware

Ejemplo

Recomendación de Snyk

Banner en repositorios

Readme con información de protesta

Sin advertencia

Registros de protesta en CLI

Registro de instalación con información de protesta

Sin advertencia

Registros de protesta fuera del entorno

Archivo en el escritorio con información de protesta

Advertencia “Undesired Behavior” (Comportamiento no deseado) de gravedad baja o media

Protestas destructivas

Sobreescritura de archivos en disco con información de protesta

Advertencia “Malicious Package” (Paquete malicioso) de gravedad alta o crítica

Mantente alerta ante el protestware

En resumen, la situación actual es bastante volátil y sospechamos que, en el futuro, surgirán nuevos desafíos a partir de nuevos vectores de amenazas en lo que refiere al protestware. En este sentido, vemos que nuestro trabajo tiene dos caras:

  1. Continuar alertando a la comunidad tan rápido y con tanto esmero como sea posible sobre los nuevos patrones de amenazas que surgen.

  2. Ayudar a guiar la conversación sobre cómo nuestra comunidad debe responder ante todas las formas de protestware y, con optimismo, intentar llegar a un consenso más general al respecto.

Si te encuentras con algún caso de protestware en paquetes de código abierto, contáctanos a través del programa de información de vulnerabilidades en código abierto. Te agradecemos por mantener el código abierto seguro para todos.

Introducción a Capture the flag

Aprende a resolver los desafíos de Capture the flag viendo nuestro taller virtual 101 bajo demanda.

Snyk Top 10: Vulnerabilites you should know

Find out which types of vulnerabilities are most likely to appear in your projects based on Snyk scan results and security research.