Что случилось? В NPM-пакете — node-ipc — появился вредоносный код, который запускается только на IP-адресах России и Беларуси. Изменения в коде разместил сам автор проекта. Уязвимость (CVE-2022-23812) оценивается специалистами из Nist на 9.8 из 10 баллов по шкале CVSS.
И что? Пакет node-ipc скачивают около миллиона раз в неделю, а ещё он используется в 354 сторонних пакетах — например, в vue-cli. Поэтому все проекты, которые имеют в зависимостях node-ipc, — под угрозой.
Как это работает? Автор проекта добавил в Git-репозитории node-ipc код, который определяет страну через сервис api.ipgeolocation.io и с вероятностью 25% заменяет на символ «❤️» содержимое всех файлов с доступом на чтение.
Этот код обнаружили в версиях пакета 10.1.1 и 10.1.2, а позже в версиях 11.0.0 и 11.1.0 нашли внешнюю зависимость peacenotwar от того же автора: код выдаёт сообщение с предложением присоединиться к протесту.
Сегодня ключ для api.ipgeolocation.io отозвали, и теперь node-ipc не может получить доступ к геолокации пользователей.
Что делать? Пользователям node-ipc рекомендуется откатить пакет до версии 9.2.1, а также с осторожностью использовать другие пакеты, которые выпустил автор node-ipc. Здесь — список созданных им пакетов.