Популярный проект с открытым исходным кодом стал источником заражения для конечных пользователей. Киберпреступники взломали Deep-Live-Cam — приложение для трансформации видео с заменой лиц в реальном времени, обладающее 96,6 тысячами звёзд на платформе GitHub. В результате атаки в файл зависимостей была интегрирована вредоносная программа, предназначенная для похищения криптографических активов.
Инцидент произошёл 8 сентября, когда в главную ветку репозитория попал набор изменений, затронувший 18 зависимостей в requirements.txt. Среди них находилась поддельная реализация распространённой библиотеки Requests, которая загружалась с сервера атакующих вместо официального источника. Подобные атаки на цепь поставок программного обеспечения представляют повышенную опасность, так как вредоносный код получает легитимность благодаря связи с надёжным проектом.
Фальшивый пакет был замаскирован под оригинальную библиотеку, копируя её имя и метаинформацию. При поверхностном осмотре никаких подозрений не возникало. В конфигурационный файл setup.py вредоносный код был помещён после большого количества пробелов, скрывая его от просмотра в большинстве текстовых редакторов и утилит сравнения версий. Дополнительно используемые переменные с символами восточноазиатских письменностей затрудняли анализ кода.
Вредоносная программа начинала работу ещё в процессе инсталляции модулей Python через setuptools, не требуя запуска самого приложения Deep-Live-Cam. Аналогичная схема использовалась в кампании ForceMemo, где преступники получали доступ к профилям разработчиков и осуществляли несанкционированные изменения в авторитетных хранилищах кода.
Вредонос анализировал тип операционной системы и функционировал под управлением Windows и macOS. На следующем этапе элементы атаки были скрыты на странице Telegraph, откуда скрипт извлекал многоуровневый закодированный код на Python. Последняя стадия вредоноса постоянно отслеживала содержимое буфера обмена, выискивая адреса основных криптовалютных сетей: Bitcoin, Ethereum, Tron и Solana.
При выявлении адреса кошелька программа тайно заменяла его адресом злоумышленника. Пользователь копировал правильный адрес, но вставлял уже подменённый вариант и самостоятельно подтверждал отправку средств. Такая подмена буфера обмена стала столь массовой угрозой, что компания Opera внедрила специальный механизм Hijack Protection для выявления подобных действий.
Вредоносная программа была рассчитана на сохранение после перезагрузки системы. В ОС Windows она создавала запись SysHelper в ветке автозапуска реестра, на macOS генерировала файл LaunchAgent с именем com.user.syshelper.plist. Следовательно, простое восстановление исходного файла зависимостей неэффективно. Если вредонос успел исполниться, его компоненты и механизмы персистентности оставались в памяти устройства.
Вредоносный коммит находился в основной ветке примерно 9 часов и 39 минут. Разработчик приложения сообщил о необычной активности аккаунта, несмотря на включённую защиту двумя факторами, затем выполнил смену пароля и криптографических ключей. Невозможно установить, использовали ли нападающие скомпрометированный токен доступа, приватный ключ или активную сессию авторизации.
Аналитики компании SafeDep отмечают, что обнаруженные следы подтверждают злонамеренное поведение кода, однако недостаточно информации для определения количества поражённых устройств и объёма причинённого ущерба. Наличие адресов преступников в исходном коде не является доказательством того, что на эти адреса поступали похищенные активы.
В весеннем периоде произошла аналогичная инцидент с открытым инструментом безопасности Checkmarx KICS. Хакеры модифицировали утилиту и использовали её авторитет для извлечения учётных данных и ключей из разработческих окружений.
В май аналитическая команда SafeDep выявила более масштабную кампанию под кодовым названием Megalodon. За короткий промежуток времени вредоносные изменения распространились на 5561 репозиториев GitHub. Цель атакующих заключалась в получении доступа к конфиденциальной информации в системах непрерывной интеграции и развёртывания.
В летние месяцы подобная проблема затронула экосистему npm. Самораспространяющийся вредонос Shai-Hulud инфицировал 444 пакета, которые загружались примерно два миллиарда раз ежемесячно, при этом вредоносные компоненты отсутствовали в открытых репозиториях на GitHub.
