Una sana costumbre cuando uno se baja de Internet cualquier programa es intentar verificar su autenticidad: que el creador sea el que dice ser y que el binario no ha sido alterado por terceros. La manera tradicional de hacer esto es usar algún tipo de función hash y técnicas de firmado digital que permitan comprobar que el binario es auténtico. El lado malo: normalmente tenemos complicado verificar la autenticidad de las claves públicas en las que se apoya estos procesos.
Algunos sistemas operativos han incluido en sus últimas versiones servicios que permiten comprobar la autenticidad e integridad de programas que se bajan de Internet, siempre que hagan uso de estas facilidades. En el caso del MacOS X esta infraestructura empezó a aparecer en la versión 10.5 (Leopard) del sistema operativo. A través del comando codesign se puede realizar operaciones de firma digital de los binarios que la incorporen.
La herramienta da la oportunidad de comprobar las firmas digitales tanto de un fichero en disco como de una aplicación que esté ejecutándose en ese momento. Por ejemplo:
codesign --verify --verbose /Applications/Twitter.app
/Applications/Twitter.app: valid on disk
/Applications/Twitter.app: satisfies its Designated Requirement
De igual manera, se puede verificar la integridad de un proceso que esté ejecutándose en el sistema. En este caso, en vez de un path se le pasa el PID del proceso. En este ejemplo verificaría la integridad del proceso cuyo PID es 1234
swordcoast:~ terron$ codesign --verify --verbose 1234
También se puede obtener información sobre la firma criptográfica de un binario con ayuda de la opción --display
codesign --display --verbose=4 /Applications/Twitter.app
Executable=/Applications/Twitter.app/Contents/MacOS/Twitter
Identifier=com.twitter.twitter-mac
Format=bundle with Mach-O universal (i386 x86_64)
CodeDirectory v=20100 size=14072 flags=0x200(kill) hashes=697+3 location=embedded
Hash type=sha1 size=20
CDHash=4db441b1c36dfaf0edb5d548c78587b0037698c1
Signature size=4169
Authority=Apple Mac OS Application Signing
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Info.plist entries=32
Sealed Resources rules=5 files=124
Internal requirements count=2 size=344
La última versión de MacOS X, Mountain Lion, y a partir de la versión 10.7.5 de Lion , se tiene una infraestructura llamada GateKeeper que permite la configurar el sistema para evitar la ejecución de aquellos programas que no cuenten con una firma digital válida.
Si el binario que nos bajamos no tiene firma digital, es aconsejable usar algún tipo de servicio, como VirusTotal para pasar el programa por una batería de antivirus.
Por supuesto, todo este proceso de verificación implica que nos fiamos de Apple y de la cadenas de criptografía que lleva el sistema operativo. No voy a ser iluso, si cualquier agencia estatal deseara que instalásemos un binario con un troyano, no creo que le cueste mucho convencer a Apple que le firme un binario "aliñado" que el sistema se lo tragase sin problemas.
Technorati Tags: macosx