Проверка уязвимости Masque в iOS

в 16:54, , рубрики: Песочница, метки: , ,

Сегодня ночью была опубликована статья, относящаяся к т. н. «Masque» уязвимости в iOS. Выдержка из статьи:

«Уязвимость позволяет установить вредоносное приложение поверх уже существующего, причем это новое приложение получит доступ ко всем файлам предыдущего. Это при условии того, что устанавливаемое приложение будет иметь тот же самый идентификатор «bundle identifier», который iOS & OS X используют для идентификации приложений на уровне ОС, например, при доставке им обновлений. Уязвимости подвержены все версии iOS начиная с 7.1.1, включая, последнюю iOS 8.1.1 beta.»

Будучи знакомым с Enterprise сертификатами, мне захотелось непременно опровергнуть/доказать настоящий факт.

Итак, что известно про Enterprise лицензию:

1. Выдается исключительно компаниям (не частным лицам, подробная информация);

2. Для получения Enterprise лицензии необходимо предоставить в Apple очень серьезный набор документов. Так что указать несуществующую компанию не получится;
3. Enterprise лицензии выдаются исключительно для внутреннего использования. То, что таким способом распространяются некоторые приложения — риск компании быть исключенной из iOS Developer Enterprise Program;

4. Установка приложения с сайта возможна через файл манифест и только через HTTPS;

5. При установке приложения, подписанного Enterprise лицензией, пользователю выводится сообщение «Вы действительно хотите установить приложение «App_Name», подписанное сертификатом «Company_Name»?». Где Company_Name берется из сертификата.

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

Чтобы подписать приложение, нужно создать Provisioning Profiles:

image

Следующим шагом указываем App ID:

image

Но для того, чтобы его указать, необходимо этот App IDсоздать:

image

На изображении видно, что при создании App ID с идентификатором «bundle identifier», схожим с другим приложением, вызывается ошибка.

Итого

Повторить уязвимость мне не удалось, так как получить Provisioning Profiles можно только с App ID, который в свою очередь не возможно создать с уже зарегистрированным «bundle identifier». А без Provisioning Profiles мы не сможем подписать приложение.

Если уязвимость была на уровне создания App ID (в чем я сомневаюсь, ибо это изначально уникальный идентификатор), то она уже закрыта. Скорее всего, уязвимость не такая банальная, как её обрисовали для публики. Ваш покорный слуга попытается воспроизвести эту уязвимость и в скором времени доложит об этом.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js