Skip to content

Correggi rilevamento di Full Disk Access concesso#3

Open
lucagentile wants to merge 1 commit into
Pinperepette:mainfrom
lucagentile:fda-permission-ground-truth
Open

Correggi rilevamento di Full Disk Access concesso#3
lucagentile wants to merge 1 commit into
Pinperepette:mainfrom
lucagentile:fda-permission-ground-truth

Conversation

@lucagentile
Copy link
Copy Markdown

@lucagentile lucagentile commented May 13, 2026

Riepilogo

Il problema di partenza era che macOS poteva mostrare Full Disk Access come concesso, ma MacPersistenceChecker non recepiva sempre quel cambio di stato in modo affidabile. Da fuori sembrava un singolo bug di permessi; in pratica potevano sovrapporsi tre cause: firma ad-hoc non stabile per TCC, mancanza di refresh quando l'app tornava attiva e diagnostica insufficiente nel checker FDA.

Questa PR rende il flusso verificabile: il controllo non restituisce piu solo un booleano, ma conserva evidenza diagnostica sui probe eseguiti, si aggiorna quando l'app torna attiva e non permette piu a uno skip persistente di nascondere il problema tra un riavvio e l'altro.

Modifiche

  • Introduce snapshot strutturati per Full Disk Access con probe id, path, API usata, errno, errore Cocoa e timestamp.
  • Estrae le operazioni filesystem dietro un executor iniettabile e aggiunge test unitari sui casi grant/deny, polling e persistenza del flag fdaWasGranted.
  • Aggiunge refresh automatico quando l'app torna attiva tramite NSApplication.didBecomeActiveNotification e scenePhase.
  • Rende lo skip di Full Disk Access solo di sessione, cancella la vecchia chiave persistente e mostra un banner di visibilita ridotta quando l'app prosegue senza permesso.
  • Aggiunge diagnostica in onboarding con stato firma, ultimo snapshot FDA e nota sul possibile riavvio richiesto da macOS.
  • Aggiorna build.sh per usare tool di sistema con path assoluto, stampare dettagli di firma, supportare SIGNING_IDENTITY / REQUIRE_STABLE_SIGNING e fallire in preflight se l'identita richiesta non esiste.
  • Aggiunge scripts/verify-fda-build.sh per ispezionare bundle id, firma, designated requirement e Gatekeeper senza modificare TCC.
  • Documenta il runbook di verifica Full Disk Access e firma nel README.

Come verificare

  • swift test
  • bash -n build.sh
  • bash -n scripts/verify-fda-build.sh
  • ./build.sh
  • scripts/verify-fda-build.sh MacPersistenceChecker.app
  • REQUIRE_STABLE_SIGNING=1 ./build.sh fallisce subito con un errore chiaro se manca SIGNING_IDENTITY.
  • SIGNING_IDENTITY="Developer ID Application: Example Corp (TEAMID)" REQUIRE_STABLE_SIGNING=1 ./build.sh fallisce in preflight se l'identita indicata non esiste.

Note per i reviewer

Il comando scripts/verify-fda-build.sh e intenzionalmente read-only: non resetta TCC, non modifica permessi e non cambia il bundle dell'app.

@lucagentile lucagentile changed the title Rendi verificabile Full Disk Access Correggi rilevamento di Full Disk Access concesso May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant