Se la firma del codice Mac viene manomessa, cosa potrebbe non funzionare?


11

Quali fastidi o problemi reali possono verificarsi quando la firma digitale di un'applicazione Mac viene interrotta?

Le applicazioni su un Mac possono essere firmate digitalmente. Quando la firma viene in qualche modo rotta, so che alcune applicazioni potrebbero accorgersene. Ma non so in quale dettaglio questi saranno solo fastidi o romperanno davvero le cose:

  • Il firewall OS X potrebbe non essere in grado di impostare correttamente una firma ad hoc, causando la richiesta ripetuta di uno "Vuoi che l'applicazione" [..] "accetti le connessioni di rete in arrivo?"

  • Le applicazioni consentite dal Controllo genitori potrebbero non essere più in esecuzione?

  • L'accesso al portachiavi potrebbe essere rotto?

  • Alcuni sostengono che l'aggiornamento del software Apple potrebbe non riuscire. Se è vero, allora mi chiedo se questo effettivamente dipende dalla firma della firma del codice, o sarebbe causato da un hash non corrispondente per l'intera applicazione o dalle informazioni dai file BOM .

Ulteriori informazioni di base di seguito.


I dettagli della firma del codice possono essere visualizzati utilizzando:

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

... che produrrebbe qualcosa di simile al seguente (ma non avvertirebbe di modifiche):

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

La firma può essere convalidata utilizzando:

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

Che produrrebbe:

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

