Jika penandatanganan kode Mac dirusak, apa yang mungkin gagal?

11

Apa gangguan atau masalah nyata yang dapat terjadi ketika tanda tangan digital dari aplikasi Mac rusak?

Aplikasi pada Mac dapat ditandatangani secara digital. Ketika tanda tangan entah bagaimana rusak, saya tahu beberapa aplikasi mungkin memperhatikan itu. Tapi saya tidak tahu secara detail ini hanya gangguan atau benar-benar merusak:

  • Firewall OS X mungkin tidak dapat mengatur tanda tangan ad hoc dengan benar, menyebabkan seseorang diminta berulang kali, "Apakah Anda ingin aplikasi '[..]' menerima koneksi jaringan yang masuk?"

  • Aplikasi yang diizinkan oleh Kontrol Orang Tua mungkin tidak lagi berjalan?

  • Akses Keychain mungkin rusak?

  • Beberapa mengatakan pembaruan perangkat lunak Apple mungkin gagal. Jika benar, maka saya ingin tahu apakah ini memang tergantung pada tanda tangan Penandatanganan Kode, atau akan disebabkan oleh beberapa hash yang tidak cocok untuk seluruh aplikasi, atau informasi dari file BOM .

Informasi latar belakang lainnya di bawah ini.


Detail penandatanganan kode dapat ditampilkan menggunakan:

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

... yang akan menghasilkan sesuatu seperti berikut (tetapi tidak akan memperingatkan tentang modifikasi):

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

Tanda tangan dapat divalidasi menggunakan:

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

Yang akan menghasilkan:

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

... atau (bahkan ketika hanya menaruh beberapa file tambahan di folder aplikasi ./Contents/Resources):

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

... atau (mungkin lebih buruk dari pesan di atas):

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

Penandatanganan kode kembali ke OS 9 atau sebelumnya, tetapi implementasi saat ini diperkenalkan di 10.5 Leopard. Ars Technica menulis :

Penandatanganan kode mengikat identitas yang dapat diverifikasi secara kriptografis ke kumpulan kode dan memastikan bahwa setiap modifikasi pada kode itu terdeteksi. Tidak ada jaminan dibuat tentang pihak-pihak yang terlibat. Misalnya, jika Anda mengunduh aplikasi yang ditandatangani oleh Acme Inc., Anda tidak dapat membuktikan apa-apa tentang hal itu kecuali bahwa itu berasal dari entitas yang sama yang mengklaim sebagai Acme Inc. terakhir kali Anda mengunduh sesuatu dari situs web mereka.

Contoh ini sebenarnya menyoroti aplikasi teknologi yang paling berguna dari perspektif konsumen. Saat memutakhirkan aplikasi Mac OS X hari ini [di 10.4 Tiger, AvB], pengguna sering diminta untuk memverifikasi ulang bahwa aplikasi ini diizinkan untuk mengakses Keychain untuk mengambil nama pengguna dan kata sandi. Ini sepertinya fitur keamanan yang bagus, tetapi yang dilakukan adalah melatih pengguna Mac untuk mengklik "Selalu Izinkan" setiap kali muncul. Dan sungguh, apa yang akan dilakukan rata-rata pengguna, menjalankan executable melalui disassembler dan secara manual memverifikasi bahwa kode itu aman?

Aplikasi yang ditandatangani, di sisi lain, secara matematis dapat membuktikan bahwa itu memang versi baru dari aplikasi yang sama dari vendor yang sama yang sebelumnya Anda percayai. Hasilnya adalah kotak dialog yang berakhir meminta Anda untuk mengkonfirmasi pilihan yang keselamatannya Anda tidak memiliki cara yang masuk akal untuk memverifikasi.

Untuk firewall di 10.5 Leopard, Apple menjelaskan :

