Ad
Угрозы

13 тем Packagist заражали iPhone через обычные сайты

Маша Даровская
By Маша Даровская , IT-редактор и автор
13 тем Packagist заражали iPhone через обычные сайты
Обложка © Anonhaven

Исследователи обнаружили 13 вредоносных пакетов с темами для PHP-сайтов в Packagist, которые превращали сайты с фильмами и комиксами в площадки для атак на владельцев iPhone. Пользователю не требовалось устанавливать приложение или скачивать подозрительный файл: на уязвимом устройстве цепочка запускалась после загрузки зараженной страницы в мобильном Safari.

Встроенный в тему JavaScript определял устройство посетителя и при подходящей версии iOS загружал многоступенчатую цепочку эксплойтов — от ошибки в WebKit до получения доступа к ядру. После успешной атаки шпионское ПО могло собирать сообщения, фотографии, контакты, историю звонков и местоположений, cookie браузера, пароли Wi-Fi и данные системного хранилища Keychain. В августе 2026 года операторы обновили нагрузку и добавили функции для поиска данных криптокошельков, связанных с фразами восстановления.

Изученная цепочка рассчитана на iPhone XS — iPhone 16 с iOS 18.4–18.6.x. Для iOS 18.7 и iOS 26 необходимых таблиц в коде исследователи не нашли. Известные этапы атаки уже закрыты: устройство с iOS 18.7.3 или iOS 26.2 и новее этой конкретной цепочке не подвержено.

Атакующие использовали проекты OphimCMS и KKPhim — системы управления контентом на Laravel, популярные среди вьетнамоязычных сайтов с фильмами и комиксами.

Темы для таких проектов распространяются как Composer-пакеты через Packagist. Владелец сайта устанавливает пакет, после чего содержащиеся в нtм JavaScript, стили, проигрыватели и другие ресурсы автоматически начинают загружаться у посетителей. Именно этим и воспользовались злоумышленники.

Всего подтверждены 13 вредоносных пакетов в пяти пространствах имен: vsmov, vsphim, haiau009, chilltvcms и ophimcms. Авторы брали существующие проекты, сохраняли привычную структуру темы и добавляли опасный код во фронтенд-файлы. Часть загрузчиков маскировалась под обычные компоненты jQuery.

В итоге сервер владельца сайта не обязательно взламывали. Разработчик сам устанавливал троянизированный пакет, а его сайт после этого начинал раздавать вредоносный JavaScript посетителям.

Это классическая атака через цепочку поставки: целью оказывается компонент, которому разработчик доверяет, а непосредственно атакуют уже пользователей его продукта.

Кампания началась не в августе. В марте 2026 года исследователи обнаружили шесть вредоносных пакетов ophimcms. Тогда их возможности выглядели заметно проще: код передавал адреса посещаемых страниц сторонним серверам, внедрял рекламу, перехватывал клики и перенаправлял мобильных пользователей на азартные и другие сторонние сайты.

Шесть обнаруженных на тот момент пакетов суммарно набрали примерно 2750 загрузок. Опасный код находился именно в JavaScript-ресурсах, а не в основной PHP-части темы, поэтому обычная проверка серверного кода могла ничего не показать.

Более позднее исследование показало, что один из загрузчиков в theme-dy вел на значительно более серьезную инфраструктуру.

Вредоносная тема добавляла загрузчик в страницы сайта. Тот проверял платформу и источник перехода, чтобы не показывать реальное поведение каждому посетителю и усложнить автоматический анализ.

Дальше существовало несколько сценариев. Мобильного пользователя могли отправить по цепочке рекламных и азартных редиректов. Для подходящего iPhone запускалась отдельная ветка.

Один из загрузчиков обращался к union[.]macoms[.]la, после чего код проходил через несколько промежуточных серверов и создавал скрытый iframe. Следующий этап определял версию iOS и выбирал подходящий эксплойт.

Первой точкой входа служили две уязвимости JavaScriptCore — движка JavaScript в WebKit.

Для iOS 18.4–18.5 цепочка использовала CVE-2025-31277. Ошибка позволяла через специально подготовленный веб-контент добиться повреждения памяти. Apple закрыла её в iOS 18.6, выпущенной 29 июля 2025 года.

