Verificare firma applicazioni macOS Terminale
Verificare firma applicazioni macOS Terminale permette di controllare se un’app è stata firmata digitalmente, da quale sviluppatore proviene e se macOS la considera attendibile. Il comando codesign esamina la firma e l’integrità dei file contenuti nel pacchetto .app. Il comando spctl applica invece le regole di Gatekeeper e indica se macOS accetta l’app per l’apertura o l’installazione. L’analisi è utile prima di eseguire software scaricato da Internet, soprattutto quando Finder mostra avvisi di sicurezza. Una firma valida non dimostra però che il programma sia sicuro o privo di funzioni indesiderate: conferma soltanto l’identità crittografica del firmatario e l’integrità dei file firmati.
Qual è la differenza tra codesign e spctl su macOS
codesign verifica direttamente la firma del codice. Il comando controlla che l’app non sia stata modificata dopo la firma e può mostrare l’autorità certificatrice, il nome del firmatario, il Team ID e l’identificatore dell’applicazione.
spctl controlla invece la decisione di Gatekeeper. Oltre alla firma, può considerare la notarizzazione Apple, il tipo di contenuto e le regole di sicurezza applicate da macOS. Per questo un’app può avere una firma tecnicamente valida, ma non risultare accettata da spctl.
La firma digitale non equivale a una certificazione di sicurezza del software. Un’app firmata può comunque contenere vulnerabilità, pubblicità indesiderata o codice malevolo; la firma serve a verificare chi l’ha firmata e se il contenuto è cambiato.
Prima dell’analisi è necessario conoscere il percorso dell’app. Per un programma nella cartella Applicazioni, il percorso tipico è il seguente:
/Applications/NomeApp.app
Se il nome contiene spazi, racchiudere il percorso tra virgolette. In alternativa, trascinare l’app dalla finestra del Finder dentro il Terminale per inserire automaticamente il percorso corretto.
Come verificare la firma di un’app con codesign
Passo 1: controllare l’integrità della firma
Aprire Terminale dalla cartella Applicazioni > Utility ed eseguire il comando seguente, sostituendo il percorso con quello dell’app da esaminare:
codesign --verify --deep --strict --verbose=4 "/Applications/NomeApp.app"
L’opzione --verify esegue la verifica, --strict applica controlli più rigorosi e --verbose=4 mostra maggiori dettagli in caso di errore. L’opzione --deep estende il controllo ai componenti annidati dell’app, come framework, helper e plug-in.
Se il controllo termina senza messaggi e il Terminale restituisce il prompt, la verifica è terminata con esito positivo. Se la firma non è valida, macOS può mostrare messaggi come code object is not signed at all, a sealed resource is missing or invalid oppure code has no resources but signature indicates they must be present.
Per un controllo più essenziale si può usare anche:
codesign --verify --strict --verbose=2 "/Applications/NomeApp.app"
Il risultato di codesign va interpretato insieme a quello di spctl, perché il primo verifica principalmente la struttura della firma mentre il secondo valuta l’accettazione da parte di Gatekeeper.
Passo 2: visualizzare sviluppatore, Team ID e autorità
Per leggere i dati della firma senza limitarsi all’esito positivo o negativo, usare:
codesign --display --verbose=4 "/Applications/NomeApp.app"
L’output può contenere informazioni come:
Identifier, cioè l’identificatore univoco assegnato all’app;TeamIdentifier, cioè il Team ID Apple associato allo sviluppatore;Authority, cioè la catena dei certificati usati per firmare il codice;Sealed Resources, relativo alle risorse incluse nella firma;Executable, che indica il file eseguibile principale.
Una voce come Developer ID Application: Nome sviluppatore (TEAMID) indica una firma destinata alla distribuzione fuori dal Mac App Store. La presenza di Apple Distribution o di certificati legati allo sviluppo non significa necessariamente che l’app sia installabile liberamente: il tipo di certificato e la decisione di Gatekeeper devono essere valutati nel contesto.
Per visualizzare anche i requisiti associati alla firma, è possibile usare:
codesign --display --verbose=4 --requirements - "/Applications/NomeApp.app"
Un’identità indicata con un semplice trattino, spesso chiamata firma ad hoc, non fornisce la stessa garanzia di provenienza di una firma associata a un certificato Apple valido.
Come verificare la provenienza con spctl e Gatekeeper
Passo 1: controllare se macOS accetta l’app
Il comando principale per analizzare un’applicazione è:
spctl --assess --type execute --verbose=4 "/Applications/NomeApp.app"
Quando l’app è accettata, l’output include generalmente accepted e può riportare informazioni come source=Notarized Developer ID, source=App Store oppure origin=Developer ID Application: Nome sviluppatore (TEAMID).
Quando l’app non supera il controllo, il Terminale mostra rejected insieme a una motivazione. Il rifiuto può dipendere da firma assente, firma modificata, notarizzazione non riconosciuta, certificato revocato o regole di Gatekeeper.
La verifica della provenienza con spctl non richiede l’apertura dell’app. Il comando valuta il pacchetto già presente sul disco, quindi è adatto a un controllo preliminare prima dell’esecuzione.
Passo 2: analizzare un installer PKG
Per un pacchetto di installazione .pkg, usare il tipo di valutazione install:
spctl --assess --type install --verbose=4 "/Users/nomeutente/Downloads/NomeInstaller.pkg"
Per un’app già installata, il tipo corretto è normalmente execute. Il tipo install serve invece a valutare un pacchetto destinato all’installazione, mentre il tipo open può essere utile per alcuni documenti o contenuti che macOS deve aprire con un’app.
Il comando spctl --status mostra se la valutazione automatica di Gatekeeper è attiva:
spctl --status
L’output indica lo stato del servizio di valutazione, ma non certifica una specifica applicazione. Per conoscere l’esito relativo a un’app è necessario usare spctl --assess.
Passo 3: verificare un eventuale ticket di notarizzazione
La notarizzazione Apple è una verifica automatizzata del software distribuito fuori dal Mac App Store. Quando l’app contiene un ticket di notarizzazione associato, il comando stapler può controllarne la validità locale:
xcrun stapler validate "/Applications/NomeApp.app"
Questo controllo è complementare a codesign e spctl. Un’app può essere validamente firmata senza avere un ticket di notarizzazione incorporato, perché macOS può verificare alcune informazioni attraverso la rete. Per questo l’assenza del ticket locale non dimostra da sola che il software sia contraffatto.
Come interpretare un risultato negativo
Un errore di codesign richiede attenzione soprattutto quando l’app proviene da un sito ufficiale e dovrebbe essere distribuita firmata. In quel caso il pacchetto potrebbe essere stato alterato, scaricato in modo incompleto oppure modificato da un processo di estrazione o aggiornamento.
Un risultato rejected di spctl non identifica sempre un malware. Può indicare un’app vecchia, non notarizzata, distribuita per test, firmata con un certificato non più valido oppure proveniente da uno sviluppatore non riconosciuto da Gatekeeper.
Non bisogna eliminare gli avvisi di sicurezza usando comandi trovati casualmente online. Disattivare Gatekeeper o rimuovere attributi di quarantena può consentire l’esecuzione di software non verificato, ma non risolve il problema della provenienza.
L’attributo di quarantena può essere visualizzato con:
xattr -l "/Applications/NomeApp.app"
La presenza o l’assenza dell’attributo com.apple.quarantine non sostituisce la verifica della firma. La provenienza va confrontata con il sito ufficiale dello sviluppatore, il nome visualizzato in Authority o origin e l’eventuale firma del codice.
Per una valutazione prudente, è utile controllare tutti questi elementi:
codesigndeve confermare l’integrità del codice;codesign --displaydovrebbe mostrare un firmatario coerente con lo sviluppatore atteso;spctldovrebbe restituireacceptedquando l’app è destinata alla distribuzione normale;- il nome del file e il dominio di download devono corrispondere alla fonte ufficiale;
- un’app firmata non deve essere considerata automaticamente sicura.
La sequenza più affidabile consiste quindi nel verificare prima la firma con codesign, poi la decisione di Gatekeeper con spctl, senza confondere un controllo tecnico con una garanzia assoluta sull’affidabilità del programma.
Potrebbe interessarti anche:
- Come trovare malware senza antivirus su macOS
- Mac Bloccato? Ecco il Comando da Terminale per Installare QUALSIASI App (Anche Quelle che Apple Ti Impedisce)!
- Come installare applicazioni non ufficiali su Amazon Fire TV Stick
- Proteggi la tua privacy: Scopri la verità sullo spionaggio via webcam e su come proteggere il tuo computer
FAQ
No. codesign verifica principalmente firma e integrità del codice, mentre spctl valuta se Gatekeeper considera accettabile l’app in base anche a notarizzazione e criteri di sicurezza.
Esegui codesign --display --verbose=4 "/percorso/NomeApp.app" e cerca le righe Authority e TeamIdentifier. Il valore origin mostrato da spctl offre un’ulteriore indicazione sul firmatario.
No. Una firma valida dimostra che il codice proviene dal titolare del certificato e non è stato modificato dopo la firma, ma non certifica l’assenza di vulnerabilità o comportamenti indesiderati.
L’app può essere vecchia, non notarizzata, firmata con un certificato non riconosciuto o avviata tramite un’eccezione autorizzata manualmente. Il risultato di spctl segnala comunque che non supera la valutazione standard di Gatekeeper.
Sì. codesign e spctl sono disponibili anche su Mac con chip Apple; la firma e la valutazione di Gatekeeper vengono controllate indipendentemente dall’architettura del processore.
Altri articoli di questa serie:
- Mostrare file nascosti macOS Terminale: comando rapido
- Disattivare riapertura finestre macOS: metodo rapido
- Personalizzare anteprime icone Finder con defaults
- Percorso completo Finder macOS nella barra del titolo
- Disattivare DS_Store unità di rete Mac: metodo rapido
- Ricerca metadati Spotlight Terminale con mdls e mdfind
- Ricostruire indice Spotlight macOS Terminale
- Controllare consumo energetico Mac Terminale con powermetrics
- Trovare i processi che rallentano il Mac da Terminale
- Controllare la pressione memoria macOS Terminale
- Come misurare l’avvio lento delle app su Mac
- Leggere log macOS da Terminale: comandi utili
- Rapporto processi bloccati macOS spindump: come crearlo
- Permessi privacy delle app Mac: come controllarli
- Gestire programmi avvio automatico macOS con launchctl
- Creare servizio launchd macOS per attività periodiche
- Confrontare cartelle macOS Terminale con diff
- Rinominare file in massa su macOS dal Terminale
- Proteggere file sensibili su macOS dal Terminale
