Захват npm-пакета art-template привёл к волне атак на владельцев iPhone

security

20 мая 2026 года команда исследователей безопасности Socket Threat зафиксировала признаки компрометации популярного пакета для шаблонизации на JavaScript - art-template. Эта библиотека широко используется в веб-разработке для рендеринга динамического контента на стороне клиента. Как выяснилось, злоумышленники получили контроль над репозиторием под предлогом взятия на себя обслуживания проекта, от которого отказался оригинальный автор. Сразу после этого они начали публиковать вредоносные версии пакета, содержащие скрытую полезную нагрузку, нацеленную на устройства под управлением iOS.

Описание

Специалисты Socket Threat обнаружили как минимум три скомпрометированные версии - 4.13.3, 4.13.5 и 4.13.6. В первых двух злоумышленники использовали кодировку для маскировки загрузчика, а в последних двух отказались от обфускации и стали внедрять открытый код, который подключал внешний скрипт с удалённого сервера. Этот скрипт перенаправлял браузер жертвы на сайт, где работала так называемая "водопойная" атака - заражение происходило при простом посещении страницы. Таким образом, любой веб-сайт, использующий art-template версий 4.13.5 или 4.13.6, незаметно для себя становился распространителем вредоносного кода.

Суть атаки заключалась в доставке набора эксплойтов для браузера Safari на iPhone и iPad. Вредоносный скрипт размером около 50 килобайт содержал многослойную обфускацию и сложную логику проверки окружения. Он срабатывал только на устройствах с iOS 11.0 по 17.2, причём жёстко отсекал любые браузеры, кроме Safari. На более новых версиях, начиная с iOS 17.3, выполнение прерывалось на раннем этапе. Это напрямую указывает на то, что злоумышленники эксплуатировали уязвимости, исправленные именно в iOS 17.3.

Сразу после запуска скрипт начинал каждые десять секунд передавать на сервер управления данные: публичный IP-адрес жертвы, версию iOS и внутренний код кампании. Параллельно проводилась серия из пяти проверок на наличие автоматизированных инструментов и песочниц. В частности, скрипт определял поддержку WebRTC и WebGL, проверял значение свойства navigator.webdriver, а также вставлял в DOM математический элемент MathML, чтобы убедиться, что браузер - настоящий, а не эмуляция. Одна из проверок пыталась записать Blob-объект в IndexedDB: ошибка, характерная для старых версий Safari, позволяла точно определить версию iOS.

После успешного прохождения всех тестов скрипт загружал один из пяти модулей, специфичных для конкретного диапазона версий iOS. Каждый модуль представлял собой загрузчик для WebAssembly, который, в свою очередь, выполнял низкоуровневое зондирование аппаратной архитектуры устройства - определял тип процессора (ARM64 или ARM64_32) и, в зависимости от этого, подгружал криптографические модули. Финальная стадия - вызов полезной нагрузки, которая, судя по косвенным признакам, является эксплойтом для удалённого выполнения кода в браузере.

Исследователи отметили глубокое сходство данного образца с коммерческим эксплуатационным набором Coruna, который ранее был детально описан командой Google Threat Intelligence. Совпадают не только диапазоны версий iOS, но и методы обфускации (XOR-кодирование строк с массивом целых чисел, затем свертка через map и fromCharCode), схема адресации модулей через хеширование, а также формат доменов для серверов управления (.xyz длиной 15 символов). Более того, в коде обнаружены жёсткие отсечки на iOS 17.3, что соответствует патчу для уязвимости CVE-2024-23222, используемой Coruna. Связь с кампанией UNC6691, которую приписывают китайской финансово мотивированной группировке, пока требует дополнительного анализа инфраструктуры.

Основной вектор компрометации - заражение через npm-пакет. Поскольку art-template является популярной библиотекой, под угрозой оказались тысячи сайтов, которые использовали уязвимые версии. Посетители таких ресурсов с iPhone или iPad на iOS 11-17.2 могли незаметно для себя стать жертвой загрузки вредоносного кода. Вредоносные версии пакета были удалены из реестра npm после сообщения исследователей, однако организации, использующие пакет, должны немедленно проверить свои зависимости и обновить art-template до безопасной версии.

Компаниям, обслуживающим мобильных пользователей, рекомендуется заблокировать на межсетевых экранах домены l1ewsu3yjkqeroy[.]xyz, utaq[.]cfww[.]shop и v3.jiathis[.]com, а также усилить контроль за любыми POST-запросами к неизвестным API сразу после обращения к сервису определения IP-адреса icanhazip.com. Специалистам по безопасности стоит также проверить логи прокси на наличие строки "CHMK6IG08F42496C22" - это маркер данной кампании. Для владельцев iOS-устройств лучшей защитой остаётся установка последних обновлений системы, так как атака не работает на iOS 17.3 и новее.

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

Compromised Packages

  • art-template@4.13.5 (pkg:npm/art-template@4.13.5)
  • art-template@4.13.6 (pkg:npm/art-template@4.13.6)

Domains

  • cfww.shop
  • l1ewsu3yjkqeroy.xyz
  • utaq.cfww.shop
  • v3.jiathis.com

