Nếu ký mã Mac bị giả mạo, điều gì có thể thất bại?


11

Những phiền toái hoặc vấn đề thực sự có thể xảy ra khi chữ ký số của ứng dụng Mac bị hỏng?

Các ứng dụng trên máy Mac có thể được ký điện tử. Khi chữ ký bị phá vỡ bằng cách nào đó, tôi biết một vài ứng dụng có thể nhận thấy điều đó. Nhưng tôi không biết chi tiết nào đây sẽ chỉ là những phiền toái hoặc sẽ thực sự phá vỡ mọi thứ:

  • Tường lửa OS X có thể không thể đặt chính xác chữ ký ad hoc, khiến người ta liên tục nhắc nhở "Bạn có muốn ứng dụng '[..]' chấp nhận kết nối mạng đến không?"

  • Các ứng dụng được Parental Control cho phép có thể không còn chạy?

  • Keychain Access có thể bị hỏng?

  • Một số người nói rằng cập nhật phần mềm của Apple có thể thất bại. Nếu đúng, thì tôi tự hỏi liệu điều này thực sự phụ thuộc vào chữ ký Ký mã, hoặc sẽ do một số hàm băm không khớp cho toàn bộ ứng dụng hoặc thông tin từ các tệp BOM .

Thêm thông tin cơ bản dưới đây.


Chi tiết ký mã có thể được hiển thị bằng cách sử dụng:

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

... sẽ mang lại kết quả như sau (nhưng sẽ không cảnh báo về sửa đổi):

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

Chữ ký có thể được xác nhận bằng cách sử dụng:

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

Mà sẽ mang lại:

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

... hoặc (ngay cả khi chỉ cần đặt một số tệp bổ sung vào thư mục ./Contents/Resource của ứng dụng):

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

... Hoặc (có thể tệ hơn thông báo trên):

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

Việc ký mã quay trở lại OS 9 hoặc sớm hơn, nhưng việc triển khai hiện tại đã được giới thiệu trong 10.5 Leopard. Ars Technica viết :

Việc ký mã liên kết một danh tính có thể xác minh bằng mật mã với một bộ sưu tập mã và đảm bảo rằng bất kỳ sửa đổi nào đối với mã đó đều được phát hiện. Không có đảm bảo được thực hiện về các bên liên quan. Ví dụ: nếu bạn tải xuống một ứng dụng có chữ ký của Acme Inc., bạn không thể chứng minh được gì về nó ngoại trừ việc nó đến từ cùng một thực thể tự xưng là Acme Inc. lần cuối bạn tải xuống một cái gì đó từ trang web của họ.

Ví dụ này thực sự làm nổi bật ứng dụng hữu ích nhất của công nghệ từ góc độ của người tiêu dùng. Khi nâng cấp ứng dụng Mac OS X ngay hôm nay [trong 10,4 Tiger, AvB], người dùng thường được nhắc xác minh lại rằng ứng dụng này được phép truy cập Keychain để lấy tên người dùng và mật khẩu. Đây có vẻ như là một tính năng bảo mật tốt, nhưng tất cả những gì nó thực sự làm là đào tạo người dùng Mac bấm mù "Luôn cho phép" mỗi khi nó xuất hiện. Và thực sự, người dùng trung bình sẽ làm gì, chạy chương trình thực thi thông qua trình phân tách và xác minh thủ công rằng mã đó có an toàn không?

Mặt khác, một ứng dụng đã ký có thể chứng minh một cách toán học rằng đó thực sự là một phiên bản mới của cùng một ứng dụng từ cùng một nhà cung cấp mà bạn đã bày tỏ sự tin tưởng trong quá khứ. Kết quả là kết thúc hộp thoại yêu cầu bạn xác nhận lựa chọn mà bạn không có cách nào hợp lý để xác minh.

Đối với tường lửa trong 10.5 Leopard, Apple giải thích :