... o (anche semplicemente inserendo un file extra nella cartella ./Contents/Resources di un'applicazione):

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

... o (forse peggio del messaggio sopra):

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

La firma del codice risale a OS 9 o precedenti, ma l'attuale implementazione è stata introdotta in 10.5 Leopard. Ars Technica scrive :

La firma del codice lega un'identità crittograficamente verificabile a una raccolta di codice e garantisce che venga rilevata qualsiasi modifica a quel codice. Non viene fornita alcuna garanzia sulle parti coinvolte. Ad esempio, se scarichi un'applicazione firmata da Acme Inc., non puoi provare nulla al riguardo tranne che proviene dalla stessa entità che afferma di essere Acme Inc. l'ultima volta che hai scaricato qualcosa dal loro sito web.

Questo esempio evidenzia in realtà l'applicazione più utile della tecnologia dal punto di vista del consumatore. Quando si aggiorna un'applicazione per Mac OS X oggi [in 10.4 Tiger, AvB], all'utente viene spesso richiesto di verificare nuovamente che questa applicazione sia autorizzata ad accedere al Portachiavi per recuperare nomi utente e password. Questa sembra una buona funzionalità di sicurezza, ma tutto ciò che fa è addestrare gli utenti Mac a fare clic alla cieca su "Consenti sempre" ogni volta che appare. E davvero, che cosa farà l'utente medio, eseguire l'eseguibile tramite un disassemblatore e verificare manualmente che il codice sia sicuro?

Un'applicazione firmata, d'altra parte, può dimostrare matematicamente che si tratta effettivamente di una nuova versione della stessa applicazione dello stesso fornitore per cui hai espresso fiducia in passato. Il risultato è la fine delle finestre di dialogo che ti chiedono di confermare una scelta di cui non hai modo ragionevole di verificare la sicurezza.

Per il firewall in 10.5 Leopard, Apple spiega :

Quando aggiungi un'applicazione a questo elenco, Mac OS X firma digitalmente l'applicazione (se non è già stata firmata). Se l'applicazione viene successivamente modificata, verrà richiesto di consentire o negare le connessioni di rete in entrata. La maggior parte delle applicazioni non si modifica da sé, e questa è una funzione di sicurezza che ti avvisa della modifica.

[..]

Tutte le applicazioni non presenti nell'elenco che sono state firmate digitalmente da un'autorità di certificazione attendibile dal sistema (ai fini della firma del codice) possono ricevere connessioni in entrata. Ogni applicazione Apple in Leopard è stata firmata da Apple e può ricevere connessioni in entrata. Se si desidera negare un'applicazione con firma digitale, è necessario prima aggiungerla all'elenco e quindi negarla esplicitamente.

In 10.6 Snow Leopard, quest'ultimo è reso più esplicito (e può essere disabilitato) in quanto "Consenti automaticamente al software firmato di ricevere connessioni in entrata. Consente al software firmato da un'autorità di certificazione valida di fornire servizi accessibili dalla rete".

Mac OS X 10.6 Firewall: consenti automaticamente al software firmato di ricevere connessioni in entrata

(In 10.6, le opzioni 10.5.1 "Consenti tutte le connessioni in entrata", "Consenti solo servizi essenziali" e "Imposta accesso per servizi e applicazioni specifici" sono state rinnovate in una scelta per "Blocca tutte le connessioni in entrata" o un elenco delle applicazioni e opzioni consentite "Consenti automaticamente al software firmato di ricevere connessioni in entrata" e "Abilita modalità invisibile". Prima dell'aggiornamento 10.5.1 , "Consenti solo servizi essenziali" era in realtà chiamato "Blocca tutte le connessioni in entrata".)

Per le applicazioni (Apple) che hanno in qualche modo rotto la loro firma originale, questa firma ad hoc potrebbe in qualche modo non essere mantenuta, ed è noto che ha causato problemi per configd, mDNSResponder e racoon.


Immagino che la risposta del Tentacle dica tutto (e non importa quanto ci provi: infrangere le firme non mi ha ancora mostrato un avvertimento per Keychain Access). Tuttavia, mi chiedo se qualcuno abbia riscontrato problemi. Spero che la domanda non sia troppo lunga da leggere ... ;-)
Arjan,

aggiunto tag certificato
quack quixote

Bello: qualcuno ha ri-firmato la Safari 4 beta (con le sue schede in alto) per renderla compatibile con il portachiavi: vedi i commenti di "petersconsult" su macosxhints.com/article.php?story=20090925131057394
Arjan,

Risposte:


1

Un esempio di dove la firma del codice "interromperà" un'applicazione:

  • Keychain Access.app non ti consentirà di visualizzare le password se rileva che è stato manomesso.

Fonte: Apple Mailing List e Jaharmi's Irreality


Naturalmente, ora che me lo dici, questa è l'applicazione che avrei dovuto usare per i miei primi test! :-)
Arjan,

3

Quello che posso dirti è Candybar, l'app di personalizzazione dell'icona utilizzata da un bel po 'di persone, rompe la firma digitale di almeno Finder e Dock (e probabilmente alcune altre applicazioni di sistema di base) mentre cambia i file di risorse, eppure finora nulla è stato segnalato come un problema a causa di ciò. Quindi un campionamento in-the-wild che utilizza i componenti del sistema operativo principale direbbe - non molto!

EDIT: ecco il risultato del controllo della mia firma del codice per il mio Dock in 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

Ah, lo indagherò un po '! Alcune icone modificate manualmente non interrompevano la firma del codice per alcune altre applicazioni. I produttori stessi hanno scritto nel 2008: per quanto riguarda la modifica manuale delle icone delle applicazioni, siete i benvenuti a farlo! Come avvertimento: se Apple abilita la firma del codice integrato in un futuro aggiornamento minore di Mac OS X, le tue applicazioni semplicemente non verranno più avviate. Questo è ciò che stiamo cercando di evitare in modo sicuro disabilitando tale funzione fino a quando non avremo un'idea di Apple dei loro piani. - macupdate.com/info.php/id/8948?rord=mod
Arjan

Ho aggiunto il risultato dopo aver modificato manualmente il mio dock in Snow Leopard ...
The Tentacle,

Ah, stupido. Finora l'unica cosa che ho testato è stata l'icona del programma (incollando una nuova icona tramite Finder's Get Info), non alcuna icona utilizzata dal programma stesso. Ok, sicuramente la firma del codice non funziona. Il commento dello sviluppatore di Candybar è ancora un po 'spaventoso per me, ma Apple metterebbe un sacco di gente nei guai quando cambia improvvisamente gli attuali (non) effetti.
Arjan,

Bene, il test è modificare le risorse in un'app di rete e vedere se interrompere la firma interrompe il passaggio automatico dal firewall dell'applicazione ...
The Tentacle,

(Hmmm, lo sviluppatore di CandyBar ha rimosso quel commento del 10 gennaio 2008 da MacUpdate. La cache di Google lo mostra ancora, ma a quanto pare c'è una nuova versione per OS X 6.1, quindi o il problema è stato risolto o CandyBar vuole far mentire i cani che dormono .. . Supponiamo che non ci siano problemi!)
Arjan,

0

Una spiegazione in qualche modo dettagliata della firma del codice in Snow Leopard è fornita nella recensione di Snow Leopard di ars technica . Per quanto ne so, interrompere la firma del codice non romperà nulla. Tuttavia, le app diventeranno non attendibili, il che significa dover verificare più delle loro azioni.


In realtà è la recensione 10.5 di Leopard. Una bella citazione della recensione 10.6 però: "E non dimentichiamo che le tecnologie" Mac OS X "che abbiamo appreso in seguito sono state sviluppate per iPhone e sono state appena annunciate per Mac prima (perché l'iPhone era ancora un segreto), come l'animazione di base e la firma del codice ". - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan

0

L'altro giorno stavo riparando i miei permessi del disco (da Utility Disco) e ho ricevuto questo avviso:

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

Quindi c'è qualcosa che accadrà. Non so quanto sia significativo.


Interessante, specialmente se Apple lo elenca in "Mac OS X 10.5: Messaggi di permessi del disco di riparazione di Utility Disco che puoi tranquillamente ignorare" su support.apple.com/kb/TS1448 Nessuna parola da Apple su come è stato cambiato e perché non lo fa ' non importa però ... codesign --verifymostra davvero una firma rotta?
Arjan,

0

L'attuale implementazione della firma del codice è piuttosto sdentata e probabilmente è stata lanciata fuori dalla porta a beneficio degli sviluppatori di iPhone. Spero che diventerà obbligatorio ad un certo punto in futuro, e speriamo che diventerà molto più facile ed economico anche a quel punto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.