Saat Anda menambahkan aplikasi ke daftar ini, Mac OS X menandatangani aplikasi secara digital (jika belum ditandatangani). Jika aplikasi tersebut kemudian dimodifikasi, Anda akan diminta untuk mengizinkan atau menolak koneksi jaringan yang masuk. Sebagian besar aplikasi tidak mengubah diri mereka sendiri, dan ini adalah fitur keamanan yang memberi tahu Anda tentang perubahan tersebut.

[..]

Semua aplikasi yang tidak ada dalam daftar yang telah ditandatangani secara digital oleh Otoritas Sertifikat yang dipercaya oleh sistem (untuk tujuan penandatanganan kode) diizinkan untuk menerima koneksi yang masuk. Setiap aplikasi Apple di Leopard telah ditandatangani oleh Apple dan diizinkan untuk menerima koneksi masuk. Jika Anda ingin menolak aplikasi yang ditandatangani secara digital, Anda harus terlebih dahulu menambahkannya ke daftar dan kemudian secara eksplisit menolaknya.

Dalam Snow Leopard 10.6, yang terakhir dibuat lebih eksplisit (dan dapat dinonaktifkan) sebagai "Secara otomatis mengizinkan perangkat lunak yang ditandatangani untuk menerima koneksi masuk. Memungkinkan perangkat lunak yang ditandatangani oleh otoritas sertifikat yang sah untuk menyediakan layanan yang diakses dari jaringan".

Mac OS X 10.6 Firewall: Secara otomatis mengizinkan perangkat lunak yang ditandatangani untuk menerima koneksi yang masuk

(Dalam 10.6, opsi 10.5.1 "Izinkan semua koneksi masuk", "Hanya izinkan layanan penting" dan "Tetapkan akses untuk layanan dan aplikasi tertentu" telah diubah menjadi pilihan untuk "Blokir semua koneksi masuk", atau daftar dari aplikasi dan opsi yang diizinkan "Secara otomatis mengizinkan perangkat lunak yang ditandatangani untuk menerima koneksi masuk" dan "Aktifkan mode siluman". Sebelum pembaruan 10.5.1 , "Izinkan hanya layanan penting" yang sebenarnya disebut "Blokir semua koneksi masuk".)

Untuk aplikasi (Apple) yang entah bagaimana memiliki tanda tangan aslinya rusak, tanda tangan ad hoc ini entah bagaimana mungkin tidak bertahan, dan diketahui telah menyebabkan masalah bagi configd, mDNSResponder dan racoon.

Arjan
sumber
Saya kira jawaban The Tentacle mengatakan semuanya (dan tidak peduli seberapa keras saya mencoba: melanggar tanda tangan bahkan belum menunjukkan saya peringatan untuk Akses Keychain). Namun, saya bertanya-tanya apakah ada yang mengalami masalah. Semoga pertanyaannya tidak terlalu lama untuk dibaca ... ;-)
Arjan
menambahkan tag sertifikat
quack quixote
Nice: seseorang menandatangani ulang Safari 4 beta (dengan tab di atas) untuk membuatnya kompatibel dengan Keychain: lihat komentar oleh "petersconsult" di macosxhints.com/article.php?story=20090925131057394
Arjan

Jawaban:

1

Contoh penandatanganan kode akan 'memecah' aplikasi:

  • Keychain Access.app tidak akan memungkinkan Anda untuk melihat kata sandi jika terdeteksi telah dirusak.

Sumber: Daftar Mailing Apple dan Irreality Jaharmi

Chealion
sumber
Tentu saja, sekarang setelah Anda menyebutkannya, ini adalah aplikasi yang seharusnya saya gunakan untuk tes pertama saya! :-)
Arjan
3

Apa yang dapat saya katakan adalah Candybar, aplikasi penyesuaian ikon yang digunakan oleh cukup banyak orang, memecah tanda tangan digital dari setidaknya Finder dan Dock (dan mungkin beberapa aplikasi sistem inti lainnya) karena ia mengubah file sumber daya, dan sejauh ini tidak ada telah dilaporkan sebagai masalah karena ini. Jadi pengambilan sampel in-the-wild menggunakan komponen OS inti akan mengatakan - tidak banyak!

