Вредоносная программа NSO Zero-Click взломала ваш iPhone с помощью виртуального процессора, закодированного в Y2K Image Tech

яблоко
Если вы энтузиаст технологий, вы, вероятно, слышали о вредоносных программах, запускаемых одним щелчком мыши. Это довольно страшная вещь сама по себе: один щелчок по тщательно продуманной ссылке в электронном письме или другом текстовом сообщении — и вы заражены. Вредоносное ПО с одним щелчком мыши существует уже давно, но в наши дни есть кое-что еще хуже. Это вредоносное ПО с нулевым кликом, и это именно то, чем был эксплойт FORCEDENTRY от NSO Group.
FORCEDENTRY, вероятно, использовался для атаки на iPhone девяти сотрудников Госдепартамента США в Уганде. Также похоже, что он уже использовался во время глобальной шпионской кампании Pegasus в начале этого года. Конкретная дыра, которую использовал эксплойт, была закрыта благодаря обновлению Apple в сентябре, но подробности о том, как именно работал эксплойт, стали известны только сейчас благодаря сообщению в блоге Project Zero от Google. Даже если вы не являетесь пользователем iPhone, наденьте шлем, потому что он вот-вот уйдет в заросли.

веб-сайт группы nso
Microsoft назвала NSO Group кибер-наемниками .

С точки зрения пользователя, все, что требовалось для того, чтобы FORCEDENTRY сработал, — это просто получить текстовое сообщение. Вам не нужно было нажимать на какие-либо ссылки, принимать или утверждать что-либо. Как только пользователь получает сообщение, он заражается вредоносным ПО Pegasus, которое позволяет удаленному пользователю красть сообщения, фотографии, электронные письма, звонки и даже тайно записывать пользователей.

Что делает эту историю такой увлекательной, так это то, как на самом деле работал эксплойт. На первый взгляд легко сказать, что злоумышленники отправили поддельный GIF-файл, который позволил им получить удаленное выполнение кода. Однако это сильно занижает сложность этого хака. «Поддельный GIF» на самом деле был PDF-файлом. PDF-файлы могут содержать Javascript, и несанкционированное выполнение Javascript в PDF-файлах было причиной многочисленных эксплойтов, связанных с PDF-файлами в прошлые годы.

Это не то, что здесь произошло. Вместо этого PDF-файл содержал поток данных в формате JBIG2. JBIG2 — малоизвестный формат изображений 2000 года, созданный для факсов и сканеров. Вместо того, чтобы сжимать данные изображения, такие как JPEG, JBIG2 пытается разумно сжимать документы, заменяя каждый экземпляр похожих глифов (то есть отдельных символов) одним экземпляром каждого глифа. Это не OCR; он не понимает, что изображения являются текстом. Алгоритм просто ищет похожие символы и заменяет их первым экземпляром этого символа.

Так как же перейти от «анализа изображения для отображения» к «полноценному удаленному выполнению кода»? Дьявол кроется в деталях того, как работает формат JBIG2. JBIG2 имеет проблемы с форматом сжатия. В документах, отсканированных в формат JBIG2, символы могут быть заменены на похожие символы, например, например, 6 превращается в 8, что является реальной проблемой для таких вещей, как медицинские документы или строительные чертежи. Эта проблема привела к тому, что его запретили в Германии и Швейцарии. Тем не менее, JBIG2 имеет форматы без потерь и «с меньшими потерями», и именно последний из них привел к этой дыре в безопасности.

Как часть формата JBIG2 с меньшими потерями, потоки могут содержать инструкции для управления данными изображения с использованием логических операторов, таких как AND, OR, XOR или XNOR. Используя эти операторы, вы можете легко сформировать логический элемент И-НЕ, что означает, что вы можете выполнять любые мыслимые вычислительные операции, но JBIG2 — это линейный формат: анализатор изображений Apple будет считывать поток данных один и только один раз.
ворота
Построение вентиля И-НЕ из вентилей И и ИЛИ-НЕ. Изображение: Проект Ноль
Обойти это можно, воспользовавшись уязвимостью переполнения буфера в простой джейн в библиотеке Xpdf с открытым исходным кодом, которую Apple использует для декодирования PDF-файлов. Это переполнение буфера является сутью эксплойта, но это не умная часть. После выполнения переполнения буфера поток JBIG2 свободен для записи в произвольную память. Используя бинарные операции, встроенные в формат JBIG2, хакеры создают небольшой виртуальный процессор в памяти телефона, а затем используют его, чтобы выйти из песочницы Apple и взломать телефон.
Если непонятно, скажем еще раз: в формате JBIG2 отсутствуют возможности сценариев, но в сочетании с недостатком переполнения буфера в Xpdf он имеет возможность «эмулировать схемы произвольных логических элементов, работающих с произвольной памятью». Они не могут запускать код в образе JBIG2, но могут создать виртуальный процессор в ОЗУ, а затем запустить код на этом процессоре.

По словам Google , хакеры «определяют небольшую компьютерную архитектуру с такими функциями, как регистры и полноценный 64-битный сумматор и компаратор, которые они используют для поиска в памяти и выполнения арифметических операций». В посте говорится: «Это не так быстро, как Javascript, но в целом эквивалентно вычислительному процессу».

Project Zero не объяснил подробности того, как операции виртуального процессора выходят из песочницы Apple вокруг процесса перекодирования изображений, но что бы это ни было, это почти наверняка не так невероятно, как то, что хакеры сделали, чтобы зайти так далеко в первую очередь.

Источник (англ.)

Поставить оценку
Кофебрейкер | Интернет-журнал