7 votos

Caja de diálogos con contraseña

A veces, cuando uno está instalando un programa, aparece un cuadro de diálogo que pide una contraseña de administrador para que el instalador pueda "hacer cambios". Eso parece bien, pero ¿no sería fácil para un instalador falsificar esto y enviar la contraseña al autor (y la IP, etc.)? ¿Hay alguna manera de asegurarse de que este cuadro de diálogo es realmente del sistema operativo? (¿Y ver qué es exactamente lo que se permite?)

0 votos

3voto

jojayontour Puntos 36

Acabo de escribir este Apple script que comprueba si:

  1. SecurityAgent se está ejecutando.
  2. SecurityAgent está mostrando algo.
  3. SecurityAgent vive en el lugar correcto.
  4. SecurityAgent no está modificado, lo que significa que la firma del código no está dañada.

    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"}

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X