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, который вызывает исключение, так как для данного класса нет селектора», — подводит итог исследовательница.
На Mac этот процесс аварийно завершается и запускается опять. Но на iPhone данный код является частью Springboard — приложения, отвечающего за главный экран iOS. В итоге получение данного сообщения заставляет Springboard завершать и возобновлять работу раз за разом. Из-за этого пользовательский интерфейс перестает отображаться и устройство не может больше реагировать на команды пользователя.
Жесткая перезагрузка в данной ситуации не помогает — телефон остается неработоспособным после разблокировки. Единственный способ восстановить работу iPhone — перезагрузиться в режиме восстановления и запустить восстановление. Но в этом случае будут потеряны данные на устройстве.
Источник: cnews.ru