Обнаружен типосквоттинг-пакет Braintree.Net на NuGet, перехватывавший данные платежных карт и ключи API

information security

Система анализа пакетов Socket AI scanner зафиксировала подозрительную сборку NuGet, маскирующуюся под официального клиента платёжного шлюза Braintree от PayPal. Первая вредоносная версия была опубликована 3 июля 2026 года, а детектирование произошло уже через десять минут после появления в реестре. Эксперты исследовательской группы Socket Threat Research установили, что пакет Braintree.Net представляет собой многоступенчатый имплант для платформы .NET, который перехватывает данные банковских карт в реальном времени, похищает API-ключи мерчантов Braintree и собирает секреты окружения хоста в момент загрузки сборки. Вредоносная библиотека копирует внешний API легитимного SDK Braintree, но перенаправляет украденную информацию на инфраструктуру атакующих, размещённую по адресу api.348672-shakepay.com.

Описание

Официальная .NET-библиотека Braintree публикуется в NuGet под именем Braintree (текущая версия из линейки 5.x, поддерживается PayPal/Braintree). Злоумышленники применили типичный приём вариации названия - Braintree.Net, - а также использовали несоответствующую нумерацию версий (3.36.1 против официальной 5.x) и подложили метаданные, ссылающиеся на настоящий репозиторий braintree/braintree_dotnet на GitHub. Целевая аудитория - разработчики, которые ищут "Braintree .NET" или копируют слегка неверное имя пакета. Исследователи уже уведомили службу безопасности NuGet и запросили удаление вредоносных версий и блокировку аккаунта издателя.

По данным анализа Socket, вредоносные версии Braintree.Net затронули пять сборок в диапазоне 3.35.8-3.36.1, а также сопутствующий пакет DependencyInjector.Core (версии 1.0.0, 1.3.0, 1.4.0, 1.4.1). Цепочка транзитивных зависимостей затронула также пакеты SipNet и SipNet.OpenAI.Realtime, которые типосквотят экосистему SIPSorcery. При этом число реальных установок вредоносных версий составило лишь около 334, хотя панель NuGet отображала более 14 миллионов загрузок - 11 миллионов из них были искусственно накручены через 120 подставных версий 0.0.x, опубликованных за один день. Такая техника позволяет занять пространство имён и скрыть реальную базу жертв среди раздутого показателя популярности.

Механизм работы импланта построен на трёх независимых каналах эксфильтрации, активируемых на разных этапах жизненного цикла приложения. Первый канал срабатывает при загрузке сборки: модульные инициализаторы (Module Initializer) в Braintree.Net и DependencyInjector.Core запускают сбор информации об окружении, включая переменные среды, содержимое файлов конфигурации appsettings.json, метаданные облачных провайдеров, токены Kubernetes, данные о Docker-контейнерах и другие секреты. Вся коллекция упаковывается в JSON и отправляется на сервер атакующих через POST-запрос к эндпоинту /api/analytics/report. При этом адрес получателя обфусцирован с помощью повторяющегося XOR-ключа, что затрудняет статический анализ.

Второй путь эксфильтрации активируется при инициализации шлюза Braintree: сеттер свойства PrivateKey в классе BraintreeGateway проверяет, установлена ли среда Production, и если да, то отправляет на сервер злоумышленников тройку учётных данных (merchantId, publicKey, privateKey) через эндпоинт /api/account. Таким образом, атакующие получают полный доступ к API мерчанта и могут создавать транзакции, проводить возвраты и просматривать данные клиентов.

Третий и самый опасный канал - перехват данных платежных карт. Класс CardOperationLogger, отсутствующий в оригинальном SDK, внедряется во все ключевые методы работы с платежами: CreditCardGateway.Create(), TransactionGateway, методы обновления карт и проверки CVV. При каждом вызове создаётся объект CardOperationLog, в который включаются полный номер карты (PAN), CVV-код, срок действия, идентификатор клиента и сумма. Эта информация POST-запросом отправляется на эндпоинт /api/card. Все эксфильтрационные вызовы обёрнуты в пустые блоки catch - любые ошибки сети или TLS молча проглатываются, так что приложение продолжает работать без видимых сбоев, и ни разработчик, ни конечный пользователь не замечают аномалий.

Имплант использует селективную активацию: утечка карт и ключей происходит только если BraintreeGateway сконфигурирован для окружения Production. В среде Sandbox или Dev никакие данные не отправляются, что снижает вероятность обнаружения на этапе тестирования. Однако сборщик окружения из DependencyInjector.Core работает безусловно при любой конфигурации на .NET 8 и выше, так что даже тестовое развёртывание может привести к утечке секретов хоста.

Домен 348672-shakepay.com, на который отправляются все данные, использует бренд Shakepay, но не является инфраструктурой канадской криптоплатформы - он обслуживается через Cloudflare и, вероятно, скрывает реального оператора. Характер атаки (нацеленность на платёжный SDK, предварительная аренда пространства имён, многоступенчатая архитектура, использование компаньон-пакетов) указывает на хорошо спланированную финансово мотивированную операцию по компрометации цепочки поставок.

