Вредоносный NuGet-пакет Sicoob.Sdk похищал сертификаты PFX и пароли у разработчиков банковских интеграций

security

Эксперты по информационной безопасности обнаружили новую угрозу для цепочки поставок программного обеспечения. Злоумышленники опубликовали в репозитории NuGet поддельный комплект разработчика (SDK) для интеграции с API крупнейшего бразильского кооперативного банка Sicoob. Вредоносная библиотека, распространявшаяся под именем Sicoob.Sdk, была призвана упростить работу разработчиков с банковскими сервисами, но на деле тайно передавала злоумышленникам аутентификационные данные клиентов.

Описание

Sicoob - это один из крупнейших кооперативных финансовых институтов Бразилии, обслуживающий, по данным рейтингового агентства Fitch, около 9 миллионов членов и располагающий более чем пятью тысячами точек обслуживания. Естественно, банк использует цифровые каналы и API для взаимодействия с партнёрами и разработчиками. Именно эту доверенную среду и решили атаковать создатели вредоносного пакета.

Пакет Sicoob.Sdk появился в NuGet 5 мая 2026 года и быстро прошёл несколько версий - от 2.0.0 до 2.0.4. Судя по данным с площадки, библиотеку скачали 484 раза. После того как исследователи безопасности сообщили о проблеме, NuGet заблокировал пакет. Однако за время его существования разработчики, работающие с банковскими API, могли установить его на свои машины или в сборочные конвейеры.

В чём заключалась опасность? Когда программист создавал экземпляр класса SicoobClient, передавая идентификатор клиента, путь к PFX-файлу и пароль от него, библиотека выполняла совсем не то, что обещала. Вместо безопасной аутентификации через взаимный TLS (mTLS) пакет инициализировал легитимный сервис мониторинга ошибок Sentry, но с жёстко прописанным сторонним endpoint'ом. Затем он считывал PFX-файл с диска, кодировал его содержимое в base64 и отправлял вместе с идентификатором клиента и паролем на сервер, подконтрольный злоумышленникам.

PFX-файл - это защищённый паролем контейнер, который обычно содержит клиентский сертификат и закрытый ключ, необходимые для взаимной аутентификации. Передача такого файла вместе с паролем равносильна вручению злоумышленнику электронной подписи и ключа от сейфа. В результате атакующий может выдать себя за легитимного участника API-интеграции Sicoob, выполнять финансовые операции, получать данные о счетах, платежах, переводах, а также работать с платежными квитанциями Boleto - популярным в Бразилии инструментом безналичных расчётов.

Исследователи из компании Socket обнаружили эту активность с помощью своего ИИ-сканера, который проанализировал код вредоносной DLL-библиотеки. Анализ показал, что вредоносная логика внедрена только в скомпилированную сборку, распространяемую через NuGet. Исходный код на GitHub, размещённый в организации Sicoob-Cooperativa, не содержал ни Sentry, ни процедур чтения PFX и отправки данных. Это типичный приём подмены исходников: публичный репозиторий служит "чистой витриной", а настоящий вредоносный код доставляется в собранном артефакте.

Признаки подделки организации на GitHub очевидны. Аккаунт Sicoob-Cooperativa был создан 4 мая 2026 года, за день до появления пакета в NuGet. У организации нет верификации от GitHub, нет публичных участников, а единственный связанный аккаунт joaobcdev появился буквально за пару минут до этого. Никаких подтверждений того, что этот репозиторий контролируется настоящим банком Sicoob, не найдено. Более того, официальный аккаунт Sicoob на GitHub существует с 2017 года и не имеет отношения к этой подделке.

Последствия атаки могут быть серьёзными. Разработчики, установившие Sicoob.Sdk на свои рабочие станции или использовавшие его в CI/CD-пайплайнах, рисковали раскрыть не только тестовые, но и боевые учётные данные. Если в процессе сборки использовались настоящие сертификаты и пароли, злоумышленники могли получить доступ к банковской инфраструктуре жертвы. В худшем случае это приводит к несанкционированным платежам, краже персональных данных клиентов или финансовым потерям.

Специалистам по безопасности рекомендуется немедленно проверить все проекты на предмет использования пакета Sicoob.Sdk. Если будет обнаружено, что SicoobClient создавался с реальными данными, все скомпрометированные сертификаты и пароли следует отозвать и заменить. Также необходимо просмотреть логи аутентификации Sicoob на предмет подозрительных сессий и обращений к API. Отдельно стоит проверить сетевой трафик на обращения к подозрительному endpoint'у Sentry - o4511335034847232.ingest.de.sentry.io.

Остальные 11 пакетов, опубликованные с того же аккаунта sicoob, внешне не содержали аналогичной логики кражи, но доверять им нельзя: они распространялись через тот же вредоносный источник и зависят от скомпрометированного Sicoob.Sdk.

Эта история ещё раз напоминает о критической важности проверки сторонних компонентов, особенно тех, что работают с финансовыми данными и сертификатами. Даже пакеты, выглядящие как официальные, могут оказаться ловушкой. Разработчикам стоит внедрять практики проверки целостности артефактов, использовать сканеры уязвимостей и внимательно изучать издателей перед установкой. Банкам, в свою очередь, необходимо публиковать только проверенные комплекты разработчика через свои официальные каналы и своевременно предупреждать клиентов о возможных подделках.

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

Malicious package

Sicoob.Sdk (versions 2.0.0 through 2.0.4)

Related NuGet package set

  • Sicoob-Cooperativa.Sicoob.Auth
  • Sicoob-Cooperativa.Sicoob.CobrancaV3
  • Sicoob-Cooperativa.Sicoob.ContaCorrente
  • Sicoob-Cooperativa.Sicoob.ConvenioPagamentos
  • Sicoob-Cooperativa.Sicoob.Investimentos
  • Sicoob-Cooperativa.Sicoob.OpenFinance
  • Sicoob-Cooperativa.Sicoob.PagamentosPix
  • Sicoob-Cooperativa.Sicoob.PagamentosV3
  • Sicoob-Cooperativa.Sicoob.Pix
  • Sicoob-Cooperativa.Sicoob.Poupanca
  • Sicoob-Cooperativa.Sicoob.SpbTransferencias

Exfiltration endpoint

  • Sentry DSN: https://d565e3f03d0b1a7c8935d7ff94237316@o4511335034847232.ingest.de.sentry.io/4511337546317904
  • Sentry ingestion host: o4511335034847232.ingest.de.sentry.io
  • Sentry project ID: 4511337546317904
  • Sentry public key: d565e3f03d0b1a7c8935d7ff94237316

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