finestra di dialogo di richiesta password

4

A volte, quando si installa un programma, viene visualizzata una finestra di dialogo che richiede una password di amministratore per consentire all'installatore di "apportare modifiche". Ciò sembra corretto, ma non sarebbe facile per un installatore fingere questo e inviare la password all'autore (e all'IP ecc.)? C'è un modo per assicurarmi che questa casella diologue provenga effettivamente dal sistema operativo? (E vedere cosa viene permesso esattamente?)

    
posta Toothrot 11.10.2015 - 12:00
fonte

1 risposta

1

Ho appena scritto questo Apple Script che verifica se:

  1. SecurityAgent è in esecuzione.
  2. SecurityAgent sta visualizzando qualcosa.
  3. SecurityAgent vive nella posizione corretta.
  4. SecurityAgent non è modificato, il che significa che la firma del codice non è danneggiata.

    tell application "System Events"
        set processList to get the name of every process
        set saWindows to {}
        if processList contains "SecurityAgent" then -- does it run?
        set saPath to POSIX path of application file of application process "SecurityAgent"
        if saPath is not "/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle" then -- assume this location is protected enough to be geniune
            tell application "Finder" to display dialog "There is a SecurityAgent, but it's the wrong one!" with icon stop buttons {"OK"}
            return
        end if
    
        try -- is it signed
            set saSignature to do shell script "codesign -d /System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle/Contents/MacOS/SecurityAgent"
        on error
            tell application "Finder" to display dialog "Signature broken!" with icon stop buttons {"OK"}
            return
        end try
    
        set saWindows to every window of application process "SecurityAgent"
    end if
    
    if saWindows is {} then -- Does it display a dialog?
        tell application "Finder" to display dialog "No official password dialog is opened." buttons {"OK"} with icon stop
        return
    end if
    end tell
    
    display dialog "Seems legit." with icon note buttons {"OK"}
    
risposta data 11.10.2015 - 18:22
fonte

Leggi altre domande sui tag