Последствия для пострадавших компаний крайне серьёзны. Утечка PAN и CVV-кодов влечёт за собой необходимость инцидент-реагирования по стандартам PCI DSS, а также уведомление платёжных систем и клиентов. Компрометация учётных данных мерчанта позволяет злоумышленникам не только перехватывать будущие платежи, но и осуществлять несанкционированные транзакции от имени бизнеса, что грозит прямыми финансовыми потерями и репутационным ущербом.

Разработчикам, использующим NuGet, следует немедленно удалить пакет Braintree.Net из всех проектов, заменив его на официальный Braintree. Необходимо также проверить зависимости на наличие пакетов DependencyInjector.Core, SipNet и SipNet.OpenAI.Realtime в любых версиях, включая транзитивные. Все ключи мерчанта, которые могли быть переданы в среду с установленным вредоносным пакетом, требуется отозвать и выпустить заново. Если в период эксплуатации Braintree.Net обрабатывались данные карт, необходимо запустить процедуру расследования и уведомить соответствующие регулирующие органы. На сетевом уровне следует заблокировать исходящий трафик на домен 348672-shakepay[.]com и его поддомены, а в журналах прокси и межсетевых экранов проверить наличие POST-запросов с заголовком X-Api-Key: 2523-5235-8564-2683-2386.

Этот инцидент демонстрирует, что даже устоявшиеся менеджеры пакетов, такие как NuGet, не застрахованы от целенаправленных атак типосквоттинга. Атака сочетает в себе социальную инженерию (имитацию официального источника с помощью скопированной документации и ложных метаданных), технические приёмы сокрытия (пустые заглушки, обфускация, пустые обработчики ошибок) и чёткое понимание бизнес-ценности данных, которые обрабатывает платёжный SDK. Защита от подобных угроз требует включения автоматических средств анализа подозрительных пакетов в CI/CD-конвейерах, регулярного аудита зависимостей и минимизации количества неофициальных библиотек в производственных окружениях.

Индикаторы компрометации

Domain

  • 348672-shakepay.com
  • api.348672-shakepay.com

URL

  • https://api.348672-shakepay.com/api/account
  • https://api.348672-shakepay.com/api/analytics/report
  • https://api.348672-shakepay.com/api/card

SHA256

  • 064653872c1b4c3d5b5242627cda259056fed7159fcd2cc5a448981c9f81aeda
  • 220908e8c23c2332266ba1e984f839b9914c2e40a946b172f6d9b8b36728f98a
  • 2547382cd5151e2210c6349f17230ae3d1a59935e3b8d1757d72d9abd30ac858
  • 5138ea25563be4ae8143b7a46c6bc42af00344678e6d4451ac596b5b5587c70e
  • 52aeb64f4199235704d0e4a6908c501c3b4bdd4a004a766a5ca55b9655b24775
  • 531302fe3b8a8624aa468ee83707448fbd1db2eaa3f8d587331db2b17890f8ad
  • 5cae5ec54f450ef7483e265d289edc3877c17e3ae508c06e1679371aa1c1306f
  • 7a9f19ed663c1d4ee259ba0a10e93e1c9770812ce81f8c945140a452d17cb3c8
  • 7c30f007af910886b46f6022dd724dd303ad2d5f983376d0547293f484d6ae71
  • 86d287eafecd542faec21a95522b3425000ae5d8650813a9987b7c10cf90fc7a
  • 9d8d79000f6413668429d851f7d8ce94cd1b61c3a421939cf34cec8d668f5388
  • 9dff477e6d30872669bb6186c67147a945d9de7e947eb7906afdb03c93901ead
  • b4a5bcf4ce8c9cc844c06f436d4c26b28cb408f7e4fd8990681336445493acc1
  • bfdaf869a3956b37bf416dcdafdad314e8de0215cfd8fd8b2bc7a4e5cd15a349
  • c3be125753aea85728a082823db77d833377d7e3eb199364aa49d1ff2535f53e
  • c9564621abec9bdb7ceb38bb1a2895a119772b7f830351272c13a3f4cd606b97
  • d6fbfada62639578b6a6e91786928705dd22bb14b0f030504ffbc974e23528bc
  • de6384e853dfc007205abb7b15b49eded2e3e977058600dece2c2e9190a5191a
  • e0c7797e7dba2056bc95bfddb96d9f07afb93988f108bc417c40cd05f7ae49a4
  • eceab1132aacd803962fa173d1b2c43e225fcfa8b5d26d3efadad1b4de33d8ec
  • efec1e537445170a9aac11781c597cba5bd5d25b79ac3d65467d84f109d86fd4
  • f181d57c29364aef01e3f72051ec2dc0da918d346e7e4d1377e13408afb8663a
  • f53359313ce9a9433651202a7ffbf155dc1379103796a45492a50edbf044d59d

Комментарии: 0