Если подделка кода Mac будет подделана, что может не получиться?

11

Какие неприятности или реальные проблемы могут возникнуть при нарушении цифровой подписи приложения Mac?

Приложения на Mac могут иметь цифровую подпись. Когда подпись как-то сломана, я знаю, что некоторые приложения могут заметить это. Но я не знаю, в каких деталях это будет просто раздражение или действительно сломает вещи:

  • Брандмауэр OS X может быть не в состоянии правильно установить специальную подпись, из-за чего неоднократно запрашивается «Хотите, чтобы приложение« [..] »принимало входящие сетевые подключения?»

  • Приложения, разрешенные Родительским контролем, могут больше не работать?

  • Доступ к брелку может быть нарушен?

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

Более подробная информация ниже.


Детали подписи кода могут быть показаны с помощью:

codesign --display -vv /Applications/iTunes.app/

... что приведет к следующему (но не предупредит об изменениях):

[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]

Подпись может быть проверена с помощью:

codesign --verify -vv /Applications/iTunes.app/

Что даст:

/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement

... или (даже при простом добавлении дополнительного файла в папку приложения ./Contents/Resources):

/Applications/iTunes.app/: a sealed resource is missing or invalid

... или (может быть, хуже, чем вышеупомянутое сообщение):

/Applications/iTunes.app/: code or signature modified

Подписание кода восходит к OS 9 или более ранней версии, но текущая реализация была представлена в 10.5 Leopard. Ars Technica пишет :

Подписание кода связывает криптографически проверяемую идентичность с набором кода и гарантирует, что обнаружены любые изменения в этом коде. О сторонах не делается никаких гарантий. Например, если вы загружаете приложение, подписанное Acme Inc., вы ничего не можете доказать, за исключением того, что оно было получено от того же лица, которое претендует на статус Acme Inc., когда вы в последний раз загружали что-либо с их веб-сайта.

Этот пример показывает наиболее полезное применение технологии с точки зрения потребителя. При обновлении приложения Mac OS X сегодня [в 10.4 Tiger, AvB] пользователю часто предлагается повторно подтвердить, что этому приложению разрешен доступ к связке ключей для получения имен пользователей и паролей. Это похоже на хорошую функцию безопасности, но все, что она на самом деле делает - это обучает пользователей Mac слепо нажимать «Всегда разрешать» каждый раз, когда оно появляется. И действительно, что обычный пользователь собирается сделать, запустить исполняемый файл через дизассемблер и вручную проверить, что код безопасен?

Подписанное приложение, с другой стороны, может математически доказать, что это действительно новая версия того же приложения от того же поставщика, которому вы выражали доверие в прошлом. Результатом является завершение диалоговых окон с просьбой подтвердить выбор, безопасность которого у вас нет разумного способа проверить.

Для брандмауэра в 10.5 Leopard Apple объясняет :

Когда вы добавляете приложение в этот список, Mac OS X ставит цифровую подпись на приложение (если оно еще не было подписано). Если приложение будет изменено позже, вам будет предложено разрешить или запретить входящие сетевые подключения к нему. Большинство приложений не изменяют себя, и это функция безопасности, которая уведомляет вас об изменениях.

[..]

Все приложения, отсутствующие в списке и имеющие цифровую подпись центра сертификации, которому доверяет система (для подписи кода), могут принимать входящие соединения. Каждое приложение Apple в Leopard подписано Apple и может принимать входящие соединения. Если вы хотите отклонить приложение с цифровой подписью, вы должны сначала добавить его в список, а затем явно отклонить.

В 10.6 Snow Leopard последнее становится более явным (и может быть отключено) как «Автоматически разрешать подписанному программному обеспечению принимать входящие соединения. Позволяет программному обеспечению, подписанному действующим центром сертификации, предоставлять услуги, доступные из сети».

Брандмауэр Mac OS X 10.6: автоматически разрешать подписанному программному обеспечению принимать входящие соединения

(В 10.6 параметры 10.5.1 «Разрешить все входящие подключения», «Разрешить только основные службы» и «Установить доступ для определенных служб и приложений» были изменены на выбор «Блокировать все входящие подключения» или список). разрешенных приложений и параметров «Автоматически разрешать подписанному программному обеспечению принимать входящие соединения» и «Включить скрытый режим». До обновления 10.5.1 «Разрешать только основные службы» фактически называлось «Блокировать все входящие подключения».)

Для приложений (Apple), у которых каким-то образом повреждена оригинальная подпись, эта специальная подпись может как-то не сохраняться и, как известно , вызывает проблемы для configd, mDNSResponder и racoon.

