Jeśli sfałszowanie podpisywania kodu w komputerze Mac może się nie powieść?

11

Jakie irytujące lub rzeczywiste problemy mogą wystąpić, gdy podpis cyfrowy aplikacji Mac jest uszkodzony?

Aplikacje na komputerze Mac mogą być podpisane cyfrowo. Kiedy podpis jest w jakiś sposób złamany, wiem, że kilka aplikacji może to zauważyć. Ale nie wiem, w jakim szczególe będą to po prostu irytacje lub naprawdę coś zepsują:

  • Zapora systemu OS X może nie być w stanie poprawnie ustawić podpisu ad hoc, powodując wielokrotne monitowanie „Czy chcesz, aby aplikacja„ [..] ”akceptowała przychodzące połączenia sieciowe?”

  • Aplikacje dozwolone przez kontrolę rodzicielską mogą już nie działać?

  • Dostęp do pęku kluczy może być uszkodzony?

  • Niektórzy twierdzą, że aktualizacja oprogramowania Apple może się nie powieść. Jeśli to prawda, zastanawiam się, czy to rzeczywiście zależy od podpisu podpisu kodu, czy może wynikałoby z niepasującego skrótu dla całej aplikacji lub informacji z plików BOM .

Więcej podstawowych informacji poniżej.


Szczegóły podpisywania kodu można wyświetlić za pomocą:

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

... co dałoby coś takiego (ale nie ostrzegałoby przed modyfikacjami):

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

Podpis można sprawdzić za pomocą:

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

Co dałoby:

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

... lub (nawet po prostu umieszczając dodatkowy plik w folderze ./Contents/Resources):

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

... lub (może gorszy niż powyższy komunikat):

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

Podpisywanie kodu wraca do OS 9 lub wcześniejszego, ale obecna implementacja została wprowadzona w 10.5 Leopard. Ars Technica pisze :

Podpisywanie kodu wiąże tożsamość weryfikowalną kryptograficznie z kolekcją kodu i zapewnia wykrycie wszelkich modyfikacji tego kodu. Nie udziela się żadnych gwarancji dotyczących zaangażowanych stron. Na przykład, jeśli pobierzesz aplikację podpisaną przez Acme Inc., nie możesz nic na to udowodnić, z wyjątkiem tego, że pochodzi ona od tego samego podmiotu, który twierdzi, że jest Acme Inc., kiedy ostatnio pobierałeś coś z ich strony internetowej.

Ten przykład pokazuje najbardziej przydatne zastosowanie technologii z perspektywy konsumenta. Podczas dzisiejszej aktualizacji aplikacji Mac OS X [w wersji 10.4 Tiger, AvB] użytkownik jest często monitowany o ponowne sprawdzenie, czy ta aplikacja ma dostęp do pęku kluczy w celu pobrania nazw użytkowników i haseł. Wydaje się, że to dobra funkcja bezpieczeństwa, ale tak naprawdę to tylko pociąga użytkowników komputerów Mac do ślepego klikania „Zawsze zezwalaj” za każdym razem, gdy się pojawia. I tak naprawdę, co zrobi przeciętny użytkownik, uruchom plik wykonywalny za pomocą deasemblera i ręcznie sprawdź, czy kod jest bezpieczny?

Z drugiej strony podpisana aplikacja może matematycznie udowodnić, że jest to rzeczywiście nowa wersja tej samej aplikacji od tego samego dostawcy, któremu zaufałeś w przeszłości. Rezultatem jest koniec okien dialogowych z prośbą o potwierdzenie wyboru, którego bezpieczeństwa nie można zweryfikować w rozsądny sposób.

W przypadku zapory w systemie Leopard 10.5 Apple wyjaśnia :

