Protestware en aumento: por qué los desarrolladores están saboteando su propio código

Protestware en aumento: por qué los desarrolladores están saboteando su propio código

Ax Sharma es investigador de seguridad y reportero. Sus áreas de interés incluyen seguridad de software de código abierto, análisis de malware, violaciones de datos e investigaciones de estafas.

Si combatir los ataques y secuestros de software legítimo en registros de código abierto como npm no fuera lo suficientemente desafiante, los creadores de aplicaciones experimentan cada vez más las consecuencias del autosabotaje del software. Un desarrollador puede, por capricho, cambiar de opinión y hacer lo que quiera con su código fuente abierto que, la mayoría de las veces de todos modos, viene “tal cual” sin ninguna garantía. O, como se ve en una tendencia creciente este año, los desarrolladores sabotean deliberadamente sus propias bibliotecas de software como medio de protesta, convirtiendo el software en “protestware”.

En julio, el desarrollador de la biblioteca Python atomicwrites ampliamente utilizada, Markus Unterwaditzer, borró su código del popular registro de código PyPI después de que el sitio dijera que exigiría la autenticación de dos factores para los mantenedores de “proyectos críticos”, proyectos que se encontraban en el 1% superior de todas las descargas en el registro. El proyecto atomicwrites de Unterwaditzer cumplió con los criterios y se requirió que su cuenta se inscribiera en la autenticación de dos factores, algo que describió en una publicación como “un movimiento molesto y autorizado para garantizar el cumplimiento de SOC2 para un puñado de empresas (a expensas de mi tiempo libre)” que confían en su código.

Algunos compararon esto con el Incidente del teclado izquierdo de 2016 que rompió brevemente una gran parte de Internet después de que el desarrollador del proyecto eliminara su código ampliamente utilizado en protesta. El desarrollador Azer Koçulu se encontró con una disputa de marca registrada con la aplicación de mensajería Kik porque su paquete npm se llamaba “kik”. Después de que npm se puso del lado de Kik en la disputa, Koçulu retiró todo su código273 módulos en total, incluida la biblioteca de teclado izquierdo enormemente popular, del registro npm. Estaba completamente en su poder hacerlo, pero instantáneamente creó problemas. En ese momento, el paquete de almohadilla izquierda masivamente popular había acaparado más de 15 millones de descargasy aún hoy la biblioteca sigue siendo descargado millones de veces por semana. Como tal, en marzo de 2016, los desarrolladores de todo el mundo quedaron confundidos, y consternados, cuando sus proyectos fallaron porque ya no se podía encontrar el componente del panel izquierdo en el que se basaban sus aplicaciones.

Lo que pudo haber parecido una protesta aislada hace años fue revivida en 2022 por desarrolladores que sabotearon sus propias bibliotecas, a veces para hablar en contra de las grandes corporaciones, pero más recientemente para protestar por la invasión de Ucrania por parte de Rusia.

El reciente auge del protestware

Una semana después de 2022, miles de aplicaciones que dependen de los colores y falsificadores de npm Projects, muy utilizados, fallaron y comenzaron a imprimir texto incomprensible en las pantallas de los usuarios. No fue un actor malicioso secuestrando y alterando estas bibliotecas legítimas. Resultó que el desarrollador de proyectos, Mark Squires, había corrompió intencionalmente su propio trabajo para enviar un mensaje de protesta a las grandes corporaciones.

La protesta de Squires fue provocada por la falla de seguridad de Log4Shell que obligó a los mantenedores del proyecto Log4j, en su mayoría voluntarios de código abierto, a reparar la vulnerabilidad crítica durante las vacaciones de diciembre. Squires tenía antes frustración expresada en compañías Fortune 500 utilizando su código fuente abierto de forma gratuita sin ofrecer apoyo financiero o patrocinar su mantenimiento. La vulnerabilidad de Log4Shell solo reforzó ese sentimiento: que las empresas dependen de forma ubicua de Log4j en sus aplicaciones. no he hecho lo suficiente para apoyar a los voluntarios no remunerados que sostienen estos proyectos críticos en su tiempo libre.