Для iOS 18.6 и последующих совместимых сборок эксплойт переключался на CVE-2025-43529 — ошибку use-after-free в WebKit, способную привести к выполнению произвольного кода.

Apple устранила CVE-2025-43529 в iOS 18.7.3 и iOS 26.2. Компания отметила, что уязвимость могла использоваться в чрезвычайно сложных адресных атаках против конкретных владельцев устройств с версиями системы до iOS 26.

В исследованном наборе эксплойтов находились таблицы адресов и смещений только для iOS 18.4–18.6.x и устройств от iPhone XS до семейства iPhone 16. Подготовленных данных для iOS 18.7 или iOS 26 не обнаружили. Кампания целилась в устройства, которые продолжали работать на старых версиях iOS.

Выполнения кода внутри WebKit недостаточно, чтобы прочитать всю информацию на iPhone. Процесс браузера изолирован песочницей, которая ограничивает доступ к системе.

Следующие этапы последовательно обходили эти ограничения. Сначала код выбирался из процесса WebContent в графический процесс, используя IOSurface и механизм межпроцессного обмена. После этого эксплуатация переходила через системную службу mediaplaybackd к драйверу AppleM2ScalerCSCDriver и получала возможность читать и изменять память ядра.

Позднее в том же драйвере и через тот же внешний интерфейс была раскрыта CVE-2026-43655, которую Apple исправила в iOS 26.5. Однако это не та уязвимость, которую использовала обнаруженная цепочка.

Публичный эксплойт CVE-2026-43655 использует ошибку use-after-free, связанную с освобождением соединения. Вредоносная цепочка из Packagist применяла другой механизм — состояние гонки вокруг хранилища IOSurface для получения чтения и записи памяти ядра. Apple подтвердила исследователям, что именно эта ошибка была устранена еще в iOS и macOS 26.1.

CVE-2026-43655 стала отдельным последующим усилением безопасности того же компонента. В собственном бюллетене Apple описывает ее как ошибку, которая могла позволить приложению вызвать сбой системы или прочитать память ядра.

Финальный модуль уже выполнял функции полноценного шпионского ПО. В коде обнаружены жестко прописанные пути к системным базам и файлам, содержащим Keychain, пароли Wi-Fi, SMS, контакты, фотографии, cookie, историю браузера и звонков, сведения о местоположении, данные учётных записей, заметки, календарь и медицинские данные.

Собранная информация шифровалась AES и передавалась по HTTPS на меняющийся набор управляющих серверов.

Исследователи также обнаружили 20 доменов, предназначенных для приёма украденных данных. Они были зарегистрированы одной группой 2 июня 2026 года и продолжали работать на момент публикации исследования 31 августа.

Самое неприятное обновление появилось 12 августа. Операторы заново развернули практически всю цепочку под новыми именами файлов. Через пять дней был снова заменён загрузчик второго этапа. Размер финального вредоносного модуля вырос примерно вдвое.

Новая версия получила отдельные функции для поиска в Keychain информации, связанной с криптовалютными кошельками.

В коде присутствуют запросы для Bitget, BitKeep, Bitpie, Phantom, Tonkeeper, Trust Wallet и OKX, а также функции, ориентированные на мнемонические фразы и другие секреты кошельков.

Это не означает, что любое использование одного из этих приложений автоматически приводило к краже сид-фразы. Возможность зависит от того, какие данные конкретное приложение хранит в Keychain и что реально находилось на устройстве жертвы.

Сам вредоносный модуль, однако, явно предназначен для поиска такого материала. Если фраза восстановления действительно оказывается скомпрометирована, последствия значительно серьёзнее утечки обычного пароля: злоумышленник может импортировать кошелёк на другом устройстве и получить контроль над активами.

Некоторые элементы атаки пересекаются с DarkSword — набором эксплойтов для iOS, который Google Threat Intelligence Group раскрыла в марте 2026 года.

