Хакер #305. Многошаговые SQL-инъекции
Специалистка Google Project Zero Натали Сильванович обнаружила интересный баг в iMessage. Специально модифицированное сообщение может вывести смартфон из строя, после чего поможет лишь полная очистка устройства и сброс к заводским настройкам.
Инженеры Apple уже устранили проблему с релизом iOS 12.3 (в мае текущего года). И теперь, выждав достаточное количество времени, Сильванович обнародовала технические детали найденной уязвимости.
Исследовательница объясняет, что метод -[IMBalloonPluginDataSource individualPreviewSummary] в IMCore может вызвать NSException, будучи использованным в специально модифицированном сообщении, содержащем атрибут с ключом IMExtensionPayloadLocalizedDescriptionTextKey, значением которого не является NSString. Данный метод вызывает [IMBalloonPluginDataSource _summaryText], который возвращает атрибут, который без проверки принимает за строку. Далее происходит вызов [IMBalloonPluginDataSource _replaceHandleWithContactNameInString:], который, в свою очередь, вызывает im_handleIdentifiers в NSString, но на самом деле это NSNumber, что приводит к вызову исключения, так как для данного класса нет селектора.
И если на Mac подобная атака приводит лишь к «падению» и восстановлению soagent, то в случае iOS дела обстоят куда хуже, так как в iPhone данный код – это компонент Springboard, то есть часть приложения, которое отвечает за работу домашнего экрана ОС.
В итоге получение такого вредоносного сообщения заставляет Springboard «падать» и восстанавливаться в бесконечном цикле, пользовательский интерфейс перестает работать, и iPhone превращается в «кирпич», не реагируя на действия своего владельца.
Сильванович подчеркивает, что вернуть устройство к жизни простой перезагрузкой не удастся. Единственный способ «реанимировать» пострадавший iPhone – загрузка в режиме recovery mode и выполнение восстановления с потерей всех данных.
Напомню, что это не первая серьезная уязвимость в мессенджере, найденная Сильванович. Так, осенью прошлого года исследовательница нашла уязвимость в WhatsApp. Проблема срабатывала при ответе на видеозвонок и позволяла злоумышленнику получить полный контроль над устройством жертвы.