«Самая сложная» цепочка атак на iPhone, «когда-либо виденная», использовала четыре 0-day для создания эксплойта 0-click

В период с 2019 по декабрь 2022 года существовала крайне продвинутая уязвимость iMessage, которая впоследствии была названа «Operation Triangulation» исследователями безопасности из Kaspersky, обнаружившими ее. Теперь они поделились всем, что знают о «самой сложной цепочке атак», которую они «когда-либо видели».

Сегодня на Chaos Communication Congress исследователи безопасности Kaspersky Борис Ларин, Леонид Безвершенко и Георгий Кучерин выступили с презентацией, посвященной Operation Triangulation. Это был первый раз, когда эти трое «публично раскрыли детали всех эксплойтов и уязвимостей, которые были использованы» в продвинутой атаке на iMessage.

Исследователи также поделились всей своей работой в блоге Kaspersky SecureList сегодня.

Эксплойт iMessage Pegasus 0-click был назван «одним из самых технически сложных эксплойтов». И Operation Triangulation выглядит столь же пугающе – Ларин, Безвершенко и Кучерин заявили: «Это, безусловно, самая сложная цепочка атак, которую мы когда-либо видели».

Цепочка атак 0-day к эксплойту 0-click для iMessage

Эта уязвимость существовала до выпуска iOS 16.2 в декабре 2022 года.

через Бориса Ларина, Леонида Безвершенко и Георгия Кучерина из Kaspersky

Вот полная сложная цепочка атак, включая четыре 0-day, использованные для получения привилегий root на устройстве жертвы:

  • Злоумышленники отправляют вредоносное вложение iMessage, которое приложение обрабатывает без каких-либо признаков для пользователя.
  • Это вложение использует уязвимость удаленного выполнения кода CVE-2023-41990 в недокументированной, только для Apple, инструкции шрифта TrueType ADJUST. Эта инструкция существовала с начала девяностых годов, прежде чем была удалена патчем.
  • Он использует return/jump oriented programming и многоступенчатые процессы, написанные на языке запросов NSExpression/NSPredicate, патча окружения библиотеки JavaScriptCore для выполнения эксплойта повышения привилегий, написанного на JavaScript.
  • Этот JavaScript-эксплойт обфусцирован, чтобы сделать его совершенно нечитаемым и минимизировать его размер. Тем не менее, он содержит около 11 000 строк кода, которые в основном посвящены парсингу и манипулированию памятью JavaScriptCore и ядра.
  • Он использует функцию отладки JavaScriptCore DollarVM ($vm), чтобы получить возможность манипулировать памятью JavaScriptCore из скрипта и выполнять нативные функции API.
  • Он был разработан для поддержки как старых, так и новых iPhone и включал обход Pointer Authentication Code (PAC) для эксплуатации последних моделей.
  • Он использует уязвимость переполнения целых чисел CVE-2023-32434 в системных вызовах отображения памяти XNU (mach_make_memory_entry и vm_map) для получения доступа на чтение/запись ко всей физической памяти устройства на пользовательском уровне.
  • Он использует аппаратные регистры ввода-вывода с отображением памяти (MMIO) для обхода слоя защиты страниц (PPL). Это было смягчено как CVE-2023-38606.
  • После эксплуатации всех уязвимостей JavaScript-эксплойт может делать все, что угодно с устройством, включая запуск шпионского ПО, но злоумышленники выбрали: (а) запуск процесса IMAgent и внедрение полезной нагрузки, которая очищает следы эксплуатации с устройства; (б) запуск процесса Safari в невидимом режиме и перенаправление его на веб-страницу со следующей стадией.
  • Веб-страница содержит скрипт, который проверяет жертву, и, если проверки проходят, получает следующую стадию: эксплойт Safari.
  • Эксплойт Safari использует CVE-2023-32435 для выполнения shellcode.
  • Shellcode выполняет другой эксплойт ядра в виде файла объекта Mach. Он использует те же уязвимости: CVE-2023-32434 и CVE-2023-38606. Он также огромен по размеру и функциональности, но совершенно отличается от эксплойта ядра, написанного на JavaScript. Некоторые части, связанные с эксплуатацией вышеупомянутых уязвимостей, являются единственным, что объединяет два эксплойта. Тем не менее, большая часть его кода также посвящена парсингу и манипулированию памятью ядра. Он содержит различные утилиты для пост-эксплуатации, которые в основном не используются.
  • Эксплойт получает привилегии root и продолжает выполнять другие стадии, которые загружают шпионское ПО. Мы освещали эти стадии в наших предыдущих публикациях.

Исследователи подчеркивают, что они почти полностью «обратно спроектировали каждый аспект этой цепочки атак» и опубликуют больше статей в 2024 году, подробно рассматривая каждую уязвимость и то, как она была использована.

Но, что интересно, Ларин, Безвершенко и Кучерин отмечают, что остается загадка, связанная с CVE-2023-38606, с которой им хотелось бы получить помощь.

В частности, неясно, как злоумышленники узнали о скрытой аппаратной функции:

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

В заключение Ларин, Безвершенко и Кучерин говорят, что системы, «основанные на «безопасности через неясность», никогда не могут быть по-настоящему безопасными».

Если вы хотите внести свой вклад в проект, вы можете найти технические детали в публикации Kaspersky.