Khi bạn thêm một ứng dụng vào danh sách này, Mac OS X sẽ ký điện tử cho ứng dụng đó (nếu nó chưa được ký). Nếu ứng dụng được sửa đổi sau này, bạn sẽ được nhắc cho phép hoặc từ chối các kết nối mạng đến với nó. Hầu hết các ứng dụng không tự sửa đổi và đây là một tính năng an toàn thông báo cho bạn về sự thay đổi.

[..]

Tất cả các ứng dụng không có trong danh sách đã được ký bởi kỹ thuật số bởi Tổ chức chứng nhận được hệ thống tin cậy (cho mục đích ký mã) được phép nhận các kết nối đến. Mọi ứng dụng của Apple trong Leopard đều được Apple ký và được phép nhận các kết nối đến. Nếu bạn muốn từ chối một ứng dụng được ký kỹ thuật số, trước tiên bạn nên thêm nó vào danh sách và sau đó từ chối rõ ràng.

Trong 10.6 Snow Leopard, phần sau được trình bày rõ ràng hơn (và có thể bị vô hiệu hóa) là "Tự động cho phép phần mềm đã ký nhận các kết nối đến. Cho phép phần mềm được ký bởi cơ quan chứng nhận hợp lệ để cung cấp dịch vụ được truy cập từ mạng".

Tường lửa Mac OS X 10.6: Tự động cho phép phần mềm đã ký nhận các kết nối đến

(Trong 10.6, các tùy chọn 10.5.1 "Cho phép tất cả các kết nối đến", "Chỉ cho phép các dịch vụ thiết yếu" và "Đặt quyền truy cập cho các dịch vụ và ứng dụng cụ thể" đã được cải tiến thành lựa chọn cho "Chặn tất cả các kết nối đến" hoặc danh sách trong số các ứng dụng và tùy chọn được phép "Tự động cho phép phần mềm đã ký nhận kết nối đến" và "Bật chế độ ẩn". Trước bản cập nhật 10.5.1 , "Chỉ cho phép các dịch vụ thiết yếu" thực sự được gọi là "Chặn tất cả các kết nối đến".)

Đối với các ứng dụng (Apple) bằng cách nào đó có chữ ký gốc bị hỏng, chữ ký ad hoc này bằng cách nào đó có thể không được duy trì và được biết là đã gây rắc rối cho configd, mDNSResponder và racoon.


Tôi đoán câu trả lời của The Xúc tu đã nói lên tất cả (và dù tôi có cố gắng thế nào: việc phá vỡ chữ ký thậm chí còn không cho tôi thấy một cảnh báo nào cho Truy cập Keychain). Tuy nhiên, tôi tự hỏi nếu có ai gặp phải vấn đề. Hy vọng câu hỏi không quá dài để đọc ... ;-)
Arjan

đã thêm thẻ chứng chỉ
quack quixote

Nice: một người nào đó tái ký beta Safari 4 (với các tab của nó trên đầu trang) để làm cho nó tương thích với Keychain: xem các ý kiến của "petersconsult" tại macosxhints.com/article.php?story=20090925131057394
Arjan

Câu trả lời:


1

Một ví dụ về nơi ký mã sẽ 'phá vỡ' một ứng dụng:

  • Keychain Access.app sẽ không cho phép bạn xem mật khẩu nếu phát hiện ra nó đã bị giả mạo.

Nguồn: Danh sách gửi thư của Apple và tính phi thực tế của Jaharmi


Tất nhiên, bây giờ bạn đề cập đến nó, đây là ứng dụng tôi nên sử dụng cho các thử nghiệm đầu tiên của mình! :-)
Arjan

3

Những gì tôi có thể nói với bạn là Candybar, ứng dụng tùy biến biểu tượng được sử dụng bởi khá nhiều người, phá vỡ chữ ký số của ít nhất Finder và Dock (và có lẽ một số ứng dụng hệ thống cốt lõi khác) vì nó thay đổi các tệp tài nguyên, và cho đến nay vẫn chưa có gì đã được báo cáo là một vấn đề vì điều này. Vì vậy, một mẫu tự nhiên sử dụng các thành phần hệ điều hành cốt lõi sẽ nói - không nhiều!