EDIT: di sini adalah hasil dari memeriksa tanda tangan kode saya untuk Dock saya di 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
Tentakel
sumber
Aha, aku akan menyelidiki itu sedikit! Beberapa ikon yang diubah secara manual tidak memecahkan penandatanganan kode untuk beberapa aplikasi lain. Pembuatnya sendiri menulis pada tahun 2008: Adapun untuk mengubah ikon aplikasi Anda dengan tangan, Anda dipersilakan untuk melakukannya! Sebagai peringatan: jika Apple mengaktifkan kode bawaan masuk dalam pembaruan kecil Mac OS X di masa depan, aplikasi Anda tidak akan lagi diluncurkan. Inilah yang kami coba hindari dengan menonaktifkan fitur itu hingga kami memahami rencana mereka dari Apple. - macupdate.com/info.php/id/8948?rord=mod
Arjan
Saya telah menambahkan hasilnya setelah memodifikasi sendiri dok saya di Snow Leopard ...
The Tentacle
Ah, bodoh. Sejauh ini satu-satunya yang saya uji adalah ikon program (dengan menempelkan ikon baru melalui Finder's Get Info), bukan ikon apa pun seperti yang digunakan oleh program itu sendiri. Ok, penandatanganan kode pasti rusak. Komentar pengembang Candybar masih agak menakutkan bagi saya, tetapi Apple akan membuat banyak orang mendapat masalah ketika tiba-tiba mengubah efek saat ini (non-).
Arjan
Nah tesnya adalah untuk memodifikasi sumber daya di aplikasi yang menghadap jaringan dan melihat apakah melanggar penandatanganan menghentikan passthrough otomatis dari aplikasi firewall ...
The Tentacle
(Hmmm, pengembang CandyBar telah menghapus komentar 10 Januari 2008 dari MacUpdate. Cache Google masih menunjukkannya, tetapi tampaknya ada versi baru untuk OS X 6.1 sehingga masalah telah terpecahkan, atau CandyBar ingin membiarkan anjing tidur berbaring .. .? Mari kita asumsikan tidak ada masalah kalau begitu!)
Arjan
0

Penjelasan agak rinci tentang penandatanganan kode di Snow Leopard disediakan dalam ulasan Snow Leopard ars technica . Sejauh yang saya tahu, melanggar penandatanganan kode tidak akan merusak apa pun. Namun, itu akan menyebabkan aplikasi menjadi tidak dipercaya yang berarti harus memverifikasi lebih banyak tindakan mereka.

Peter Wagenet
sumber
Sebenarnya ini adalah review 10.5 Leopard. Satu kutipan yang bagus dari tinjauan 10.6: "Dan jangan lupa" Mac OS X "teknologi yang kita pelajari kemudian dikembangkan untuk iPhone dan kebetulan diumumkan untuk Mac terlebih dahulu (karena iPhone masih rahasia), seperti Core Animation dan penandatanganan kode. " - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan
0

Saya sedang memperbaiki Izin Disk saya tempo hari (dari Disk Utility), dan mendapat peringatan ini:

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

Jadi ada sesuatu yang akan terjadi. Saya tidak tahu seberapa penting itu.

wfaulk
sumber
Menarik, terutama karena Apple mencantumkan ini di "Mac OS X 10.5: Pesan Perbaikan Disk Disk Utility yang dapat Anda abaikan dengan aman" di support.apple.com/kb/TS1448 Tidak ada kata dari Apple tentang bagaimana ini diubah dan mengapa tidak Tidak masalah ... Apakah codesign --verifymemang menunjukkan tanda tangan yang rusak?
Arjan
0

Implementasi penandatanganan kode saat ini cukup ompong dan mungkin bergegas keluar pintu untuk kepentingan pengembang iPhone. Mudah-mudahan itu akan menjadi wajib di beberapa titik di masa depan, dan mudah-mudahan itu akan menjadi jauh lebih mudah dan lebih murah pada saat itu juga.

Hasaan Chop
sumber