В Google создан инструмент для взлома iPhone

Безопасность Новости поставщиков Техника
мобильная версия
, Текст: Роман Георгиев
Эксперты по безопасности проекта Google Project Zero опубликовали концептуальный эксплойт, позволяющий производить джейлбрейк iOS. Эксплойт использует уязвимость в ядре операционной системе, которая допускает повреждение памяти.

Дебаггер подвел

Эксперт по безопасности Google Project Zero Иен Бир (Ian Beer) обнаружил в ядре iOS версии 11.1.2 уязвимость, приводящую к повреждению памяти. По итогам исследования он написал концептуальный эксплойт, который теоретически можно использовать для джейлбрейка устройства на базе iOS.

Проблема iOS заключается в Mach interface generator (MIG) - генераторе интерфейса микроядра Mach, используемого в устройствах на базе iOS. Еще в 2016 г. Бир выявил две уязвимости в MIG - CVE-2016-7612 и CVE-2016-7633.

Новый баг, описанный Биром в сопроводительной записке к его пробному эксплойту, позволяет производить прямую атаку на MIG.

По словам Бира, он воспользовался «недавним добавлением к ядру, возможно, использовавшемуся в качестве дебаггера, помогающего пронумеровать области, где ядро случайно раскрывает указатели в пользовательском пространстве. Текущая реализация нумерует kqueues и сбрасывает ряд значений из них».

Согласно собственным пояснениям Бира, он использовал уязвимость в proc_pidlistuptrs, чтобы выявить адрес произвольных значений ipc_ports. Затем он выполнял чтение областей разных размеров с помощью функции kalloc для обнаружения типичных утечек указателей ядра.

Эксперт по безопасности Google Иен Бир

После этого он направил несколько запросов на Mach, чтобы получить «значительное количество областей местоположения kalloc». Набрав достаточное число местоположений портов, он составил страницу, содержавшую только «его» порты. Раскрытие адресов портов позволило выяснить «порт, который располагается на странице в определённых границах». Найдя его, исследователь применил уязвимость IOSurface для выявления висящего указателя к этому порту.

«Затем я очистил ранее определённые местоположения kalloc и все остальные порты, и приступил к заданию местоположений kalloc.4096 (снова с помощью запросов к Mach); тщательное перемещение (по 1 МБ за раз) спровоцировало активизацию функции «уборки мусора», благодаря чему была сформирована страница, на которую указывал висящий указатель».

Далее, как пояснил Beer, прием "bsdinfo->pid" позволл ему сформировать запрос, позволяющий выявить vm_map задачи ядра и ipc_space самого ядра, позволяя ему переместить буфер kalloc.4096 с портом фальшивой задачи ядра.

Уязвимы не только iOS, но и Mac OS X

По словам Бира, эксплойт был протестирован на iPhone 6s, iPhone 7, iPod Touch 6G, а также Mac OS 10.13 на MacBook Air 5.2 - там он тоже работает.

«Поскольку программные разработки Apple считаются в целом более защищёнными, чем у конкурентов, нахождение каждого такого бага – почти событие, - считает Роман Гинятуллин, эксперт по безопасности компании SEC Consult Services. – В реальности же все программисты совершают ошибки, и Apple тут не исключение. Вопрос в том, насколько оперативно и эффективно уязвимость ликвидируется».

Данный баг Apple исправила ещё на прошлой неделе, так что пользователям рекомендуется как можно скорее установить соответствующие обновления.

Технические подробности исследования Бира опубликованы по ссылке.