web-dev-qa-db-ja.com

Macのコード署名が改ざんされた場合、何が失敗する可能性がありますか?

Macアプリケーションのデジタル署名が壊れた場合、どのような煩わしさや実際の問題が発生する可能性がありますか?

Mac上のアプリケーションはデジタル署名することができます。署名が何らかの理由で壊れている場合、いくつかのアプリケーションがそれに気付く可能性があることを私は知っています。しかし、これらがどれほど詳細に迷惑になるのか、実際に物事を壊すのかはわかりません。

  • OS Xファイアウォールがアドホック署名を正しく設定できない可能性があり、「アプリケーション '[..]'に着信ネットワーク接続を受け入れますか?」というプロンプトが繰り返し表示されます。

  • ペアレンタルコントロールで許可されているアプリケーションが実行されなくなる可能性がありますか?

  • キーチェーンアクセスが壊れている可能性がありますか?

  • Appleソフトウェアアップデートが失敗する可能性がある」と言う人もいます。trueの場合、これは実際にコード署名の署名に依存するのか、それともアプリケーション全体の一致しないハッシュや情報が原因であるのか疑問に思います。から BOMファイル

以下の背景情報。


コード署名の詳細は、次を使用して表示できます。

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

...これは次のようなものになります(ただし、notは変更について警告します):

[..]
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

コード署名はOS9以前に戻りますが、現在の実装 導入されました 10.5Leopardで。 Ars Technica 書き込み

コード署名は、暗号で検証可能なIDをコードのコレクションに結び付け、そのコードへの変更が検出されるようにします。関係者についての保証はありません。たとえば、Acme Inc.によって署名されたアプリケーションをダウンロードした場合、そのWebサイトから何かを最後にダウンロードしたときに、Acme Inc.であると主張する同じエンティティからのものであることを除いて、それについて何も証明できません。

この例では、実際に、消費者の観点からテクノロジーの最も有用なアプリケーションを強調しています。今日[10.4Tiger、AvB]でMac OS Xアプリケーションをアップグレードする場合、ユーザーは、このアプリケーションがユーザー名とパスワードを取得するためにキーチェーンにアクセスできることを再確認するように求められることがよくあります。これは優れたセキュリティ機能のように見えますが、実際に行うのは、表示されるたびに「常に許可」をクリックするようにMacユーザーをトレーニングすることだけです。そして実際、平均的なユーザーは何をし、逆アセンブラを介して実行可能ファイルを実行し、コードが安全であることを手動で確認しますか?

一方、署名されたアプリケーションは、それが過去に信頼を表明した同じベンダーの同じアプリケーションの新しいバージョンであることを数学的に証明できます。その結果、安全性を確認する合理的な方法がない選択を確認するように求めるダイアログボックスが終了します。

10.5 Leopardのファイアウォールの場合、Apple explains

このリストにアプリケーションを追加すると、Mac OS Xはアプリケーションにデジタル署名します(まだ署名されていない場合)。アプリケーションが後で変更された場合、アプリケーションへの着信ネットワーク接続を許可または拒否するように求められます。ほとんどのアプリケーションはそれ自体を変更しません。これは、変更を通知する安全機能です。

[..]

(コード署名の目的で)システムによって信頼されている認証局によってデジタル署名されたリストにないすべてのアプリケーションは、着信接続を受信できます。 LeopardのすべてのAppleアプリケーションはAppleによって署名されており、着信接続の受信が許可されています。デジタル署名されたアプリケーションを拒否する場合は、最初に追加する必要がありますリストに追加して、明示的に拒否します。

10.6 Snow Leopardでは、後者は「署名されたソフトウェアが着信接続を受信することを自動的に許可します。有効な認証局によって署名されたソフトウェアがネットワークからアクセスされるサービスを提供できるようにします」として、より明示的になります(無効にできます)。

Mac OS X 10.6 Firewall: Automatically allow signed software to receive incoming connections

(10.6では、10.5.1オプションの「すべての着信接続を許可する」、「必須サービスのみを許可する」、「特定のサービスとアプリケーションのアクセスを設定する」が、「すべての着信接続をブロックする」またはリストのいずれかの選択肢に改良されました。許可されるアプリケーションとオプションの一覧「署名されたソフトウェアが着信接続を受信することを自動的に許可する」および「ステルスモードを有効にする」 10.5.1更新 以前は、「必須サービスのみを許可する」は実際には「すべての着信をブロックする」と呼ばれていました接続」。)

どういうわけか元の署名が壊れている(Apple)アプリケーションの場合、このアドホック署名はどういうわけか永続化されない可能性があり、configd、mDNSResponder、およびracoonで 問題を引き起こした と知られています。

11
Arjan

コード署名がアプリケーションを「壊す」場所の例:

  • Keychain Access.appは、改ざんされていることを検出した場合、パスワードを表示することを許可しません。

出典: Appleメーリングリスト および Jaharmi's Irreality

1
Chealion

私が言えるのは、かなり多くの人が使用するアイコンカスタマイズアプリであるCandybarは、リソースファイルを変更するときに、少なくともFinderとDock(およびおそらく他のいくつかのコアシステムアプリケーション)のデジタル署名を壊しますが、これまでのところ何もありませんこのため、問題として報告されています。したがって、コアOSコンポーネントを使用した実際のサンプリングでは、それほど多くはありません。

編集:これは、SnowLeopardのDockのコード署名を確認した結果です。

⚛$ 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
3
The Tentacle

先日(ディスクユーティリティから)ディスクのアクセス許可を修復していましたが、次の警告が表示されました。

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

だから、何かが起こるでしょう。それがどれほど重要かはわかりません。

0
wfaulk

コード署名の現在の実装はかなり歯がなく、おそらくiPhone開発者の利益のために急いで出されました。うまくいけば、それは将来のある時点で必須になり、うまくいけば、それはその時までにはるかに簡単で安くなるでしょう。

0
Hasaan Chop

Snow Leopardでのコード署名の詳細な説明は、 arstechnicaのSnowLeopardレビュー に記載されています。私の知る限り、コード署名を破っても実際には何も破られません。ただし、アプリが信頼できなくなるため、より多くのアクションを検証する必要があります。

0
Peter Wagenet