DarkSword применялся как минимум с ноября 2025-го и поддерживал iOS 18.4–18.7. Google наблюдала его у нескольких независимых операторов в кампаниях против пользователей в Саудовской Аравии, Турции, Малайзии и Украине. Полная цепочка состояла из шести уязвимостей и позволяла получить права ядра на устройстве.

Особенно заметное совпадение — CVE-2025-31277 и CVE-2025-43529. DarkSword тоже использовал их для первоначального выполнения кода через JavaScriptCore.

Совпадение двух уязвимостей и структуры доставки не доказывает, что Packagist-кампания является DarkSword или принадлежит тем же операторам.

Исследователи считают iOS-эксплойт в новой кампании товарным или брокерским инструментом, который мог передаваться разным клиентам и модифицироваться. Происхождение именно этой версии установить не удалось.

Это согласуется и с наблюдениями Google: DarkSword уже распространялся между несколькими различными группами, то есть наличие одного и того же набора эксплойтов ещё не устанавливает автора конкретной атаки.

Инфраструктура, через которую доставлялись некоторые этапы эксплуатации и принимались украденные данные, связана с FUNNULL Technology.

FUNNULL — инфраструктурный провайдер, против которого Управление по контролю за иностранными активами Минфина США ввело санкции 29 мая 2025 года. Американские власти заявили, что компания предоставляла инфраструктуру сотням тысяч мошеннических сайтов, а связанные с ней криптовалютные инвестиционные схемы привели к заявленным потерям американских жертв более чем на $200 млн.

В исследованной кампании вредоносные узлы скрывались за инфраструктурой yunray[.]ai, cdn1[.]ai и другими промежуточными доменами, которые специалисты связывают с FUNNULL. Семейство macoms[.]la также известно по предыдущим расследованиям атак через цепочки поставки.

Приписывать FUNNULL саму разработку эксплойта или считать все обнаруженные операции работой одной группы нельзя.

Анализ инфраструктуры указывает скорее на несколько независимых клиентов одного провайдера. Метаданные репозиториев вредоносных Packagist-пакетов содержат часовой пояс UTC+7, некоторые аккаунты используют вьетнамские имена и указывают Ханой. Исследователи связывают публикацию тем с группой, работающей из вьетнамского контекста, но не утверждают национальность каждого её участника.

Отдельная операция с азартными сервисами имела китайские артефакты и, судя по анализу, управлялась другими людьми. Общей для этих кампаний была инфраструктура FUNNULL, а не единый оператор.

Особенность этой кампании в том, что между атакующим и владельцем iPhone появлялся невольный посредник — администратор сайта.

Он устанавливал тему из Packagist и автоматически начинал отдавать встроенный в неё вредоносный JavaScript своим посетителям. Сам сайт при этом не требовалось предварительно взламывать через уязвимость сервера.

Опасные участки кода были спрятаны среди обычных фронтенд-ресурсов. Это снижало вероятность обнаружения при поверхностном аудите, особенно если разработчик проверял в основном PHP и composer.json.

Кроме 13 подтвержденных вредоносных пакетов, те же пять издателей распространяют другие темы, в которых активной нагрузки на момент анализа не было.

Доверять им исследователи все равно не рекомендуют. В этих пакетах присутствуют механизмы загрузки пользовательского JavaScript, которые позволяют активировать дополнительный код после обновления пакета или изменения настроек сайта.

Обнаруженная версия атаки ориентирована на iPhone XS — iPhone 16, оставшиеся на iOS 18.4–18.6.x.

Известная цепочка уже разорвана обновлениями системы. CVE-2025-31277 исправлена в iOS 18.6, вторая точка входа CVE-2025-43529 — в iOS 18.7.3 и iOS 26.2. Исследователи отдельно указывают: iPhone с iOS 18.7.3 либо iOS 26.2 и новее не подвержен известным этапам этой кампании.

Владельцам OphimCMS и KKPhim рекомендуется проверить установленные темы от vsmov, vsphim, haiau009, chilltvcms и ophimcms, удалить подозрительные пакеты, сменить использовавшиеся на сервере учётные данные и проверить JavaScript на неизвестные загрузчики. Для владельца iPhone защита — установить доступное обновление iOS.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.