Доверяй, но проверяй (орфографию). Лишняя буква в названии пакета стоила разработчикам всех сбережений

Визуально обнаружить ловушку было крайне сложно даже при ручной проверке.


2hbpm02kf6bc1hrliioduyjno62puvw5.jpg

В экосистеме .NET обнаружена скрытая угроза, связанная с подменой популярной библиотеки трассировки. В каталоге NuGet более пяти лет распространялся вредоносный пакет, маскирующийся под легитимный компонент и нацеленный на кражу данных криптовалютных кошельков.

Речь идёт о пакете Tracer.Fody.NLog, который имитирует известную библиотеку Tracer.Fody и её автора. Его выявила команда Socket Threat Research Team. На странице NuGet он выглядел как обычное расширение для интеграции трассировки с NLog, однако внутри содержал код для хищения данных Stratis-кошельков. Встроенная библиотека сканировала стандартный каталог Stratis, находила файлы .wallet.json, извлекала их содержимое и вместе с паролем отправляла на сервер злоумышленников.

Для маскировки использовались сразу несколько приёмов. Название пакета отличалось от оригинала минимально, а учётная запись издателя csnemess отличалась от настоящего имени сопровождающего csnemes всего одной буквой. Дополнительно в коде применялись гомоглифы — кириллические символы, визуально неотличимые от латинских. Из-за этого имена типов и атрибутов выглядели корректно, но на уровне Unicode были другими, что затрудняло ручную проверку.

После подключения вредоносного пакета к проекту он незаметно встраивался в универсальный вспомогательный метод проверки аргументов. Как только в приложении появлялся объект со свойством WalletPassword, запускалась фоновая процедура, которая без уведомлений и журналирования отправляла данные кошелька и пароль на удалённый сервер. Все ошибки при этом подавлялись, поэтому работа приложения внешне не нарушалась.