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

7939
Arjan

Какие неприятности или реальные проблемы могут возникнуть при нарушении цифровой подписи приложения 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.

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

5 ответов на вопрос

3
The Tentacle

Что я могу вам сказать, так это 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 представление о своих планах. * - http://www.macupdate.com/info.php/id/8948?rord=mod Arjan 15 лет назад 0
Я добавил результат после ручной модификации моего дока в Snow Leopard ... The Tentacle 15 лет назад 0
Ах, глупый. До сих пор я проверял только * значок программы * (вставляя новый значок через Get Info в Finder), а не какой-либо значок, используемый самой программой. Хорошо, подпись кода нарушена наверняка. Комментарий разработчика Candybar все еще немного пугает меня, но Apple может вызвать у многих людей неприятности, когда внезапно изменит текущие (не) эффекты. Arjan 15 лет назад 0
Ну, тест состоит в том, чтобы изменить ресурсы в сетевом приложении и посмотреть, не нарушит ли подпись автоматический переход через брандмауэр приложения ... The Tentacle 15 лет назад 0
(Хммм, разработчик CandyBar удалил этот комментарий от 10 января 2008 года из MacUpdate. Кэш Google все еще показывает это, но, очевидно, есть новая версия для OS X 6.1, поэтому либо проблема была решена, либо CandyBar хочет оставить спящих собак лгать .. Допустим, проблем нет!) Arjan 15 лет назад 0
1
Chealion

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

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

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

Конечно, теперь, когда вы упомянули об этом, это приложение, которое я * должен * использовать для моих самых первых тестов! :-) Arjan 15 лет назад 0
0
Peter Wagenet

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

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

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

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

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

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

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

Похожие вопросы