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?)
Respuesta
¿Demasiados anuncios?
jojayontour
Puntos
36
Acabo de escribir este Apple script que comprueba si:
- SecurityAgent se está ejecutando.
- SecurityAgent está mostrando algo.
- SecurityAgent vive en el lugar correcto.
-
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"}
0 votos
Similar: unix.stackexchange.com/questions/229064/