Якщо підписання коду Mac підроблене, що може не вдатися?


11

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

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

  • Брандмауер OS X може не в змозі правильно встановити спеціальний підпис, через що на нього неодноразово з'являється запит "Ви хочете, щоб програма" [..] "приймала вхідні мережеві з'єднання?"

  • Програми, дозволені батьківським контролем, можуть більше не працювати?

  • Можливо, буде порушено доступ до брелка?

  • Деякі кажуть, що оновлення програмного забезпечення Apple може вийти з ладу. Якщо це правда, то мені цікаво, чи це насправді залежить від підпису кодового підпису, чи це буде викликано невідповідним хешем для всієї програми чи інформацією з файлів BOM .

Більше довідкової інформації нижче.


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

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

Підписання коду відноситься до ОС 9 або раніше, але поточна реалізація була введена в 10.5 Leopard. Ars Technica пише :

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

Цей приклад насправді висвітлює найбільш корисне застосування технології з точки зору споживача. Під час оновлення програми Mac OS X сьогодні [в 10.4 Tiger, AvB] користувачеві часто пропонується повторно перевірити, чи цей додаток має доступ до Keychain для отримання імен користувачів та паролів. Це здається гарною функцією безпеки, але все, що вона насправді - це навчити користувачів Mac сліпо клацати "Завжди дозволяти" кожного разу, коли воно з'являється. І справді, що робитиме середньому користувачеві, запускати виконувану програму через розбирач і вручну перевіряти, що код безпечний?

З іншого боку, підписана програма може математично довести, що це справді нова версія тієї самої програми від того самого постачальника, якій ви довіряли раніше. Результат - це закінчення діалогових вікон із проханням підтвердити вибір, безпеку якого у вас немає розумного способу перевірити.

Що стосується брандмауера в 10,5 леопарда, Apple пояснює :

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

[..]

Усі програми, що не входять до списку, які були цифрово підписані органом сертифікації, якому довіряє система (з метою підписання коду), можуть приймати вхідні з'єднання. Кожна заявка Apple в Леопарді підписана Apple, і їй дозволяється отримувати вхідні з'єднання. Якщо ви хочете відмовити у цифровій підписаній програмі, спочатку слід додати її до списку, а потім явно відмовити.

У 10.6 Snow Leopard остання робиться більш чіткою (і може бути відключена), оскільки "Автоматично дозволяти підписаному програмному забезпеченню отримувати вхідні з'єднання. Дозволяє програмному забезпеченню, підписаному дійсним сертифікаційним органом, надавати послуги, доступ до мережі".

Брандмауер Mac OS X 10.6: Автоматично дозволяти підписаному програмному забезпеченню отримувати вхідні з'єднання

(У 10.6 параметри 10.5.1 "Дозволити всі вхідні з'єднання", "Дозволити лише необхідні сервіси" та "Налаштувати доступ до певних служб і програм" перероблено на вибір "Блокувати всі вхідні з'єднання", або списку дозволених додатків та опцій "Автоматично дозволяти підписаному програмному забезпеченню отримувати вхідні з'єднання" та "Увімкнути режим невидимості". До оновлення 10.5.1 "Дозволити лише необхідні послуги" насправді називали "Блокувати всі вхідні з'єднання".)

Для додатків (Apple), які певним чином підписують оригінальний підпис, цей спеціальний підпис може якось не зберігатися, і, як відомо, він спричинив проблеми з налаштуваннями, mDNSResponder та racoon.


Я здогадуюсь, що у відповіді щупальця все сказано (і як би я не старався: зламання підписів ще навіть не показало мені попередження щодо доступу Keychain Access). Все-таки мені цікаво, чи хтось стикався з проблемами. Сподіваюсь, питання не надто довго читати ... ;-)
Арджан

доданий тег сертифіката
quack quixote

Ніцца: хто - то повторно підписав бета Safari 4 (з його вкладки зверху) , щоб зробити його сумісним з брелка: бачити коментарі по «petersconsult» в macosxhints.com/article.php?story=20090925131057394
Arjan

Відповіді:


1

Приклад того, коли підписання коду "порушить" додаток:

  • Keychain Access.app не дозволить вам переглядати паролі, якщо виявить, що вони були підроблені.

Джерело: Список розсилки Apple і нерегулярність Джахармі


Звичайно, тепер, коли ви це згадуєте, це додаток, який я мав би використати для своїх перших тестів! :-)
Ар’ян

3

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

EDIT: ось результат перевірки підпису мого коду для мого дока в 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
Arjan

Я додав результат після того, як вручну змінив док-станцію в Snow Leopard ...
щупальце

Ах, дурний. Поки що єдине, що я перевірив - це піктограма програми (вставивши нову піктограму через Finder's Get Info), а не будь-яку піктограму, яку використовує сама програма. Гаразд, підпис коду порушено точно. Коментар розробника Candybar для мене все ще трохи страшний, але Apple могла б у багатьох людей потрапити в неприємності при раптовій зміні поточних (не) ефектів.
Ар'ян

Добре тест полягає в тому, щоб змінити ресурси в додатку, орієнтованому на мережу, і побачити, чи припинення підписання зупиняє автоматичне проходження через брандмауер програми ...
Шукань

(Гммм, розробник CandyBar видалив цей коментар від MacUpdate 10 січня 2008 року. Кеш Google все одно показує це, але, очевидно, є нова версія для OS X 6.1, тому або проблема вирішена, або CandyBar хоче дозволити спати собакам лежати .. Припустимо, тоді проблем немає!)
Арджан

0

Дещо детальне пояснення підписання коду у Snow Leopard подано у огляді Snow Leopard від ars technica . Наскільки я можу сказати, порушення підпису коду насправді нічого не порушить. Однак це призведе до ненадійності додатків, а це означає, що потрібно перевірити більше своїх дій.


Це насправді огляд 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

Днями я ремонтував свої дозволи на диск (від Disk Utility) і отримав це попередження:

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

Отже, щось трапиться. Я не знаю, наскільки це важливо.


Цікаво, тим більше, що Apple перераховує це у "Mac OS X 10.5: Повідомлення про дозвіл на відновлення дискових утиліт, які ви можете сміливо ігнорувати" на support.apple.com/kb/TS1448 Жодного слова від Apple про те, як це було змінено і чому це не так " t важливо, хоча ... Чи codesign --verifyсправді зображений ламаний підпис?
Ар'ян

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.