Entitlement ID
Entitlement ID (EID) — это право, позволяющее активировать приобретенную лицензию онлайн. В предыдущей методике лицензирования использовался код активации.
Можно ли использовать Entitlement ID (EID) на нескольких компьютерах?
Как правило, Entitlement можно использовать только один раз для активации, если только вы не вернули его.
Указания
многократная активация лицензии на один компьютер
Существующие лицензии, которые работают в сочетании с аппаратным ключом, можно активировать на 3 компьютерах. Это позволяет использовать лицензию в разных местах без процедур возврата. Подключите соответствующий аппаратный ключ к компьютеру, на котором вы хотите использовать лицензию.
Лицензии на один компьютер без аппаратного ключа могут использоваться только на одном компьютере!
Чтобы использовать лицензию на один компьютер на другом компьютере, ее необходимо перенести. Информацию об этом можно найти здесь.
Чтобы Entitlement ID (EID) можно было отправить по электронной почте и просмотреть в разделе загрузки, его можно запросить в этом разделе. Войдите в раздел загрузки и дополните свои контактные данные:
Deviating behavior
The eplan.de website design is being revised step-by-step. Therefore the behavior described here may deviate in individual languages on eplan.de.
In this case perform the following steps (only available in English):
С вашей помощью мы можем улучшить работу системы. Мы документируем ваши действия в Google Analytics, чтобы постоянно совершенствовать справочную систему (Дополнительная информация и возможности подачи возражений).
Статья, в которой я раскрываю три 0-day уязвимости в iOS и критикую bug bounty программу Apple
Все уязвимости имеют класс Information Disclosure, а именно получение чувствительной информации приложениями из App Store без запроса разрешений у пользователя, либо обход sandbox и получение такой информации, к которой у приложений в принципе не должно быть доступа. Я загрузил на GitHub код приложений, который я отправлял в Apple для демонстрации уязвимостей, его можно запустить на своих устройствах и посмотреть, приложения только получают данные и отображают их в UI.
Вот список уязвимостей вместе с данными, которые они могут получить:
Gamed 0-day (iOS 15.0)
Позволяет получить доступ к следующим данным:
e-mail аккаунта Apple ID, в который выполнен вход на устройстве и полное имя владельца этого Apple ID, а также authentication token, позволяющий отправлять запросы на сервера Apple от имени этого Apple ID (судя по всему ограничен только функциями, связанными с GameKit, я не проверял тщательно этот момент)
Доступ к содержимому следующих файлов для чтения (сейчас в iOS 15.0 доступен только первый, видимо, частично пофиксили):
Nehelper installed apps 0-day (iOS 15.0)
Позволяет проверить, установлено ли то или иное приложение на устройстве по bundle ID. В коде на GitHub содержится список самых популярных приложений, каждое из которых проверяется, после чего выдается список тех из них, что были найдены на устройстве.
Nehelper wifi info 0-day (iOS 15.0)
Незначительная уязвимость, позволяющая получить доступ к информации о точке доступа Wi-Fi, к которой в данный момент подключен устройство без наличия необходимого entitlement у приложения. Проверка на entitlement была добавлена в iOS 12, но ее можно легко обойти, правда для этого у приложения должен быть доступ к геолокации.
Analyticsd (исправлено в iOS 14.7)
Информация о пользовании устройством (количество раз, когда пользователь брал в руки устройство в разных контекстах, сколько пришло push-уведомлений, и как пользователь на них отреагировал)
Информация об экранном времени (сколько времени пользователь провел в каждом приложении с указанием Bundle ID этих приложений, а также сколько раз он открывал эти приложения)
Медицинская информация (пульс, число обнаруженных фибрилляций и нарушений сердечного ритма)
Метаданные из приложения Здоровье, связанные с отслеживанием менструального цикла, включая его продолжительность, а также возраст пользователя
Информация обо всех аксессуарах, которые подлючались к устройству (к примеру, AirPods) с указанием производителя, модели, версии прошивки и имен, которые пользователь присвоил этим аксессуарам
Информация о крашах приложений, включающая их Bundle ID и коды исключений, которые вызвали краш
Язык страниц, которые пользователь просматривал в приложении Safari
Данная уязвимость интересна тем, что Apple, после ее исправления, не указала ее в списке исправленных уязвимостей, сославшись на техническую ошибку, и пообещав указать ее в следующий раз. Тем не менее, ни в 14.7.1, ни в 14.8, ни в 15.0 она не появилась. Также мои последующие вопросы по этому поводу были проигнорированы. Что наводит на мысль о том, что Apple пытается утаить эту уязвимость, а возможно и тот факт, что они сами собирают все эти данные и используют их в неизвестных целях.
Вступление
Все уязвимости, о которых идет речь в этой статье являются логическими, то есть отсутствием различных проверок в привилегированных фоновых процессах, что приводит к тому, что любое приложение может к ним подключиться и получить конфиденциальные данные.
Gamed
А сейчас небольшое отступление. У Apple есть такое понятие как Private API. Оно подразумевает символы C, классы и методы Objective-C, которые присутствуют в бинарных файлах фреймворков, но которые отсутствуют в файлах заголовков SDK, предоставляемых Apple разработчикам. По правилам App Store, использование приватных API запрещено. При загрузке бинарного файла в App Store Connect происходит проверка на использование приватных API, и в случае обнаружения, бинарный файл не загружается. После чего на почту приходит такое письмо:
We identified one or more issues with a recent delivery for your app, [APP_NAME] 1.0 (1). Please correct the following issues, then upload again.
Best regards, The App Store Team
Nehelper installed apps
Здесь и в остальных уязвимостях, подверженные фоновые процессы используют вариант XPC с С API. Но, для удобства, код ниже написан на Swift. Данный сервис под названием com.apple.nehelper отвечает за работу с Network Extensions. В нем есть определенный метод, который получает на вход Bundle ID приложения, после чего, в зависимости от того, обнаружено ли приложение на устройстве, нам возвращается какой-то UUID или nil.
Nehelper wifi info
Analyticsd
29 апреля я сообщил об этой уязвимости в Apple.
3 июня я получил письмо от Apple, в котором было написано, что данная уязвимость будет устранена в следующем обновлении.
19 июля вышла iOS 14.7, но в списке исправленных узявимостей ее нет.
20 июля я написал письмо в Apple с целью разъяснить ситуацию.
23 июля приходит ответ с извинениями, словами о том, что это случилось из-за «processing issue», уверениями, что уязвимость будет указана в следующем обновлении и вопросом о том, как меня упомянуть в списке исправлений. В тот же день я ответил и сразу получил ответ с подтверждением.
26 июля вышла iOS 14.7.1, в списке исправленных узявимостей опять ничего.
13 сентября вышла iOS 14.8, в списке исправленных узявимостей опять ничего. В тот же день я написал письмо в Apple с выражением разочарования в программе Apple Security Bounty, с повторной просьбой прояснить ситуацию и предупреждением, что при отсутствии ответа, я буду вынужден публично раскрыть информацию обо всех уязвимостях, которые я им отправил.
20 сентября вышла iOS 15.0, в списке исправленных узявимостей опять ничего.
По состоянию на 24 сентября ответа я так и не получил, в связи с чем я публикую данную статью.
Я не знаю, по какой причине Apple не хочет публиковать информацию об этой уязвимости, но я уверен, что большинство пользователей даже не подозревают о том, сколько информации Apple собирает о них под видом аналитики. Также неизвестно, с какой целью эта информация используется и кому передается. В связи с этим особенно лицемерно выглядит их позиция о том, что они заботятся о конфиденциальности пользователей.
Я далеко не первый человек, который разочаровался в программе Apple Security Bounty, и я надеюсь, что мой опыт повлияет на решение багхантеров не сотрудничать с ними. Кому интересно почитать о негативном опыте других людей, список публикаций на эту тему есть в английской версии этой статьи.
25 сентября, ровно через 24 часа после этой публикации я получил ответ от Apple, цитирую:
We saw your blog post regarding this issue and your other reports. We apologize for the delay in responding to you.
We want to let you know that we are still investigating these issues and how we can address them to protect customers. Thank you again for taking the time to report these issues to us, we appreciate your assistance.
Please let us know if you have any questions.
UPD2: У меня нет возможности проверить, но джейлбрейк-разработчик утверждает, что у него получилось за один день написать tweak, который защищает от трех 0-day уязвимостей, описанных в статье, причем сделал это за один день.
UPD3: Я опубликовал следующий пост (пока только английская версия), где подробно расписал про метод скрытия факта использования С функций, являющихся private API, а также озвучил свои претензии к тому, как проходит ревью в App Store.
UPD4: 1 октября вышла iOS 15.0.1. Все три уязвимости до сих пор не исправлены.
UPD5: 11 октября вышла iOS 15.0.2. Уязвимость gamed исправлена без упоминания об этом в списке исправлений, остальные две уязвимости до сих пор не исправлены.
Перенос лицензии на один компьютер
Справка по лицензированию поможет вам как пользователю при активации, возврате и передаче лицензии на один компьютер для продукта EPLAN.
Если вы хотите использовать EPLAN на новом компьютере, вам нужно выполнить перенос лицензии. Перенос лицензии состоит из возврата лицензии на старом компьютере и активации этой же лицензии на новом.
1. Возврат лицензии на один компьютер
Возврат лицензии на один компьютер — с подключением к Интернету
Условия:
Возврат
Запускается процесс возврата, на экране появляется ползунок.
Производится подтверждение возврата.
Возврат лицензии на один компьютер — без подключения к Интернету
Условия:
1. Создание запроса на возврат (Revocation Request)
На компьютере без подключения к Интернету следует выполнить следующие шаги:
2. Создание файла разрешения (Permission Ticket)
На подключенном к Интернету компьютере следует выполнить следующие шаги:
В поле Revocation Request file отображается путь файла.
Запускается загрузка, на экране появляется ползунок.
3. Процедура возврата (Revocation Ticket)
На компьютере без подключения к Интернету следует выполнить следующие шаги:
В поле Permission Tickets file отображается путь файла.
Запускается процесс возврата, на экране появляется ползунок.
4. Подтверждение возврата (Upload Revocation Ticket)
На подключенном к Интернету компьютере следует выполнить следующие шаги:
В поле Revocation file отображается путь файла.
Запускается загрузка, на экране появляется ползунок.
Производится подтверждение возврата.
2. Активация лицензии на один компьютер
Активация лицензии на один компьютер — с подключением к Интернету
Условия:
Активировать
Первая установка
Запускается активация, на экране появляется ползунок.
Открывается диалоговое окно Активировать лицензию с подтверждением активации.
При имеющейся установке
Запускается активация, на экране появляется ползунок.
Сообщение — A new Entitlement ID (EID) was found for your license.
Пример
У вас есть новый Entitlement ID для EPLAN Electric P8 версии 2.9
Активируется новый Entitlement ID.
Устаревший Entitlement ID деактивируется.
После активации вы сможете использовать версии EPLAN Electric P8 с 2.5 по 2.9. Больше
Активируется устаревший Entitlement ID.
После активации вы сможете использовать только версии EPLAN Electric P8 с 2.4 по 2.8. Больше
Открывается диалоговое окно Активировать лицензию с подтверждением активации.
Активация лицензии на один компьютер — без подключения к Интернету
Условия:
1. Создание запроса на активацию (Activation Request)
На компьютере без подключения к Интернету следует выполнить следующие шаги:
2. Создание файла лицензирования
На подключенном к Интернету компьютере следует выполнить следующие шаги:
В поле Activation Request file отображается путь файла.
Запускается активация, на экране появляется ползунок.
Сообщение — A new Entitlement ID (EID) was found for your license.
Пример
У вас есть новый Entitlement ID для EPLAN Electric P8 версии 2.9
Активируется новый Entitlement ID.
Устаревший Entitlement ID деактивируется.
После активации вы сможете использовать версии EPLAN Electric P8 с 2.5 по 2.9. Больше
Активируется устаревший Entitlement ID.
После активации вы сможете использовать только версии EPLAN Electric P8 с 2.4 по 2.8. Больше
Запускается активация, на экране появляется ползунок.
3a. Лицензирование при первой установке
На компьютере без подключения к Интернету следует выполнить следующие шаги:
Открывается диалоговое окно Импортировать лицензию с подтверждением активации.
3b. Лицензирование при имеющейся установке
На компьютере без подключения к Интернету следует выполнить следующие шаги:
Открывается диалоговое окно Импортировать лицензию с подтверждением активации.
С вашей помощью мы можем улучшить работу системы. Мы документируем ваши действия в Google Analytics, чтобы постоянно совершенствовать справочную систему (Дополнительная информация и возможности подачи возражений).
Кроссплатформенное приложение на Qt: Mac App Store
После завершения разработки под OS X может остаться ощущение незавершенности — для полного счастья хотелось бы видеть свое приложение в каталоге, тем более, что это, пожалуй, лучшая площадка для продажи десктопных приложений. На эту тему есть статья времен Qt 4.8 в официальном блоге, и еще более старая на хабре. К счастью, больше нет необходимости пересобирать Qt, однако с приходом OS X 10.9 некоторые баги стали критичными, приходится выкручиваться.
Не буду описывать тривиальные и давно уже разобранные вещи вроде получения статуса разработчика, создания provision profile, регистрации нового приложения в iTunes Connect. Будем считать, что все это уже настроено, программа готова, и только ждет своего часа. Мне не хотелось задействовать XCode, потому из дополнительного ПО нам потребуется Application Loader, который можно загрузить так. В качестве примеров приведены файлы нашего органайзера для студентов iStodo, так получается менее абстрактно и более приближено к реальности.
Итак, для начала нужны три дополнительных файла: иконка*, Info.plist, Entitlements.plist
Info.plist
Этот файл содержит всю информацию о приложении (таблица рекомендуемых полей тут).
Вот минимальный каркас:
Для того, чтобы нестандартный plist автоматически добавлялся в бандл при каждой сборке, нужно добавить в файл проекта:
Entitlements.plist
Программы, устанавливаемые через App Store, будут работать в песочнице, для этого необходимо произвести некоторые приготовления. По правилам, нам, через QDesktopServices::storageLocation(), доступна папка вида имя_компании/имя_приложения (как это указано в iTunes Connect), потому нужно задать эти параметры явно:
Entitlements же, по сути, — файл разрешений, и те функции, которые в нем не указаны, будут заблокированы. Например, если мы хотим делать что-нибудь с сетью, следует установить флаг com.apple.security.network.client, и т.д. Возможные ключи с описаниями тут.
Ну и пример готового файла:
Публикация
Итак, можно выделить следующие ключевые моменты:
Скопировать
Для того, чтобы программа могла запускаться не только на системах с установленным Qt SDK, нужно запустить специализированную утилиту — macdeployqt, которая скопирует все необходимые плагины и фреймворки в бандл приложения. К сожалению, из-за ошибки в этой утилите не копируются файлы Info.plist для фреймворков, что не является проблемой для работы, но без них не получится корректно подписать приложение. Нужно заметить, что если программа использует модуль QtSql, будут скопированы все доступные драйверы. Все бы ничего, но из-за libqsqlodbc.dylib приложение отклоняют с формулировкой «За использование приватных методов», а из-за libqsqlpsql.dylib ругаются на использование устаревшей библиотеки. Чтобы не искушать судьбу, перед публикацией стоит снести ненужные драйверы, заодно немного уменьшить размер пакета. Также для уменьшения размера можно удалить лишние плагины форматов изображений, и т.д.
Подписать
Начиная с OS X 10.9, нужно обязательно подписывать не только приложение, но и все фреймворки, плагины. Не смотря на то, что в Technical Note 2206 написано, что правильным будет подписывать не папку фреймворка, а каталог версии, на практике сделать это не получается, да и нареканий при ревью не возникло.
Примеры команд:
После подписывания всех библиотек приходит очередь приложения целиком, как раз тут и используется файл Entitlements:
Проверяем, все ли прошло гладко:
Упаковать
Тут все делается одной командой, которая, впрочем, изменилась с момента написания официального мануала:
Для пробы можно сразу же запустить получившийся пакет:
Залить в iTunes Connect
Скрипт
Активация лицензии на один компьютер — с подключением к Интернету
Справка по лицензированию поможет вам как пользователю при активации, возврате и передаче лицензии на один компьютер для продукта EPLAN.
Важно!
Повторное использование активированной лицензии
Активированная лицензия (EID) привязана к информации о программном и аппаратном обеспечении. Если вы вносите изменения на своем компьютере или хотите активировать лицензию на другом компьютере, сначала необходимо вернуть лицензию (EID)!
Информацию о том, в каких случаях это необходимо в первую очередь, см. здесь.
Условия:
Активировать
Первая установка
Запускается активация, на экране появляется ползунок.
Открывается диалоговое окно Активировать лицензию с подтверждением активации.
При имеющейся установке
Запускается активация, на экране появляется ползунок.
Сообщение — A new Entitlement ID (EID) was found for your license.
Пример
У вас есть новый Entitlement ID для EPLAN Electric P8 версии 2.9
Активируется новый Entitlement ID.
Устаревший Entitlement ID деактивируется.
После активации вы сможете использовать версии EPLAN Electric P8 с 2.5 по 2.9. Больше
Активируется устаревший Entitlement ID.
После активации вы сможете использовать только версии EPLAN Electric P8 с 2.4 по 2.8. Больше
Открывается диалоговое окно Активировать лицензию с подтверждением активации.
Указания
многократная активация лицензии на один компьютер
Существующие лицензии, которые работают в сочетании с аппаратным ключом, можно активировать на 3 компьютерах. Это позволяет использовать лицензию в разных местах без процедур возврата. Подключите соответствующий аппаратный ключ к компьютеру, на котором вы хотите использовать лицензию.
Лицензии на один компьютер без аппаратного ключа могут использоваться только на одном компьютере!
Чтобы использовать лицензию на один компьютер на другом компьютере, ее необходимо перенести. Информацию об этом можно найти здесь.
С вашей помощью мы можем улучшить работу системы. Мы документируем ваши действия в Google Analytics, чтобы постоянно совершенствовать справочную систему (Дополнительная информация и возможности подачи возражений).

Возврат лицензии на один компьютер — с подключением к Интернету


