Картинка на билете – новый инструмент шпионажа за пользователями Apple

Картинка на билете – новый инструмент шпионажа за пользователями Apple

Как взломать iPhone через PNG.

image

В сентябре 2023 года Apple выпустила экстренное обновление безопасности для iPhone и iPad, которое устраняло две уязвимости, использовавшиеся в реальных атаках. Тогда специалисты Citizen Lab выяснили , что ошибки были частью новой атаки от компании NSO Group.

Взлом произошёл без участия пользователя — заражённое сообщение просто приходило в iMessage, и устройство оказывалось под контролем. Целью стал сотрудник правозащитной организации из США. Атака работала даже на самой последней версии iOS на тот момент — 16.6.

Главный элемент атаки — файл PKPass, обычно используемый для билетов и пропусков. Внутри находилось изображение, замаскированное под обычный .png, но на самом деле это был формат WebP. Такая подмена позволила обойти защиту системы. Такое уже случалось раньше — в 2021 году другой эксплойт NSO также маскировал файл с опасным содержимым под безобидное изображение.

уязвимость в WebP позволяла записать данные за пределами выделенной памяти при распаковке картинки. Ошибка возникала из-за неправильной работы с таблицами Хаффмана — специальными структурами, применяемыми для сжатия. Но ошибка не давала полной свободы: запись происходила в строго определённое место и с ограниченным значением. Поэтому хакеры нашли способ подготовить память устройства особым образом, чтобы получить контроль над системой.

Для этого использовался второй файл внутри PKPass — изображение background.png, которое на самом деле было в формате TIFF. Оно содержало небольшую, но важную подделку — объект типа CFArray, созданный так, чтобы перекрыть нужный участок памяти. Далее в ход шёл огромный 1-мегабайтный блок данных в формате bplist, с помощью которого память готовилась ко взлому.

В блоке находился поддельный объект CFReadStream. Когда система удаляла объект из памяти, он вызывал определённую функцию — именно в этот момент начинался запуск вредоносного кода. Интересно, что для этого не пришлось обходить защиту Pointer Authentication (PAC), которая должна была мешать таким действиям. Вместо этого хакеры воспользовались особенностью, что указатель на структуру с функцией не был защищён — атакующие просто подменили его на уже существующую.

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

Финальный этап — запуск NSExpression, особого формата кода в системе Apple. Код был зашифрован. Чтобы его расшифровать, эксплойт ждал ещё одного сообщения от атакующего, которое содержало нужный ключ. Только после этого выполнялся основной вредоносный код, скорее всего — для выхода из песочницы BlastDoor и получения полного доступа.

Такой подход оказался крайне сложным и многоступенчатым. Тем не менее, он использовал довольно известные техники: маскировку файлов, точную подготовку памяти и подмену функций. Специалисты считают, что Apple стоит ужесточить требования к структурам bplist и не допускать использования дублирующихся ключей или слишком больших объектов. Также важно отказаться от доверия к расширениям файлов — уже второй раз взлом происходит именно из-за них.

Эксклюзивный стрим с хакерами мирового класса

15 апреля в 19:00 Hussein и Niksthehacker раскроют все карты.

Реклама. АО «Позитив Текнолоджиз», ИНН 7718668887