Арьян
источник
Я предполагаю, что ответ Щупальца говорит сам за себя (и как бы я ни старался: ломка подписей еще даже не показала мне предупреждения для доступа к брелку). Тем не менее, мне интересно, если кто-нибудь сталкивался с проблемами. Надеюсь, что вопрос не слишком длинный для чтения ... ;-)
Arjan
Добавлен тег сертификата
Quack Quixote
Приятно: кто-то подписал бета-версию Safari 4 (с вкладками вверху), чтобы сделать его совместимым с Keychain: см. Комментарии «petersconsult» на macosxhints.com/article.php?story=20090925131057394
Arjan

Ответы:

1

Пример того, как подписывание кода «сломает» приложение:

  • Связка ключей Access.app не позволит вам просматривать пароли, если обнаружит, что они были подделаны.

Источник: список рассылки Apple и нереальность Джахарми

Chealion
источник
Конечно, теперь, когда вы упомянули об этом, это приложение, которое я должен был использовать для моих самых первых тестов! :-)
Арьян
3

Что я могу вам сказать, так это Candybar, приложение для настройки значков, используемое довольно многими людьми, которое нарушает цифровую подпись, по крайней мере, в Finder и Dock (и, возможно, в некоторых других приложениях базовой системы), так как оно изменяет файлы ресурсов, но пока ничего было сообщено как проблема из-за этого. Так что выборочная проверка с использованием основных компонентов ОС скажет - не так много!

РЕДАКТИРОВАТЬ: вот результат проверки моей подписи кода для моего Dock в Snow Leopard:

⚛$ codesign --verify --verbose /System/Library/CoreServices/Dock.app/
/System/Library/CoreServices/Dock.app/: a sealed resource is missing or invalid
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-big.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/finder.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/frontline.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_large.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_medium.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-l.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-m.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-sm.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-xl.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashfull.png: resource modified
Щупальце
источник
Ага, я немного разберусь! Некоторые значки, измененные вручную , не нарушали подписи кода для некоторых других приложений. Сами создатели написали в 2008 году: что касается изменения значков приложений вручную, вы можете сделать это! В качестве предупреждения: если Apple включит подпись встроенного кода в будущем небольшом обновлении Mac OS X, ваши приложения просто не будут запускаться. Это то, чего мы пытаемся избежать, отключив эту функцию, пока мы не получим представление от Apple об их планах. - macupdate.com/info.php/id/8948?rord=mod
Арджан,
Я добавил результат после ручной модификации моего дока в Snow Leopard ...
The Tentacle
Ах, глупый. До сих пор я проверял только значок программы (путем вставки нового значка через Get Info в Finder), а не значок, используемый самой программой. Хорошо, подпись кода нарушена наверняка. Комментарий разработчика Candybar все еще немного пугает меня, но Apple может вызвать у многих людей неприятности при внезапном изменении текущих (не) эффектов.
Арьян
Ну, тест состоит в том, чтобы изменить ресурсы в приложении, обращенном к сети, и посмотреть, не нарушит ли подпись автоматический переход через брандмауэр приложения ...
Tentacle
(Хммм, разработчик CandyBar удалил этот комментарий от 10 января 2008 года из MacUpdate. Кэш Google все еще показывает это, но, очевидно, есть новая версия для OS X 6.1, поэтому либо проблема была решена, либо CandyBar хочет оставить спящих собак вранью .. «Давайте предположим, что проблем нет!»
Arjan
0

Несколько подробное объяснение подписи кода в Snow Leopard представлено в обзоре ars technica Snow Leopard . Насколько я могу сказать, нарушение подписи кода на самом деле ничего не сломает. Однако это приведет к тому, что приложения станут ненадежными, что означает необходимость проверки большего количества их действий.

Питер Вагенет
источник
Это на самом деле 10,5 леопардовый обзор. Тем не менее, одна хорошая цитата из обзора 10.6: «И давайте не будем забывать о технологиях« Mac OS X », которые мы узнали позже, были разработаны для iPhone и только что были анонсированы для Mac вначале (потому что iPhone все еще был секретом), как Core Animation и подписывание кода. " - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Арджан,
0

Я восстанавливал свои Разрешения на диск на днях (из Дисковой утилиты) и получил это предупреждение:

Warning: SUID file "System/.../ARDAgent" has been modified and will not be repaired.

Так что что-то случится. Я не знаю, насколько это важно.

wfaulk
источник
Интересно, особенно потому, что Apple перечисляет это в «Mac OS X 10.5: сообщения Дисковой утилиты о восстановлении разрешений на диске, которые вы можете игнорировать» на support.apple.com/kb/TS1448 От Apple нет ни слова о том, как это изменилось и почему это не так. не имеет значения, хотя ... codesign --verifyдействительно показывает сломанную подпись?
Арджан
0

Нынешняя реализация подписания кода довольно беззуба и, вероятно, была срочно выброшена за дверь в пользу разработчиков iPhone. Надеемся, что в будущем он станет обязательным, и, надеюсь, к тому времени станет намного проще и дешевле.

Хасан Чоп
источник