Разделы

Безопасность Пользователю Техника

iPhone можно превратить в «кирпич» одним сообщением в iMessage

В iMessage найдена уязвимость, которая выводит из строя iPhone. Чтобы восстановить его работу, придется пожертвовать всеми данными на устройстве. Причиной сбоя становится некорректно сформированное сообщение с определенным текстовым ключом.

Уязвимость в iMessage

В iMessage найдена уязвимость, которая позволяет вывести из строя iPhone. Баг был обнаружен участницей Google Project Zero Натали Силванович (Natalie Silvanovich). Восстановить работу устройства можно, но при этом будут потеряны все данные. Уязвимость была обнаружена в апреле и исправлена в мае в iOS 12.3.

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

Технические особенности

Силванович поясняет в блоге, что «метод -[IMBalloonPluginDataSource individualPreviewSummary] в IMCore способен запустить NSException из-за неправильно сформированного сообщения, содержащего атрибут с ключом IMExtensionPayloadLocalizedDescriptionTextKey, значением которого не является NSString».

«Этот метод вызывает [IMBalloonPluginDataSource _summaryText], который возвращает атрибут, приняв его за строку, но не проверив. Метод затем вызывает -[IMBalloonPluginDataSource _replaceHandleWithContactNameInString:], а он в свою очередь вызывает im_handleIdentifiers в “NSString”, который на самом деле является NSNumber, который вызывает исключение, так как для данного класса нет селектора», — подводит итог исследовательница.

brickediphone600.jpg
Сообщение в iMessage выводит из строя iPhone

На Mac этот процесс аварийно завершается и запускается опять. Но на iPhone данный код является частью Springboard — приложения, отвечающего за главный экран iOS. В итоге получение данного сообщения заставляет Springboard завершать и возобновлять работу раз за разом. Из-за этого пользовательский интерфейс перестает отображаться и устройство не может больше реагировать на команды пользователя.

Жесткая перезагрузка в данной ситуации не помогает — телефон остается неработоспособным после разблокировки. Единственный способ восстановить работу iPhone — перезагрузиться в режиме восстановления и запустить восстановление. Но в этом случае будут потеряны данные на устройстве.

Похожие случаи

Это не первый случай, когда iPhone удается вывести из строя, прислав одно-единственное сообщение. В январе 2018 г. в соцсети Twitter распространилась вредоносная ссылка, переход по которой эксплуатировал уязвимость в устройствах под управлением iOS и Mac. Если пользователь получал эту ссылку через приложение «Сообщения», его iPhone или iPad зависал, а устройства с джейлбрейком уходили в вечную перезагрузку. После этого приложение «Сообщения» переставало работать.

Сама по себе ссылка вела на страницу на ресурсе Github. Но после ее получения приложение «Сообщения» переставало работать даже в том случае, если пользователь не прошел по ссылке. В приложении есть механизм предпросмотра ссылок, поэтому «Сообщения» выходили из строя, если она просто была получена на устройство.

В феврале 2018 г. выяснилось, что для того, чтобы вызвать сбой в работе устройств Apple, достаточно прислать на устройство одно-единственное слово — జ్ఞ‌ా. Если macOS, iOS или watchOS получали сообщение, в котором оно содержится, система зависала, поскольку у механизма отображения текста Apple возникали проблемы с обработкой слова.

Взаимный спрос: как рост медтеха в России формирует приток ИТ-специалистов в отрасль
Маркет

జ్ఞ‌ా — это слово из индийского языка телугу, для написания которого требуется несколько символов. Дословный перевод слова без контекста — «знак».

Если сообщение с опасным словом отображалось в качестве уведомления на экране блокировки iPhone или iPad, а потом пользователь пытался его открыть, это приводило к остановке работы Springboard. В результате зависала и сама iOS. Перезагрузка не помогала, поскольку система вновь пыталась отобразить символ, что опять приводило к зависанию. Единственный выход из ситуации заключался в том, чтобы войти в пострадавшее приложение с другого устройства и удалить сообщение.

Валерия Шмырова