URLs

  • https://l1ewsu3yjkqeroy.xyz/api/ip-sync/sync
  • https://utaq.cfww.shop/17480ecc0120292fb6b8b19f2fa134385dcfd0fd.js
  • https://utaq.cfww.shop/3bc0f6865c0476c0a98a76cb9924d6b3972df591.js
  • https://utaq.cfww.shop/3fd66b32c44150acff3dcb80f86c759574148ed5.js
  • https://utaq.cfww.shop/46ecd515ac9e99ef0603063db39303a0fd849632.js
  • https://utaq.cfww.shop/4a75f0551eba446b4fa35127024a84b71d9688d6.js
  • https://utaq.cfww.shop/5ff38f5342bb3c931bc504d6fa3523d0c8865b93.js
  • https://utaq.cfww.shop/6beef463953ff422511395b79735ec990bed65f4.js
  • https://utaq.cfww.shop/8835419f53fa3b270c8928d53f012d4c28b29ea4.js
  • https://utaq.cfww.shop/8c4451cf1258f9a8d6a8af27864f111fd69a0e99.js
  • https://utaq.cfww.shop/9af53c1bb40f0328841df6149f1ef94f5336ae11.js
  • https://utaq.cfww.shop/aea58f0e58801b528702a6c66bf4af8b99041243.js
  • https://utaq.cfww.shop/bef10a7c014b826e9dd645984e80baf313c1635f.js
  • https://utaq.cfww.shop/f6377d5d458183d41c5fd99661c5a306b42c6255.js
  • https://utaq.cfww.shop/ff4f3cb4711fb364b52de5ab04a8f83140466f89.js
  • https://utaq.cfww.shop/gooll/49554fde7424c31c.js
  • https://utaq.cfww.shop/gooll/gooll.html
  • https://v3.jiathis.com/code/art.js
  • https://v3.jiathis.com/code/jia.js?uid=artemplate

MD5

  • 6e79ae622b7ef30f31fdbcc2dc65339e

SHA1

  • 14669ca3b1519ba2a8f40be287f646d4d7593eb0
  • 171a7da1934de9e0efb9c1645f4575f88e482873
  • 29b874a9a6cc9fa9d487b31144e130827bf941bb
  • 477db22c8e27d5a7bd72ca8e4bc502bdca6d0aba
  • 57620206d62079baad0e57e6d9ec93120c0f5247
  • 57cb8c6431c5efe203f5bfa5a1a83f705cb350b8
  • 7d8f5bae97f37aa318bccd652bf0c1dc38fd8396
  • 7f809f320823063b55f26ba0d29cf197e2e333a8
  • 8064d4e0322f069b3dba13e7957ff0ca7dab7984
  • 91b278ddb2aec817b10c1535e0963da74f9b8eeb
  • 9db8a84aa7caa5665f522873f49293e8eebccd5c
  • b586c88246144bc7975ad4e27ec6d62716bf34ea
  • ba712ef6c1bf20758e69ab945d2cdfd51e53dcd8
  • c03c6f666a04dd77cfe56cda4da77a131cbb8f1c
  • d11d34e4d96a4c0539e441d861c5783db8a1c6e9
  • e3b6ba10484875fabaed84076774a54b87752b8a
  • ea3da0cfb0a5bdb8c440dd4a963f94cbd39d9e44

SHA256

  • 080da430f7e3a38d7cad59887df30d9ac40e70d203c7aa5f5afaf0cafcb73e5f
  • 2c4a5a49a84f55db0dd5554f7a9e055dbb0eae3782986726c6dcfab84ecd6dc5
  • 2cfa14b2cd1f3fd51406cf1ac49c761a5c26ce3994e97de7f1ca469d85248a52
  • 329ae1401819da4f87e3726b7e2707afcaf62d1219c4256c828df36af0a8784a
  • 473f182b8cbbdb5b4b29b7ad875014d66f1691ed2e770c633b559d97243895a7
  • 593548d714f6d48acb886d42bf576d8fd6b1ddae6f888dda0719671a53463663
  • 5c0ebd86d2e8ae2087c0a4def4e0364a0cfb85c7e0a753fc96dca55b6c303432
  • 675a40df5f517f8f0cd99f74c5468f56d1d8f05003e997477a2af3bc7b0105a9
  • 7b8436669563e7d317c219b26432bdaab70e39061ea2c1c70fcc201f2c19c470
  • b0b29b6148c4b0dbd77d33f821ca01e2d7a711988b854285a2606dcc53894abe
  • de1a07d8978725eaa6da5658e373e88264ac90515750201bfbe17947d5a9e788
  • eaab0874332777ad8a03a292bcd608a3358547f9f16ab551d34eef35d5cd539e
  • ebcc76dcd5ef596e732321a8d16eb2dee525c5d9a68c700b7885648c13c65a57
  • f31bdd069fe7966ae11be1f78ee5dd44445938856dd1df12379e0e84a6851f5c
  • feb9442c39619d7bb3ff29de8e1d4bebceb1b24f8c0a63da2f2b30a1023dc94f

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