Исследователи из JFrog обнаружили новую атаку на цепочку поставок. В каталоге NuGet были найдены 13 вредоносных пакетов, за которыми на момент удаления суммарно числилось около 170 тыс. загрузок.
Вредоносные модули для .NET-проектов были опубликованы в период с 3 января по 12 марта. Чтобы ввести в заблуждение разработчиков софта, злоумышленники использовали тайпсквоттинг.
Наибольшее количество загрузок собрали фейки Coinbase.Core (> 120 тыс.), Anarchy.Wrapper.Net (> 30 тыс.) и DiscordRichPresence.API (> 14 тыс.). Эксперты не исключают, что счет был искусственно вздут с помощью ботов, чтобы усилить иллюзию легитимности.
Вредоносная начинка во всех случаях одинакова: это PowerShell-сценарий, автоматически исполняемый при установке пакета. Скрипт изменяет системные настройки, чтобы снять ограничения на запуск PowerShell, и загружает с удаленного сервера целевой пейлоад — исполняемый файл Windows.
Анализ показал, что это кастомный зловред, умеющий воровать криптовалюту (выводит содержимое кошельков с помощью вебхуков Discord), извлекать и запускать коды из архивов Electron, а также получать с C2 обновления. Уровень детектирования вредоноса очень низкий, штатная защита Windows — Microsoft Defender — его тоже не обнаруживает.
Проведение атаки облегчило наличие в устаревших версиях Visual Studio опции, позволяющей внести вредоносный PowerShell в папку tools пакета NuGet: это обеспечило скрипту автозапуск при определенных событиях — в данном случае при установке модуля. Более новые версии Visual Studio игнорируют install.ps1 и uninstall.ps1, но допускают беспрепятственный запуск init.ps1, и даже не выводят предупреждение.
Подобные механизмы автозапуска, по словам экспертов, являются основной причиной большого количества злоупотреблений в экосистемах NPM и PyPI. На NuGet.org такого разгула до сих пор не наблюдалось.