С августа по октябрь 2025 года в репозитории NuGet был доступен пакет Newtonsoftt.Json.Net, имитирующий популярную библиотеку Newtonsoft.Json. Основной целью его создателей стала платформа онлайн-ставок Digitain и, в частности, игра на повышение коэффициента Crash. Пакет содержал вредоносный код, который незаметно для разработчиков подменял результаты игровых раундов, а затем передавал их злоумышленникам. Лишь двойная буква "t" в названии отличала его от оригинала.
Описание
Пакет был опубликован под видом законной библиотеки: в метаданных указывалось имя настоящего автора Newtonsoft.Json - Джеймса Ньютона-Кинга, ссылка на официальный сайт и лицензия MIT. Версия 11.0.x выглядела достаточно свежей, чтобы не вызывать подозрений, хотя реальная библиотека уже находилась на линейке 13.x. Внутри пакета находились три DLL-файла. Один из них был модифицированной версией самой библиотеки JSON, которая работала корректно для всех рутинных операций сериализации. Однако, как установили аналитики JFrog, в него был встроен скрытый триггер, запускавший вредоносную нагрузку. Дополнительные библиотеки содержали код для подмены игровых результатов и инструменты для изменения поведения приложений на лету.
Вредоносная нагрузка активировалась не сразу, а только после того, как в хост-приложении вызывалась одна из стандартных функций инициализации Newtonsoft.Json. Даже после этого запуск откладывался на время от десяти минут до суток. Так создатели избегали обнаружения: к моменту срабатывания вредоносного кода разработчики уже не следили за поведением программы, логи оставались чистыми, а само приложение продолжало работать без видимых сбоев.
Целью атаки был метод, отвечающий за генерацию коэффициента в игре Crash на платформе Digitain. Пакет подменял его так, чтобы в определённые раунды результат вычислялся не случайным образом, а по заранее заданным таблицам. Мошеннический алгоритм учитывал текущий месяц, день недели и номер недели в месяце. Особый сценарий действовал в 22:00 по UTC, что позволяло злоумышленникам реализовать отдельную стратегию ставок в этот час. Максимальное количество подменённых раундов было ограничено, чтобы не привлекать внимания к изменениям в общей статистике. В самых ранних версиях результаты подмены просто выводились в консоль - такой подход подходит для отладки на локальной машине, но не для удалённой атаки.
Всего было опубликовано семь версий пакета, которые прошли через три поколения развития. Первое поколение содержало только локальный код подмены без сетевой активности. Во втором появился механизм отправки подменённых результатов на управляющий сервер, но сам код был сильно запутан и использовал отражение для вызова сетевых функций, чтобы скрыть настоящую цель. Третье поколение упростило алгоритм подмены, сделав его более стабильным, а финальная версия вообще не содержала запутывания. Именно благодаря этому удалось восстановить адрес управляющего сервера и ключ доступа.
Для передачи данных злоумышленники маскировали трафик под обычную отправку журналов приложения. Они использовали API-ключ и формат сообщений, характерный для системы сбора логов Seq. Это позволяло вредоносным сетевым запросам выглядеть как легитимная телеметрия в организациях, которые уже применяют аналогичные инструменты.
Атака была направлена исключительно против Digitain. Все остальные разработчики, установившие пакет по ошибке, получали рабочую библиотеку JSON без каких-либо негативных последствий. Вредоносная функция активировалась только при наличии в приложении специфического внутреннего метода, принадлежащего игровому бэкенду Digitain. Таким образом, пакет не крал учётные данные, не перемещался по сети и не закреплялся в системе - его единственной задачей было искажение результатов игры.
Исследователи уведомили Digitain об инциденте в июле 2026 года. Компания подтвердила, что уже знала о проблеме и приняла меры для её решения. Тем не менее, остаётся неизвестным, выполнялся ли вредоносный код на производственных серверах и какие финансовые потери могли произойти.
Для защиты от подобных угроз рекомендуется тщательно проверять названия устанавливаемых пакетов, особенно если в них есть лишние символы. Стоит использовать блокировку исходящего трафика на подозрительные IP-адреса и вести строгий контроль зависимостей с помощью файлов блокировки версий. Пакет Newtonsoftt.Json.Net был скрыт автором из поиска, но его артефакты оставались доступны для загрузки, поэтому любые проекты, ссылавшиеся на него, необходимо очистить от подозрительных зависимостей и пересобрать заново.
Этот случай показывает, что даже единственная опечатка в названии библиотеки может привести к целенаправленному мошенничеству, если злоумышленник знает структуру кода жертвы. Вредоносное ПО, которое ведёт себя как обычная библиотека для большинства пользователей, остаётся незамеченным до тех пор, пока не встретит именно ту среду, для которой было создано.
Индикаторы компрометации
URL
- http://185.126.237.64:5341/api/events/raw
Package
- Newtonsoftt.Json.Net
HTTP header
- X-Seq-ApiKey: theperfectheist2025
SHA256
- 3fbe32d76a22bda7a8fd3cdc6faf68807108f01d74ec8b346f4c5d4b61dbc84b
- 4ed6e7b56abece2bef9cdddd0d10da2f8379a09ff94541ed0e70152f669c6682
- 5d062e3e52d36d3e66f1c4b54e26149a5b552417f8cc360c390b568aaeb92678
- ba8f36968c8cdd9799c1d5e5619d1a5d6a0b1eabfd7876daa3cfdebd51dd4516
- c162009eda7579c3bf5f4fb1606368270c989433d8923d43e033bd5aefc8e335
- c386d416afef8319bf11c9180f6d35c0e1f7cb40b7a0c81b166c253afc623706
- fe498d584f43b7d6ebe2ebc34481d9b0e8e931d2af039f59451bf42effe8b461