Что заставляет подписанный код становиться «динамически недействительным»? - PullRequest
0 голосов
/ 28 апреля 2018

При подписывании приложения с помощью инструмента Apple codesign может возникнуть необходимость установить параметр -o kill:

Код с установленным флагом уничтожения умрет, когда он станет динамически недействительным.

Это соответствует константе kSecCodeSignatureForceKill «Всегда устанавливать флаг состояния kSecCodeStatusKill при запуске», что:

Указывает, что код хочет быть уничтожен (прекращен), если он когда-либо теряет свою действительность.

Звучит замечательно, но что это на самом деле значит?

Естественно, если бы «что-нибудь» нарушило целостность моего кода во время выполнения, я бы хотел, чтобы процесс был убит. Но что это за «что-то»? Будет ли этот флаг защищать от любых атак внедрения кода?

1 Ответ

0 голосов
/ 28 апреля 2018

Флаг -o означает именно то, что вы описали. Если подпись кода не соответствует содержимому пакета, который был подписан, то процесс уничтожается - просто так. По сути, это просто средство, препятствующее, сдерживающее или усложняющее для кого-то модификацию, внедрение, изменение и т. Д. Что-либо внутри подписанного содержимого пакета.

Будет ли этот флаг защищать от любых атак внедрения кода?

Определенно нет . Подписи кода полезны только в среде, вокруг которой строится их доверие. К сожалению, когда приложение «в дикой природе», все возможно, и не все среды построены на таком доверии. Кто-то, кто знает, как работают сигнатуры кода, может легко удалить или перекодировать что-то в считанные секунды, делая оригинальную подпись практически бесполезной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...