Po dodaniu aplikacji do tej listy Mac OS X podpisuje aplikację cyfrowo (jeśli nie została jeszcze podpisana). Jeśli aplikacja zostanie później zmodyfikowana, pojawi się monit o zezwolenie na przychodzące połączenia sieciowe lub odmówienie jej. Większość aplikacji się nie modyfikuje, a jest to funkcja bezpieczeństwa, która powiadamia o zmianie.

[..]

Wszystkie aplikacje niewymienione na liście, które zostały podpisane cyfrowo przez urząd certyfikacji zaufany przez system (do celów podpisywania kodu) mogą odbierać połączenia przychodzące. Każda aplikacja Apple w systemie Leopard została podpisana przez Apple i może odbierać połączenia przychodzące. Jeśli chcesz odrzucić cyfrowo podpisaną aplikację, najpierw dodaj ją do listy, a następnie wyraźnie odrzuć.

W wersji 10.6 Snow Leopard ten ostatni jest bardziej wyraźny (i można go wyłączyć), ponieważ „Automatycznie zezwól podpisanemu oprogramowaniu na odbieranie połączeń przychodzących. Pozwala oprogramowaniu podpisanemu przez ważny urząd certyfikacji na świadczenie usług dostępnych z sieci”.

Zapora systemu Mac OS X 10.6: automatycznie zezwalaj podpisanemu oprogramowaniu na odbieranie połączeń przychodzących

(W wersji 10.6 opcje 10.5.1 „Zezwalaj na wszystkie połączenia przychodzące”, „Zezwalaj tylko na podstawowe usługi” i „Ustaw dostęp dla określonych usług i aplikacji” zostały zmienione na opcję „Zablokuj wszystkie połączenia przychodzące” lub listę dozwolonych aplikacji i opcji „Automatycznie zezwalaj podpisanemu oprogramowaniu na odbieranie połączeń przychodzących” i „Włącz tryb ukrywania”. Przed aktualizacją 10.5.1 „Zezwalaj tylko podstawowym usługom” było tak naprawdę nazywane „Blokuj wszystkie połączenia przychodzące”.)

W przypadku aplikacji (Apple), które w jakiś sposób mają złamany oryginalny podpis, ten podpis ad hoc może w jakiś sposób nie zostać utrwalony i wiadomo, że spowodował problemy z configd, mDNSResponder i racoon.

Arjan
źródło
Wydaje mi się, że odpowiedź Macka mówi wszystko (i nieważne, jak bardzo się staram: złamanie podpisów nie pokazało mi nawet ostrzeżenia o dostępie do pęku kluczy). Mimo to zastanawiam się, czy ktoś napotkał problemy. Mam nadzieję, że pytanie nie jest zbyt długie, aby przeczytać ... ;-)
Arjan
dodano tag certyfikatu
quack quixote
Fajnie: ktoś ponownie podpisał wersję beta Safari 4 (z zakładkami u góry), aby była kompatybilna z pękiem kluczy: zobacz komentarze „petersconsult” na macosxhints.com/article.php?story=20090925131057394
Arjan

Odpowiedzi:

1

Przykład, w którym podpisywanie kodu „zepsuje” aplikację:

  • Keychain Access.app nie pozwoli ci przeglądać haseł, jeśli wykryje, że zostały zmienione.

Źródło: Apple Mailing List i Jaharmi's Irreality

Chealion
źródło
Oczywiście, skoro już o tym wspominasz, jest to aplikacja, której powinienem był używać podczas pierwszych testów! :-)
Arjan
3

To, co mogę ci powiedzieć, to Candybar, aplikacja do dostosowywania ikon, z której korzysta całkiem sporo osób, psuje cyfrowy podpis przynajmniej Findera i Docka (i prawdopodobnie niektórych innych podstawowych aplikacji systemowych), ponieważ zmienia pliki zasobów, a jak dotąd nic został zgłoszony jako problem z tego powodu. Tak więc próbkowanie w środowisku naturalnym przy użyciu podstawowych komponentów systemu operacyjnego powiedziałoby - niewiele!

