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

코드 서명은 OS 9 이전으로 돌아가지만 현재 구현 10.5 Leopard에서 도입 되었습니다. Ars Technica의 글을 참고하세요 :

코드 서명은 암호로 확인할 수있는 ID를 코드 모음에 연결하고 해당 코드에 대한 수정이 감지되도록합니다. 관련된 당사자에 대해 보증하지 않습니다. 예를 들어 Acme Inc.에서 서명 한 응용 프로그램을 다운로드 한 경우 마지막으로 웹 사이트에서 무언가를 다운로드했을 때 Acme Inc.라고 주장하는 동일한 법인에서 온 것 외에는 그에 대한 증거가 없습니다.

이 예제는 실제로 소비자의 관점에서 가장 유용한 기술 적용을 강조합니다. 오늘날 Mac OS X 응용 프로그램을 업그레이드 할 때 (10.4 Tiger, AvB), 사용자는이 응용 프로그램이 키 체인에 액세스하여 사용자 이름과 암호를 검색 할 수 있는지 다시 확인하라는 메시지를 종종받습니다. 이것은 좋은 보안 기능처럼 보이지만 실제로는 Mac 사용자가 나타날 때마다 "항상 허용"을 맹목적으로 클릭하도록 훈련시키는 것입니다. 그리고 실제로, 일반 사용자는 무엇을하고, 디스어셈블러를 통해 실행 파일을 실행하고 코드가 안전한지 수동으로 확인합니까?

반면에 서명 된 응용 프로그램은 과거에 신뢰를 표명했던 동일한 공급 업체의 동일한 응용 프로그램의 새 버전임을 수학적으로 증명할 수 있습니다. 결과적으로 안전을 확인하는 합리적인 방법이없는 선택을 확인하도록 요청하는 대화 상자가 종료됩니다.

10.5 Leopard의 방화벽에 대해 Apple은 다음같이 설명합니다 .

이 목록에 응용 프로그램을 추가하면, Mac OS X은 응용 프로그램에 디지털 서명을합니다 (서명되지 않은 경우). 나중에 응용 프로그램을 수정하면 들어오는 네트워크 연결을 허용하거나 거부하라는 메시지가 표시됩니다. 대부분의 응용 프로그램은 자체적으로 수정되지 않으며 변경 사항을 알려주는 안전 기능입니다.

[..]

시스템에서 신뢰하는 인증 기관 (코드 서명을 위해)에 의해 디지털 서명 된 목록에없는 모든 응용 프로그램은 들어오는 연결을 수신 할 수 있습니다. Leopard의 모든 Apple 응용 프로그램은 Apple이 서명했으며 들어오는 연결을 수신 할 수 있습니다. 디지털 서명 된 응용 프로그램을 거부하려면 먼저 목록에 추가 한 다음 명시 적으로 거부해야합니다.

10.6 Snow Leopard에서는 "서명 된 소프트웨어가 들어오는 연결을 자동으로 받도록 허용합니다. 유효한 인증 기관에서 서명 한 소프트웨어가 네트워크에서 액세스 한 서비스를 제공 할 수 있도록 허용"으로 명시 적이며 비활성화 될 수 있습니다.

Mac OS X 10.6 방화벽 : 서명 된 소프트웨어가 들어오는 연결을 자동으로 받도록 허용

(10.6에서 "모든 들어오는 연결 허용", "필수 서비스 만 허용"및 "특정 서비스 및 응용 프로그램에 대한 액세스 설정"10.5.1 옵션이 "모든 들어오는 연결 차단"또는 목록에 대한 선택으로 개정되었습니다. 허용 된 응용 프로그램 및 옵션 "서명 된 소프트웨어가 들어오는 연결을 자동으로 받도록 허용"및 "스텔스 모드 활성화" 10.5.1 업데이트 이전에는 "필수 서비스 만 허용"이 실제로 "모든 들어오는 연결 차단"이라고했습니다.)

원래 서명이 손상 된 (Apple) 응용 프로그램의 경우이 임시 서명이 유지되지 않을 수 있으며 구성, mDNSResponder 및 너구리 에 문제일으킨 것으로 알려져 있습니다 .


촉수의 대답이 전부라고 생각합니다 (어떻게 시도해도 서명을 깨는 것이 키 체인 액세스에 대한 경고조차 표시하지 않았습니다). 그래도 누군가 문제가 발생했는지 궁금합니다. 질문이 너무 길지 않기를 바랍니다 ... ;-)
Arjan

추가 된 인증서 태그
quack quixote

니스 : 사람의 키 체인과 호환되도록하기 (상단의 탭) 사파리 4 베타를 다시 서명 "petersconsult"에 의해 코멘트보기에 macosxhints.com/article.php?story=20090925131057394
Arjan