Si bien la protesta de Squires solo congeló brevemente los proyectos que se basan en la biblioteca de colores, meses después siguió una tendencia completa de software de protesta con desarrolladores que sabotearon sus propios proyectos, a los que habían dedicado cientos de horas, para oponerse a la guerra de Rusia en Ucrania.

En marzo de 2022, semanas después de que las tropas rusas entraran en territorio ucraniano, comenzó el popular proyecto npm node-ipc, descargado más de un millón de veces por semana. limpiando las maquinas de presuntos desarrolladores rusos y bielorrusos. El desarrollador del proyecto, Brandon Nozaki Miller, supuestamente saboteó el código para corromper las computadoras en las que estaba instalado. No hace falta decir que las versiones saboteadas de node-ipc (ahora efectivamente malware) se eliminaron del registro de npm.

Desde entonces, el tema del protestware se ha convertido en desarrolladores que se entregan a protestas más pacíficas. Las versiones más nuevas de proyectos de código abierto como event-source-polyfill, es5-ext y styled-components simplemente muestran un mensaje que insta a los usuarios con sede en Rusia a tomar medidas contra la guerra. Como tal, estas versiones permanecen en npm ya que no violan las políticas del registro.

Publicar protestware tampoco puede ser una decisión fácil para el desarrollador. Pone un escrutinio adicional en todas y cada una de las versiones del proyecto saboteado y puede dañar la confianza de la comunidad en el desarrollador. ¿Se puede volver a confiar en cualquier software que hayan creado, pasado o futuro?

evan jacobsuno de los principales mantenedores detrás de los componentes con estilo, le dijo a TechCrunch que su proyecto tiene un historial de activismo, “sobre todo nuestro apoyo a la [Black Lives Matter] movimiento y recomendación a nuestros usuarios para que consideren donaciones a la Iniciativa de Igualdad de Justicia”. Agregó: “Había escuchado que el gobierno ruso estaba comenzando a censurar los sitios web de noticias occidentales y me di cuenta de que teníamos una oportunidad única de enviar un mensaje informativo conciso a través de un canal atípico: nuestras instalaciones de paquetes npm”.

Una captura de pantalla del proyecto nestjs-pino en npm, que muestra de manera destacada una foto de niños esperando en un refugio antiaéreo en Mariupol, Ucrania. Créditos de imagen: TechCrunch / captura de pantalla

Jacobs sintió que era crucial que los rusos recibieran noticias precisas sobre la guerra que estén libres de interferencia estatal. Modificó los componentes con estilo, que tenían más de 15 millones de descargas mensuales a partir de abril, para mostrar un mensaje bilingüe a los usuarios con base en Rusia que resuma las “muchas atrocidades cometidas por el ejército ruso en Ucrania”.

“¿Tuvo un impacto? Probablemente nunca lo sabremos”, dijo Jacobs. “Dicho esto, creo que valió la pena la oportunidad de difundir información y, con suerte, llamar la atención de la gente de software en Rusia que de otra manera no habría visto lo que estaba sucediendo”.

Otro desarrollador, Mariusz Nowak, creador del proyecto es5-ext, modificó versiones posteriores de la biblioteca para dirigir a los usuarios de Rusia y Bielorrusia a fuentes de noticias precisas como el servicio Tor de la BBC. Nowak le dijo a TechCrunch sobre la decisión de modificar el código, diciendo que era porque los rusos “no están exactamente seguros de lo que está pasando y están bajo la influencia de sus medios de propaganda”, refiriéndose al estricto control estatal sobre los medios rusos. “Este mensaje solo se muestra si instala software en Rusia, no es realmente visible para otras partes del mundo”, dijo Nowak.

Nowak dijo que usar su biblioteca de código abierto para el activismo no afectó su credibilidad entre la comunidad en general, pero recibió un puñado de respuestas enojadas al principio.

