25 Июля, 2023

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

Основные моменты:

CloudGuard Spectral обнаружил вредоносный пакет в NPM, который применил фишинговую атаку для получения учетных данных своего пользователя.
Для этого пакет использовал файл из вредоносного пакета, уже обнаруженного и удаленного из NPM, который все еще был доступен через популярный сервис NPM CDN — «jsdelivr».
После обнаружения мы предупредили NPM и jsdelivr о вредоносном пакете и вредоносном потоке.
NPM и jsdelivr

NPM, сокращение от Node Package Manager, — это широко используемый менеджер пакетов для языка программирования JavaScript, менеджер пакетов по умолчанию для Node.js. Это упрощает установку, управление и совместное использование пакетов кода. Реестр NPM представляет собой централизованный репозиторий более миллиона пакетов JavaScript с открытым исходным кодом. Разработчики могут публиковать свои пакеты в реестре NPM, делая их доступными для других. Эта функция способствует совместному использованию кода и совместной работе в сообществе JavaScript. NPM имеет различные функции безопасности для защиты разработчиков от установки вредоносных или уязвимых пакетов. Он включает в себя автоматическое сканирование уязвимостей, рекомендации и возможность аудита установленных пакетов на наличие известных уязвимостей.

jsdelivr — это бесплатная сеть доставки контента (CDN) с открытым исходным кодом. Он обеспечивает быстрый и надежный способ размещения и распространения файлов, упрощая разработчикам включение внешних библиотек и ресурсов в свои веб-проекты. jsdelivr работает как глобальная CDN с многочисленными пограничными серверами, распределенными по всему миру. Когда у разработчиков есть файл, размещенный на jsdelivr на их веб-странице, файл извлекается с сервера, ближайшего к местоположению пользователя, что снижает задержку и повышает производительность. jsdelivr поддерживает управление версиями размещенных файлов, позволяя разработчикам ссылаться на определенные версии библиотек. Это гарантирует, что проекты продолжают надежно работать, даже если библиотека со временем подвергается обновлениям или изменениям. Он также предоставляет резервный механизм на случай, если конкретная версия больше недоступна.

Одним из ключевых преимуществ jsdelivr являются прямые ссылки на файлы: вместо использования NPM для установки пакета и ссылки на него локально вы можете напрямую ссылаться на файл, размещенный на CDN jsdelivr. Но, как мы сегодня увидим, даже законные сервисы, такие как CDN jsdelivr, могут быть использованы в злонамеренных целях. Познакомьтесь с реактивом.

Реактив

Отправной точкой для этого исследования стал пакет reactenz, который наши модели искусственного интеллекта определили как вредоносный. Пустая страница описания и нулевые зависимые пакеты указывали на то, что этот пакет должен быть найден и установлен на основе его имени (для вредоносных, вероятно, с использованием методов самозахвата имен).



Простой поиск на GitHub показал, что пакет пытался имитировать популярный пакет react-enzyme, который обычно упоминается в фрагментах кода GitHub как «ReactEnzyme».

Пакет включал запутанный index.js, который после деобфускации оказался вспомогательным пакетом на стороне клиента с простым, но подозрительным назначением; после загрузки он загружает файл .txt из службы NPM CDN (jsdelivr), декодирует его как HTML и добавляет в существующее используемое окно.

Упомянутый файл .txt был закодирован, и после «HTML-декодирования» и «украшения» он оказался классическим фишинговым HTML-кодом; обманом заставляя пользователей сбросить свои пароли Microsoft, а затем украсть их обновленные учетные данные, как только они это сделают.

Пока эта история кажется обычной; злоумышленники крадут учетные данные пользователей с помощью встроенных фишинговых атак. Самое интересное начинается, когда мы приближаемся к тому, откуда был взят вредоносный файл .txt; пакет «standforusz», файлы которого обслуживались через сервис CDN jsdelivr.com.

Быстрый поиск показал, что этот пакет месяц назад был помечен как вредоносный на NPM, но доступ к его файлам все же есть через сервис CDN. Они позволяли злоумышленникам повторно использовать свой вредоносный код для новых кампаний даже после удаления своего вредоносного пакета из NPM.



Этот вывод был тревожным, так как два основных вопроса —

  • Хотя NPM прилагает много усилий, чтобы убедиться, что вредоносные пакеты недоступны после обнаружения (публикация новой версии «0.0.1-security», которая переопределяет пространство имен в NPM и его зеркалах, делая предыдущие версии недоступными), мы можем видеть, что вредоносный код по-прежнему был доступен через службу CDN даже спустя много времени после его обнаружения.
  • Учитывая, что многие из существующих инструментов безопасности отслеживают действия, такие как загрузка ресурсов из Интернета, в качестве потенциального индикатора вредоносности, злоумышленники могут распространять свой вредоносный контент через службу CDN, что, скорее всего, позволит им легко проникнуть под капот (учитывая, что многие законные пакеты используют jsdelivr для получения содержимого законных пакетов NPM). Это делает эти типы вредоносных пакетов невидимыми для инструментов безопасности.
  • Что еще хуже, наш анализ выявил еще один пример, когда вредоносные ресурсы были доступны через jsdelivr спустя долгое время после их удаления из NPM — пакет, помеченный как js; был идентифицирован как вредоносный более года назад, но мы все еще могли получить доступ к его вредоносным частям с помощью службы CDN jsdelivr.
Раскрытие информации

Мы сообщили NPM о потенциальной уязвимости и вредоносном пакете, и вскоре пакет был удален. Мы также сообщили jsdelivr о наличии вредоносных файлов на их сервисе.

Возрастающий риск

Важно подчеркнуть, что взлом CDN вызвал больше беспокойства, чем вредоносный пакет, что позволило злоумышленникам повторно использовать свой вредоносный код, поделиться передовым опытом и обойти распространенные инструменты мониторинга безопасности, используемые сторонними компонентами. Это снова подчеркивает риск компонентов с открытым исходным кодом; никто не гарантирует, что открытые источники, которые мы используем, безопасны, и мы обязаны их проверять. Пользователи должны знать, что даже если кажется, что платформа усердно работает над предотвращением таких атак (как в случае с thinNPM), результаты продолжают указывать на то, что риск постоянно существует. В данном случае это было связано с сервисом-помощником (CDN), но в целом абузоустойчивых сервисов с открытым исходным кодом не существует. Атаки на цепочку поставок становятся все более частыми, поэтому важно убедиться, что вы в безопасности, перепроверить каждый программный компонент, который вы используете, особенно те, которые не были созданы вами. Как сообществу, нам нужно упростить выполнение правильных действий с точки зрения безопасности, чтобы создать безопасный процесс разработки. В рамках этих усилий мы постоянно сканируем PyPI и NPM на наличие вредоносных пакетов, чтобы предотвратить такие риски атак на цепочку поставок, чтобы вы были первыми, кто узнает о новых злоумышленниках.

Получить подробную информацию или проконсультироваться можно на сайте официального поставщика Check Point в России.