답변:


1

코드 서명이 응용 프로그램을 '중단'하는 예 :

  • Keychain Access.app는 조작 된 비밀번호를 발견하면 비밀번호를 볼 수 없습니다.

출처 : 애플 메일 링리스트자하 르미의 비 현실성


물론, 당신이 그것을 언급 했으므로, 이것은 내가 첫 번째 테스트에 사용해야 했던 응용 프로그램입니다 ! :-)
Arjan

3

내가 말할 수있는 것은 많은 사람들이 사용하는 아이콘 사용자 정의 응용 프로그램 인 Candybar입니다. 리소스 파일을 변경함에 따라 최소한 Finder 및 Dock (및 다른 핵심 시스템 응용 프로그램)의 디지털 서명이 끊어졌습니다. 이로 인해 문제가보고되었습니다. 따라서 핵심 OS 구성 요소를 사용한 야생 샘플링은 그다지 많지 않습니다!

편집 : 여기 Snow Leopard의 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

아하, 조금 조사하겠습니다! 일부 수동 변경 아이콘으로 인해 일부 다른 응용 프로그램의 코드 서명이 중단되지 않았습니다. 제조업체 자체는 2008 년에 작성했습니다. 응용 프로그램 아이콘을 수동으로 변경하는 것은 환영합니다. 경고 : Apple이 향후 Mac OS X 마이너 업데이트에서 내장 코드 서명을 활성화하면 응용 프로그램이 더 이상 시작되지 않습니다. 이것이 Apple의 계획을 이해할 때까지 해당 기능을 비활성화하여 안전하게 피하려는 것입니다. - macupdate.com/info.php/id/8948?rord=mod
Arjan

Snow Leopard에서 도크를 수동으로 수정 한 후 결과를 추가했습니다.
The Tentacle

아, 바보 지금까지 테스트 한 것은 프로그램 자체에서 사용되는 아이콘이 아닌 프로그램 아이콘 (Finder의 정보 입수를 통해 새 아이콘을 붙여 넣음)이었습니다. 좋아, 코드 서명이 확실하게 끊어졌습니다. Candybar 개발자의 의견은 여전히 ​​조금 무섭지 만, Apple은 현재의 (비) 효과를 갑자기 바꿀 때 많은 사람들을 곤란에 빠뜨릴 것입니다.
Arjan

테스트는 네트워크를 향한 앱에서 리소스를 수정하고 서명을 위반하면 응용 프로그램 방화벽에서 자동 통과가 중지되는지 확인하는 것입니다.
The Tentacle

(음, CandyBar 개발자는 2008 년 1 월 10 일 MacUpdate에서 주석을 제거했습니다. Google 캐시는 여전히 그것을 보여줍니다. 그러나 분명히 OS X 6.1의 새로운 버전이 있으므로 문제가 해결되었거나 CandyBar가 잠자는 개를 거짓말로 만들고 싶습니다 .. 문제가 없다고 가정 해 봅시다!)
Arjan

0

Snow Leopard의 코드 서명에 대한 자세한 설명은 ars technica의 Snow Leopard review 에서 제공됩니다 . 내가 알 수있는 한 코드 서명을 깨는 것이 실제로 아무것도 깨지지는 않습니다. 그러나 앱이 신뢰할 수 없게되므로 더 많은 작업을 확인해야합니다.


실제로는 10.5 Leopard 리뷰입니다. 그러나 10.6 리뷰에서 인용 한 좋은 인용문 : "나중에 배운"Mac OS X "기술은 iPhone 용으로 개발되었으며 Mac 용으로 처음 발표 된 것입니다 (iPhone은 여전히 ​​비밀 임). 핵심 애니메이션 및 코드 서명과 같은 - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan

0

다른 날에 디스크 유틸리티에서 내 디스크 권한을 복구하고 있었고 다음 경고가 표시되었습니다.

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

그래서 일어날 일이 있습니다. 그것이 얼마나 중요한지 모르겠습니다.


재미있는, 애플이 나열되어 특히 :에서 "맥 OS X 10.5 디스크 유틸리티의 디스크 사용 권한 복구 메시지를 안전하게 무시할 수있는" support.apple.com/kb/TS1448 애플에서 아무 단어 방법 이 변경되었고 이유 '는 아무튼 문제는 ... codesign --verify실제로 서명이 깨져 있습니까?
Arjan

0

코드 서명의 현재 구현은 거의 필요 없으며 아마도 iPhone 개발자의 이익을 위해 문을 열었습니다. 미래에는 어느 시점에서 의무화 될 것이며, 그 때까지 훨씬 더 쉽고 저렴 해지기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.