Jacobs y Nowak no están solos en la reorganización de su código fuente abierto para protestar contra la guerra. La startup de seguridad de la cadena de suministro de software, Socket, le dijo a TechCrunch que nestjs-pino, un popular proyecto npm con más de 100,000 descargas semanales, actualizó su archivo principal “léame” para llamar la atención sobre la crisis actual en Ucrania. Un script de instalación incluido con el paquete también imprime un mensaje de consola tan pronto como se instale.

“No puedes confiar en lo que no puedes verificar”

Los desarrolladores de código abierto están descubriendo vías nuevas y creativas que ya no los limitan a implementar nuevas funciones para sus proyectos, sino a expresar activamente sus puntos de vista sobre asuntos sociales más amplios modificando sus proyectos por una causa. Y, a diferencia del código propietario que tiene que funcionar de acuerdo con las expectativas del cliente que paga, la mayoría de las licencias de código abierto son bastante permisivas, tanto para el consumidor como para el desarrollador, y ofrecen su código con licencias que no ofrecen garantías sobre lo que se supone que no debe hacer un desarrollador. y nunca lo harán con su código, lo que hace que el protestware sea un área gris para los defensores.

De hecho, como investigador de seguridad en Sonatype, observé cómo el protestware representaba un desafío para nosotros en las primeras etapas y cómo modificaríamos nuestros algoritmos automatizados de detección de malware para ahora atrapar auto-sabotaje con proyectos como colors y faker. Tradicionalmente, el sistema fue diseñado para detectar malware de typosquatting cargado en repositorios de código abierto, pero casos como secuestros maliciosos o desarrolladores que modifican sus propias bibliotecas sin previo aviso requerían una comprensión más profunda de las complejidades de cómo funciona el protestware.

El tema también ha puesto a los principales registros de código abierto como npm, propiedad de GitHub, una subsidiaria de Microsoft, en una encrucijada al tener que lidiar con estos casos extremos.

El fundador de Socket, Feross Aboukhadijeh, le dijo a TechCrunch que los registros como GitHub se encuentran en una posición difícil. “Por un lado, quieren apoyar el derecho de los mantenedores a la libertad de expresión y la capacidad de usar su plataforma para apoyar las causas en las que creen. Pero, por otro lado, GitHub tiene la responsabilidad con los usuarios de npm de garantizar que el código malicioso no se sirve desde servidores npm. A veces es un acto de equilibrio difícil”, dijo Aboukhadijeh.

Una solución simple para asegurarse de obtener solo versiones verificadas de un componente en su compilación es fije sus versiones de dependencia de npm. De esa manera, incluso si las versiones futuras de un proyecto son saboteadas o secuestradas, su compilación continúa usando la versión “anclada” en lugar de obtener la última versión contaminada. Pero esto puede no ser siempre una estrategia efectiva para todos los ecosistemas, como PyPI, donde las versiones existentes de un componente se pueden volver a publicar, como vimos en el caso del secuestro de la proyecto ctx pypi.

“La conversación sobre ‘protestware’ es realmente una conversación sobre la seguridad de la cadena de suministro de software. No puedes confiar en lo que no puedes verificar”, dijo a TechCrunch Dan Lorenc, cofundador y director ejecutivo de Chainguard, una startup que se especializa en seguridad de la cadena de suministro de software.

El consejo de Lorenc contra la prevención del software de protesta es seguir una buena higiene de seguridad de código abierto y las mejores prácticas que pueden ayudar a los desarrolladores a desarrollar software de protesta más fácilmente y desde el principio. “Conocer y comprender sus dependencias, realizar escaneos regulares y auditorías del código fuente abierto que está utilizando en sus entornos es un comienzo”.

Pero Lorenc advierte que el debate sobre el protestware podría atraer imitadores que contribuirían al problema y disuadirían a los defensores del software de código abierto de centrarse en abordar lo que es realmente importante: mantener a raya a los actores malintencionados. Y con el protestware quedan incógnitas desconocidas. ¿Qué problema es demasiado pequeño, o demasiado grande, para el protestware?

Si bien nadie puede dictar prácticamente lo que un desarrollador de código abierto puede hacer con su código, es un poder que los desarrolladores siempre han poseído, pero que ahora apenas comienzan a aprovechar.




Source link