it-консалтинг и аутсорсинг
что мы делаем контакты блог

Gatekeeper Path Randomization

Федор Костылев 19.07.2016

GateKeeper icon

Мы продолжаем рассказывать о новых интересных вещах с прошедшей WWDC. В прошлый раз мы писали о четырех самых интересных функциях новой файловой системы APFS, а в этот раз поговорим о нововведениях в старом и давно знакомом нам Gatekeeper.

Если вы вдруг не знаете, что такое Gatekeeper – рассказываем. Представленный в OS X 10.8 (но доступный с версии 10.7.5), Gatekeeper предназначен для защиты компьютера, не давая пользователю случайно запустить вредоносную программу. Раньше это осуществлялось с помощью двух основных функций – помещением программ в карантин и проверкой цифровых подписей исполняемого кода.

Gatekeeper alert

Но в марте 2015 года исследователь Патрик Вардл (Patrick Wardle) обнаружил в Gatekeeper уязвимость под названием dylib hijacking. Вардл установил, что если приложение, даже будучи подписанным с помощью Developer ID, поставляется с внешними ресурсами в отдельной папке и обращается к этим ресурсам по относительной ссылке, злоумышленник может подменить эти ресурсы и спровоцировать выполнение вредоносного кода. Вардл указывает, что множество популярных приложений, включая некоторые приложения от Apple, могут быть эксплуатированы таким образом.

WWDC 706 (1)
Изображения здесь и ниже: WWDC 2016 – Session 706 – What’s New in Security

Gatekeeper Path Randomization была создана с целью устранить эту уявимость. Во время запуска приложения система монтирует пустой образ диска в случайном местоположении, копирует приложение туда и запускает его уже с образа. Таким образом, относительный путь к внешним ресурсам меняется и их выполнение становится невозможным.

WWDC 706 (2)

Кажется, что такой подход навредит работе большинства приложений. Если вы – разработчик, то наверняка спрашиваете себя И что мне теперь делать? Прятать все ресурсы внутрь App Bundle? Не обязательно. Дополнения в Gatekeeper не повлияют на следующие приложения:

  • Загруженные из Mac App Store
  • Ранее запускавшиеся пользователем
  • Вручную перемещенные пользователем в /Applications
  • Находящиеся в подписанных образах дисков
  • Установленные через Apple Instaler package

WWDC 706 (3)

Gatekeeper Path Randomization повлияет только на новые, загруженные из интернета приложения и на приложения с неподписанных образов. Поэтому, цитируя Session 706: Подписывайте то, что вы распространяете и не забывайте проверять подписи перед релизом.