Инциденты с вредоносными пакетами в публичных репозиториях открытого кода продолжают оставаться серьезной угрозой для безопасности цепочки поставок программного обеспечения. Вслед за кампанией, нацеленной на разработчиков криптовалютных платформ в декабре 2025 года, исследователи из ReversingLabs обнаружили новую атаку, на этот раз сфокусированную на финансовом секторе. Злоумышленники опубликовали в NuGet - основном хранилище пакетов для экосистемы .NET - поддельный пакет "StripeApi[.]net", имитирующий официальную библиотеку "Stripe[.]net" от популярной платежной платформы Stripe. Данный кейс наглядно демонстрирует, как техника «типосквоттинга» (создание пакетов с опечатками в названии) и искусственное накручивание метрик могут обмануть даже опытных разработчиков, внедрив вредоносный код в критически важные бизнес-приложения.
Описание
Суть атаки и целевой объект
Stripe - это глобальная финансовая инфраструктура, которую используют компании для приема онлайн-платежей, биллинга и работы с подписками. Чтобы упростить интеграцию своих сервисов в приложения, Stripe предоставляет официальную клиентскую библиотеку "Stripe.net" для платформы .NET. Этот пакет, скачанный более 74 миллионов раз, абстрагирует сложность прямых HTTP-запросов, аутентификации и обработки ошибок, предоставляя разработчикам удобный программный интерфейс (API). Компрометация подобной библиотеки открывает злоумышленникам доступ к конфиденциальным платежным данным, ключам API и информации о клиентах, а также потенциально позволяет манипулировать транзакциями.
Поскольку прямая атака на хорошо защищенный официальный пакет затруднена, злоумышленники выбрали тактику типосквоттинга. Они создали пакет с названием "StripeApi.Net", рассчитывая, что разработчики по ошибке установят его вместо подлинного "Stripe.net". Страница пакета в NuGet была тщательно стилизована под оригинал: использовалась та же иконка, почти идентичное описание, а ссылки вели на официальные ресурсы Stripe. Владелец пакета указан как «StripePayments», что также усиливало видимость легитимности. Единственным визуальным отличием была стандартная аватарка профиля вместо логотипа Stripe. Для придания доверия злоумышленники искусственно завысили количество загрузок до более чем 180 000, распределив их по 506 версиям, чтобы создать видимость активного использования и развития проекта.
Механизм работы вредоносного кода
Внутри пакет "StripeApi.net" содержал ту же функциональность, что и легальная библиотека, однако в ключевые методы был внедрен вредоносный код. В частности, модификации подвергся метод инициализации класса "StripeClient", который разработчик обязан вызвать для начала работы с API Stripe. К легитимному коду была добавлена строка, перехватывающая секретный API-токен пользователя при его инициализации. Таким образом, атака гарантированно срабатывала в момент настройки библиотеки в приложении.
Украденный токен затем передавался в функцию "AddApiKeyAsync", которая эксфильтрировала его на внешний сервер вместе с идентификатором машины (производным от имени компьютера). Для сбора данных злоумышленники использовали легальный сервис Supabase - платформу для backend-разработки, предоставляющую в том числе бесплатный уровень услуги с управляемой базой данных PostgreSQL. Это позволило им быстро развернуть инфраструктуру для сбора данных без значительных затрат и привлечения внимания.
Потенциальные последствия и реальный ущерб
Теоретически, успешное внедрение подобного пакета в production-среду привело бы к массовой утечке платежных ключей Stripe, что открыло бы злоумышленникам доступ к управлению аккаунтами, проведению несанкционированных транзакций и хищению конфиденциальных данных клиентов. Однако, по данным исследователей, в данном конкретном случае реальных жертв, вероятно, удалось избежать. Анализ показал, что все заявленные 180 000 загрузок были сфальсифицированы. Более того, первая версия пакета была опубликована примерно 16 февраля, а после относительно оперативного обнаружения и репорта исследователями ReversingLabs администрация NuGet оперативно удалила пакет. Проверка базы данных Supabase с использованием ключа злоумышленников также не выявила украденных токенов - в ней содержалась лишь тестовая запись.
Тем не менее, сам инцидент служит тревожным сигналом, высвечивая системные риски, связанные с зависимостью от сторонних библиотек. Основная опасность таких атак, как демонстрирует "StripeApi.net", заключается в их скрытности. Приложение, использующее скомпрометированную библиотеку, продолжает корректно компилироваться и выполнять свои прямые функции, в том числе обрабатывать платежи. Разработчик может долгое время не подозревать, что на фоне происходит утечка критически важных данных. Злоумышленники, копируя легитимный код и сохраняя его полную функциональность, значительно усложняют обнаружение подмены.
Рекомендации для разработчиков и организаций
Растущая частота атак на цепочку поставок программного обеспечения требует изменения подходов к безопасности на этапе разработки. Нельзя слепо доверять пакетам из публичных репозиториев, даже если они имеют высокие показатели загрузок и регулярные обновления. Помимо типосквоттинга, существуют угрозы прямого взлома аккаунтов maintainers (сопровождающих) легитимных проектов, как это было в недавней истории с вредоносным пакетом в npm.
Для митигации подобных рисков необходимо внедрять комплекс мер. Во-первых, строгая проверка источников зависимостей: всегда использовать прямые ссылки на официальные пакеты и внедрять политики, запрещающие установку библиотек из непроверенных источников. Во-вторых, обязательное сканирование зависимостей на наличие известных уязвимостей и признаков вредоносной активности с помощью специализированных инструментов. В-третьих, применение принципа минимальных привилегий для API-ключей и токенов, используемых в разработке и production-среде, чтобы ограничить потенциальный ущерб в случае их компрометации. Наконец, повышение осведомленности разработчиков о подобных тактиках и создание внутренних процессов верификации стороннего кода перед его интеграцией в критически важные проекты. Только многоуровневый подход к безопасности цепочки поставок может эффективно противостоять подобным изощренным атакам.
Индикаторы компрометации
SHA1
- 050bf5d4cf8fb4964e0e67b4cb46dacf89e7a615
Package
- StripeApi.Net 50.4.1
