Xakep #305. Многошаговые SQL-инъекции
Разработчик популярного npm-пакета node-ipc выпустил обновленные версии своей библиотеки и в этом обновлении выразил свой протест против продолжающейся «спецоперации» в Украине. Новые версии пакета удаляют все данные и перезаписывают файлы на машинах разработчиков из России и Беларуси, а также создают текстовые файлы с призывами к миру.
Вайпер в node-ipc
Стоит отметить, что node-ipc загружают более 1 млн раз в неделю, и это важный пакет, на который полагаются многие другие библиотеки, включая, к примеру, Vue.js CLI.
Издание Bleeping Computer сообщает, что деструктивный код содержат версии пакета 10.1.1 и 10.1.2, которые теперь отслеживаются под идентификатором CVE-2022-23812, как малварь.
Все началось с того, что 8 марта разработчик Брэндон Нодзаки Миллер, известный под ником RIAEvangelist, опубликовал опенсорсные пакеты peacenotwar и oneday-test (как на npm, так и на GitHub). Судя по всему, эти пакеты были созданы как выражение протеста, поскольку они добавляют «призыв к миру» на рабочий стол любого установившего их пользователя.
Однако теперь обнаружилось, что некоторые версии известной библиотеки node-ipc, тоже поддерживаемой RIAEvangelist, содержат гораздо более разрушительные пейлоады, направленные на уничтожение всех данных и перезапись файлов своих пользователей. Вредоносный код, внедренный разработчиком в пакеты еще 7 марта 2022 года, ориентируется на внешний IP-адрес системы и удаляет данные (путем перезаписи файлов) только для пользователей из России и Беларуси.
Упрощенная версия этого кода, уже опубликованная исследователями, показывает, что у пользователей из России и Беларуси код перепишет содержимое всех файлов, присутствующих в системе, заменив их на эмодзи-сердца, тем самым эффективно удалит данные.
Поскольку node-ipc версий 9.2.2, 11.0.0 и более поздних включает в себя Peacenotwar, затронутые пользователи также обнаруживают на рабочем столе послание «WITH-LOVE-FROM-AMERICA.txt», где автор призывает к миру.
Исследователи из компании Snyk тоже обнаружили и проанализировали эту вредоносную активность. В блоге эксперты пишут:
«Сейчас происходит явное злоупотребление. Критический инцидент безопасности цепочки поставок затронет любую систему, в которой будет вызываться этот пакет npm, если географическое системы положение соответствует России или Беларуси».
Аналитики Snyk полагают, что версии node-ipc 10.1.1 и 10.1.2, наносящие ущерб системам, были удалены npm в течение 24 часов после публикации, но успели нанести немало вреда. Однако версии node-ipc 11.0.0 и выше по-прежнему доступны и содержат упомянутый компонент Peacenotwar, оставляющий «мирные призывы» на рабочем столе.
Хуже того, связанная со случившимся паника уже затронула и пользователей популярного JavaScript-фреймворка Vue.js, который тоже использует в зависимостях node-ipc. После инцидента пользователи обратились к разработчикам Vue.js с просьбой использовать только безопасные версии node-ipc, которые не пытаются уничтожить все их данные.
При этом BleepingComputer отмечает, что Vue.js — не единственный опенсорсный проект, у которого возникли проблемы из-за этого саботажа. К примеру, разработчики Лукас Мертенс и Федор уже предупреждают других разработчиков, чтобы те не использовали вредоносную версию node-ipc.
В настоящее время безопасной версией node-ipc считается 9.2.1. Однако разработчикам в целом стоит проявлять осторожность при использовании node-ipc и других библиотек RIAEvangelist, поскольку нет никаких гарантий того, что будущие версии любой его библиотеки будут безопасны.
Реакция сообщества
Нужно сказать, что это уже второй протест от опенсорсного разработчика, с которым сообщество сталкивалось за последнее время. Напомню, что первым был Марак Сквайрс, автор библиотек faker и colors, которые насчитывают более 20 млн загрузок еженедельно только через npm.
В декабре прошлого года многие разработчики обнаружили, что обе библиотеки работают некорректно, тем самым влияя на работоспособность их собственных продуктов. Обе библиотеки извлекали тарабарщину вместо кода, предварявшуюся словами «LIBERTY LIBERTY LIBERTY» (англ. «Свобода, Свобода, Свобода»). В частности, проблемы возникли у всех, кто использует Amazon Cloud Development Kit.
Оказалось, что автор пакетов умышленно испортил свой код, а в файле readme, сопровождавшем вредоносное обновление, появилось сообщение: «Что на самом деле произошло с Аароном Шварцем?». Это же сообщение он продублировал в Twitter, приложив ссылку на Reddit, где осуждалось, что Шварц был убит после того, как обнаружил детское порно на серверах Массачусетского технологического института.
Таким образом Сквайрс решил ради мести корпорациям и коммерческим потребителям опенсорсных решений. Дело в том, что те часто полагаются на бесплатное ПО, поддерживаемое сообществом, однако, по словам Сквайрса, ничего не дают сообществу взамен. Еще в ноябре 2020 года разработчик писал, что более не собирается поддерживать корпорации и делать для них «бесплатную работу». Коммерческим организациям он советовал рассмотреть возможность создания форков или выплачивать ему шестизначную зарплату.
Тогда многие осуждали Сквайра, а теперь еще большей критике за свой саботаж подвергается RIAEvangelist, который в общей сложности поддерживает более 40 npm-пакетов. Почти все согласны с тем, что случившееся выходит за рамки «мирного протеста» и развертывание деструктивных полезных нагрузок в популярной библиотеке – крайне неэтичный поступок. Многие и вовсе убеждены, что это подрывает все принципы и устои опенсорсного сообщества.
«Ты только что успешно разрушил все сообщество опенсорс-разработчиков. Теперь ты счастлив, @RIAEvangelist?», — спрашивает активиста один из пользователей.
«Даже если умышленные и опасные действия RIAEvangelist будут восприняты некоторыми как легитимный акт протеста, как все это отразится на будущей репутации сопровождающего и его вкладе в сообщество разработчиков?», — спрашивают другие.
К тому же пользователи обнаружили, что теперь RIAEvangelist пытается замести следы содеянного и активно редактирует и удаляет предыдущие комментарии (1, 2, 3).