Мы продолжаем рассказывать о новых интересных вещах с прошедшей WWDC. В прошлый раз мы писали о четырех самых интересных функциях новой файловой системы APFS, а в этот раз поговорим о нововведениях в старом и давно знакомом нам Gatekeeper.
Если вы вдруг не знаете, что такое Gatekeeper – рассказываем. Представленный в OS X 10.8 (но доступный с версии 10.7.5), Gatekeeper предназначен для защиты компьютера, не давая пользователю случайно запустить вредоносную программу. Раньше это осуществлялось с помощью двух основных функций – помещением программ в карантин и проверкой цифровых подписей исполняемого кода.
Но в марте 2015 года исследователь Патрик Вардл (Patrick Wardle) обнаружил в Gatekeeper уязвимость под названием dylib hijacking. Вардл установил, что если приложение, даже будучи подписанным с помощью Developer ID, поставляется с внешними ресурсами в отдельной папке и обращается к этим ресурсам по относительной ссылке, злоумышленник может подменить эти ресурсы и спровоцировать выполнение вредоносного кода. Вардл указывает, что множество популярных приложений, включая некоторые приложения от Apple, могут быть эксплуатированы таким образом.
Изображения здесь и ниже: WWDC 2016 – Session 706 – What’s New in Security
Gatekeeper Path Randomization была создана с целью устранить эту уявимость. Во время запуска приложения система монтирует пустой образ диска в случайном местоположении, копирует приложение туда и запускает его уже с образа. Таким образом, относительный путь к внешним ресурсам меняется и их выполнение становится невозможным.
Кажется, что такой подход навредит работе большинства приложений. Если вы – разработчик, то наверняка спрашиваете себя И что мне теперь делать? Прятать все ресурсы внутрь App Bundle?
Не обязательно. Дополнения в Gatekeeper не повлияют на следующие приложения:
- Загруженные из Mac App Store
- Ранее запускавшиеся пользователем
- Вручную перемещенные пользователем в /Applications
- Находящиеся в подписанных образах дисков
- Установленные через Apple Instaler package
Gatekeeper Path Randomization повлияет только на новые, загруженные из интернета приложения и на приложения с неподписанных образов. Поэтому, цитируя Session 706: Подписывайте то, что вы распространяете и не забывайте проверять подписи перед релизом
.