Специалисты Google объяснили принцип работы шпионского по Pegasus

В июле 2021 года мировые СМИ сообщили о шпионском программном обеспечении Pegasus, которое следило за пользователями iOS и Android в течение нескольких лет. Целями вируса называются предприниматели, активисты, политики и журналисты, а разработчиком — израильская технологическая компания NSO Group.

Специалисты по кибербезопасности из команды Google Project Zero получили доступ к эксплойту под названием ForcedEntry («Принудительный вход»), проанализировали его и назвали одним из самых изощрённых в истории.

Метод не требует взаимодействия с пользователем и предназначен для взлома iPhone, хотя эксперты отмечают, что NSO Group продаёт аналогичные программы и для устройств на базе Android.

Атака начинается с обычного сообщения в iMessage. Для этого достаточно знать лишь номер телефона или Apple ID жертвы. Мессенджер имеет встроенную поддержку GIF-файлов, но чтобы «гифки» воспроизводились не один раз, а циклились, Apple предусмотрела отдельный конвейер обработки.

Примечательно, что метод вызывается не в изолированной среде BlastDoor, которая отвечает за приём входящих сообщений, а в процессе IMTranscoderAgent.

Обратите внимание: Бывший босс Google: «Через десять лет в мире будет два интернета».

Парсер CoreGraphics преобразует исходный GIF-файл в новый, а системная библиотека ImageIO проверяет его текстовое расширение — но не реальный формат.

Это позволяет злоумышленникам отправить поддельный файл с припиской .gif — например PDF, который поддерживает запуск JavaScript. Apple предусмотрела защиту от выполнения кода, но NSO Group удалось обойти и её.

Для этого хакеры добавили в PDF картинки в формате JBIG2 — стандарта 90-х годов для принтеров и сканеров, который позволяет сжимать чёрно-белые изображения. Кодировщик JBIG ищет похожие области пикселей (например, одни и те же буквы) и группирует их вместе, после чего алгоритм сжатия заменяет все такие области одной картинкой, экономя место.

Принцип сжатия JBIG2

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

Чтобы это предотвратить, в формат добавили сжатие без потерь. JBIG2 стал хранить разницу между символами (как на картинке ниже), а для воссоздания первоначального изображения обращаться к использованию логических операторов, вроде AND, OR, XOR и XNOR.

Несмотря на то, что большая часть кода CoreGraphics написана программистами Apple, реализацию JBIG2 взяли из открытых источников. Декодер полагается на 19 типов сегментов, которые представляют собой прямоугольные массивы пикселей.

Путём тщательной обработки контекстно-зависимой части декомпрессора, злоумышленникам удалось переполнить часть сегментов, перезаписать указатели, получить доступ к логическим операциям и выйти за пределы буфера.

Схема памяти

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

Стоит отметить, что Apple исправила уязвимости парсера CoreGraphics в сентябрьском обновлении iOS 14.8 и убрала ссылки на IMTranscoderAgent в iOS 15 — теперь «гифки» действительно обрабатываются в изолированной среде.

В ноябре компания подала в суд на NSO Group, назвав причастных к вредоносному ПО «злоумышленниками, спонсируемыми государством» и проинформировала пользователей о возможной слежке.

#Наука #технологии #человек

#Знания #наука и образование #технологии будущего

#Мир #телефон

Еще по теме здесь: Новости науки и техники.

Источник: Специалисты Google объяснили принцип работы шпионского по Pegasus.