EDIT: đây là kết quả của việc kiểm tra chữ ký mã của tôi cho Dock của tôi trong 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

Aha, tôi sẽ điều tra một chút! Một số nhãn hiệu thay đổi các biểu tượng đã không phá vỡ ký mã cho một số ứng dụng khác. Các nhà sản xuất đã viết vào năm 2008: Đối với việc thay đổi biểu tượng ứng dụng của bạn bằng tay, bạn rất sẵn lòng làm điều đó! Như một cảnh báo: nếu Apple cho phép đăng nhập mã tích hợp trong bản cập nhật nhỏ Mac OS X trong tương lai, các ứng dụng của bạn sẽ không còn khởi chạy nữa. Đây là những gì chúng tôi đang cố gắng tránh một cách an toàn bằng cách vô hiệu hóa tính năng đó cho đến khi chúng tôi hiểu được kế hoạch của Apple. - macupdate.com/info.php/id/8948?rord=mod
Arjan

Tôi đã thêm kết quả sau khi sửa đổi bến tàu của mình trong Snow Leopard ...
Xúc tu

A, ngu quá. Cho đến nay, điều duy nhất tôi đã thử nghiệm là biểu tượng chương trình (bằng cách dán biểu tượng mới thông qua Tìm kiếm thông tin), không phải bất kỳ biểu tượng nào được sử dụng bởi chính chương trình. Ok, ký mã bị hỏng cho chắc chắn. Nhận xét của nhà phát triển Candybar vẫn còn hơi đáng sợ đối với tôi, nhưng Apple sẽ khiến nhiều người gặp rắc rối khi đột nhiên thay đổi các hiệu ứng hiện tại (không).
Arjan

Chà, thử nghiệm là sửa đổi các tài nguyên trong một ứng dụng đối mặt với mạng và xem việc phá vỡ việc ký kết có ngăn chặn việc tự động thoát khỏi tường lửa ứng dụng không ...
Xúc tu

. .? Giả sử không có vấn đề gì sau đó!)
Arjan

0

Một lời giải thích chi tiết về việc ký mã trong Snow Leopard được cung cấp trong bài đánh giá Snow Leopard của ars technica . Theo như tôi có thể nói, việc phá vỡ ký mã sẽ không thực sự phá vỡ bất cứ điều gì. Tuy nhiên, nó sẽ khiến các ứng dụng trở nên không đáng tin, điều đó có nghĩa là phải xác minh thêm hành động của chúng.


Đây thực sự là bài đánh giá 10,5 Leopard. Một trích dẫn hay từ đánh giá 10.6: "Và đừng quên các công nghệ" Mac OS X "mà sau này chúng ta đã học được phát triển cho iPhone và tình cờ được công bố cho Mac trước tiên (vì iPhone vẫn là một bí mật), như Core Animation và ký mã. " - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan

0

Tôi đã sửa chữa Quyền của Đĩa vào một ngày khác (từ Disk Utility) và nhận được cảnh báo này:

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

Vì vậy, có một cái gì đó sẽ xảy ra. Tôi không biết tầm quan trọng của nó.


Thật thú vị, đặc biệt là khi Apple liệt kê điều này trong "Mac OS X 10.5: Thông báo Quyền sửa chữa đĩa của Tiện ích đĩa mà bạn có thể bỏ qua một cách an toàn" tại support.apple.com/kb/TS1448 Không có thông tin nào từ Apple về cách thay đổi này và tại sao nó không thay đổi mặc dù ... Có codesign --verifythực sự hiển thị một chữ ký bị hỏng?
Arjan

0

Việc triển khai ký mã hiện tại là khá khó khăn và có lẽ đã vội vã ra khỏi cửa vì lợi ích của các nhà phát triển iPhone. Hy vọng rằng nó sẽ trở thành bắt buộc tại một thời điểm nào đó trong tương lai, và hy vọng nó sẽ trở nên dễ dàng hơn và rẻ hơn vào thời điểm đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.