Ukraine-Russie : la tendance « protestware » gagne l’open source

open source Ukraine Russie protestware

Le conflit russo-ukrainien donne lieu à des détournements de composants open source. Illustration avec la bibliothèque node-ipc, objet d’un sabotage en plusieurs temps et sous plusieurs formes.

L’open source peut-il peser sur le conflit russo-ukrainien ? Certains l’exploitent en tout cas à ces fins. Notamment en détournant des composants critiques. On a pu constater de telles initiatives sur des bibliothèques liées à CircleCI, Drupal, OCI, Qt, Redis, etc.

Le module node-ipc, qui gère la communication entre processus, a aussi fait l’objet d’un sabotage. Par son créateur Brandon Nozaki Millier, alias RIAEvangelist. La démarche s’est faite en plusieurs temps et sous plusieurs formes.

Le 7 mars, l’intéressé avait publié une nouvelle version de node-ipc (10.1.1). Dedans se cachait du code malveillant. Sa fonction, dans les grandes lignes : sur les machines dont l’IP est localisée en Russie ou en Biélorussie, effacer des fichiers et les remplacer par un emoji cœur.
Une dizaine d’heures plus tard, RIAEvangelist poussait encore une nouvelle version (10.1.2). Sans grand changement, mais potentiellement pour déclencher des mises à jour automatiques sur les systèmes utilisant node-ipc.

Une protestation par quatre chemins

Le 8 mars, changement de tactique. RIAEvangelist publie node-ipc 10.1.3… sans le code malveillant. Quelques heures plus tard, il met en ligne le module peacenotwar. Il le présente* comme un « exemple non destructif de l’importance de contrôler vos modules ». Et aussi comme une « réaction non violente à l’agression [russe] ».

À l’origine, peacenotwar faisait appel à un fichier texte qui contenait un appel à la paix. C’est toujours le cas, mais ledit fichier contient une ligne supplémentaire. Brandon Nozaki Miller y exprime l’innocuité du module. « Je jure [qu’il] n’affectera les données de personne. Si vous ne l’appréciez pas, verrouillez vos dépendances. »

Pendant un temps, peacenotwar a effectivement repris la fonctionnalité d’effacement initialement intégrée à node-ipc. Cela n’est pas passé inaperçu, vu la popularité de quelques-uns des projets qui utilisent la bibliothèque.

RIAEvangelist n’avait pas tout de suite documenté la dépendance de node-ipc à peacenotwar. Il l’avait finalement fait avec la version 11.0.0 de la bibliothèque, publiée le 7 mars.

On trouve toujours, à l’heure actuelle, cette dépendance dans la dernière version stable de node-ipc (9.2.2). Il est déconseillé de la maintenir, même si le module est plus inoffensif qu’à l’origine. On surveillera les autres paquets npm que gère RIAEvangelist. Parmi eux, js-queue, easy-stack, js-message et event-pubsub, qui totalisent tous autour d’un million de téléchargements par semaine.

* Il le présente aussi explicitement comme du protestware. L’inspiration lui a été donnée par l’auteur d’un ticket réclamant le retrait du module peacenotwar.

Photo d’illustration © agsandrew – Shutterstock