EDYCJA: oto wynik sprawdzenia podpisu mojego kodu w Docku w systemie 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
Macka
źródło
Aha, zbadam to trochę! Niektóre ręcznie zmienione ikony nie przerywały podpisywania kodu w niektórych innych aplikacjach. Twórcy sami napisali w 2008 roku: Jeśli chodzi o ręczne zmienianie ikon aplikacji, możesz to zrobić bardzo więcej! Ostrzeżenie: jeśli Apple włączy funkcję podpisywania kodu w przyszłej drobnej aktualizacji systemu Mac OS X, aplikacje po prostu przestaną działać. Właśnie tego staramy się uniknąć, wyłączając tę ​​funkcję, dopóki Apple nie dowie się o ich planach. - macupdate.com/info.php/id/8948?rord=mod
Arjan
Dodałem wynik po ręcznym zmodyfikowaniu doku w Snow Leopard ...
The Tentacle
Ach, głupie. Do tej pory jedyną rzeczą, którą przetestowałem, była ikona programu (wklejając nową ikonę w Finderze Get Info), a nie żadna ikona używana przez sam program. Ok, podpisywanie kodu na pewno zepsute. Komentarz twórcy Candybar nadal jest dla mnie trochę przerażający, ale Apple wpędziłoby wielu ludzi w kłopoty, gdy nagle zmieniliby obecne (nie) efekty.
Arjan
Cóż, test polega na zmodyfikowaniu zasobów w aplikacji sieciowej i sprawdzeniu, czy przerwanie podpisywania zatrzyma automatyczne przejście z zapory ogniowej aplikacji ...
Tentacle
(Hmmm, programista CandyBar usunął ten komentarz MacUpdate z 10 stycznia 2008 r. Pamięć podręczna Google nadal to pokazuje, ale najwyraźniej jest nowa wersja dla OS X 6.1, więc albo problem został rozwiązany, albo CandyBar chce pozwolić śpiącym psom kłamać .. .? Załóżmy, że wtedy nie ma problemów!)
Arjan,
0

Nieco szczegółowe objaśnienie podpisywania kodu w systemie Snow Leopard znajduje się w recenzji Snow Leopard firmy ars technica . O ile mi wiadomo, zerwanie podpisywania kodu tak naprawdę niczego nie zepsuje. Spowoduje to jednak niezaufanie aplikacji, co oznacza konieczność weryfikacji większej liczby ich działań.

Peter Wagenet
źródło
To właściwie przegląd Leoparda 10.5. Jeden miły cytat z przeglądu 10.6: „I nie zapominajmy, że technologie„ Mac OS X ”, które później poznaliśmy, zostały opracowane dla iPhone'a i właśnie zostały ogłoszone dla Maca (ponieważ iPhone wciąż był tajemnicą), takich jak Core Animation i podpisywanie kodu ”. - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan
0

Naprawiałem moje uprawnienia do dysku innego dnia (z Narzędzia dyskowego) i otrzymałem to ostrzeżenie:

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

Więc coś się stanie. Nie wiem, jakie to ma znaczenie.

wfaulk
źródło
Ciekawe, zwłaszcza, że ​​Apple wymienia to w „Mac OS X 10.5: Naprawa narzędzia dyskowego do naprawy uprawnień do dysku, które można bezpiecznie zignorować” na stronie support.apple.com/kb/TS1448 Brak informacji od Apple na temat tego, jak to się zmieniło i dlaczego nie „ to ważne ... Czy codesign --verifyrzeczywiście ma złamany podpis?
Arjan,
0

Obecna implementacja podpisywania kodu jest dość bezzębna i zapewne została wyrzucona za drzwi z korzyścią dla twórców iPhone'ów. Mam nadzieję, że w przyszłości stanie się to obowiązkowe i mam nadzieję, że do tego czasu będzie znacznie łatwiejsze i tańsze.

Hasaan Chop
źródło