Google объяснила, как шпионское ПО Pegasus удалённо взламывало iPhone

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

Шпионское ПО израильской компании использовалось для атак на смартфоны журналистов по всему миру
C помощью шпионского ПО израильской компании успешно были взломаны 37 смартфонов, которые принадлежат журналистам по всему миру

О том, что шпионское ПО этой компании успешно в течение нескольких лет следило за пользователями iOS и Android, стало известно в июле 2021 года. Тогда авторы крупного расследования о Pegasus заявляли, что целями шпионского ПО являются журналисты, активисты, предприниматели и чиновники.

Как выяснили специалисты Google Project Zero, эксплойт ForcedEntry является чуть ли не самым сложным в истории, так как содержит более 70 000 сегментных команд. Метод предназначен для взлома iPhone, однако известно, что NSO Group продаёт аналогичные программы и для  Android-устройств.

Атака начинается с обычного сообщения, которое приходит в любой обычный мессенджер, например, iMessage. Чтобы отправить такое сообщение, достаточно знать лишь номер телефона или Apple ID потенциальной жертвы. Сообщение содержит GIF-файл — такого типа файлы поддерживаются iMessage.

Однако для того, чтобы «гифки» могли воспроизводиться циклично, у Apple предусмотрен специальный конвейер обработки, парсер в котором (CoreGraphics) преобразует GIF-файл в новый, а системная библиотека (ImageIO) выполняет проверку его текстового расширения — однако реальный формат не проверяется.

[IMGIFUtils copyGifFromPath:toDestinationPath:error]

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

Для этого в PDF-файл добавили изображения в древнем формате JBIG2, который ищет повторяющиеся символы и заменяет их одной картинкой. В процессе декомпрессии исходные данные могли искажаться из-за того, что кодировщик может путать похожие символы.

Сжатие JBIG2

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

Использование XOR для вычисления исходного изображения

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

Напомним, как сообщалось в июле 2021 года, при помощи Pegasus успешно были взломаны 37 смартфонов, которые принадлежат журналистам, правительственным чиновникам и правозащитникам по всему миру. Авторы расследования упомянули о списке с номерами телефонов людей, за которыми якобы велась слежка с помощью Pegasus.

Журналисты идентифицировали в нём порядка 1000 человек из более чем 50 стран, в число которых входят несколько членов арабской королевской семьи, 65 крупных бизнесменов, 85 активистов-правозащитников, 189 журналистов и более 600 политиков, в том числе несколько глав государств и премьер-министров.

Также в списке потенциальных целей для слежки с помощью Pegasus был обнаружен и телефонный номер Павла Дурова. Источник, близкий к команде Telegram, тогда рассказал «Коду Дурова», что информация о наличии номера в базе была ещё в 2018 году. Дуров позднее лично подтвердил факт наличия своего телефонного номера в базе NSO Group.

Павел Дуров оказался в списке слежки с помощью Pegasus
Павел Дуров фигурировал в списке потенциальных объектов слежки компании NSO Group с помощью программы Pegasus, об этом сообщает газета Guardian.