Si se altera la firma del código de Mac, ¿qué podría fallar?

11

¿Qué molestias o problemas reales pueden ocurrir cuando se rompe la firma digital de una aplicación Mac?

Las aplicaciones en una Mac se pueden firmar digitalmente. Cuando la firma se rompe de alguna manera, sé que algunas aplicaciones pueden notarlo. Pero no sé con qué detalle serán solo molestias o realmente romperán las cosas:

  • Es posible que el firewall de OS X no pueda establecer correctamente una firma ad hoc, lo que hace que se le pregunte repetidamente "¿Desea que la aplicación '[..]' acepte conexiones de red entrantes? '

  • ¿Es posible que las aplicaciones permitidas por el Control parental ya no se ejecuten?

  • ¿El acceso al llavero podría estar roto?

  • Algunos dicen que la actualización del software de Apple podría fallar. Si es cierto, entonces me pregunto si esto realmente depende de la firma de Firma de Código, o sería causado por algún hash no coincidente para toda la aplicación, o la información de los archivos BOM .

Más información de fondo a continuación.


Los detalles de firma de código se pueden mostrar usando:

codesign --display -vv /Applications/iTunes.app/

... que produciría algo como lo siguiente (pero no advertiría sobre modificaciones):

[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]

La firma se puede validar usando:

codesign --verify -vv /Applications/iTunes.app/

Lo que produciría:

/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement

... o (incluso cuando simplemente coloca algún archivo adicional en la carpeta ./Contents/Resources de una aplicación):

/Applications/iTunes.app/: a sealed resource is missing or invalid

... o (quizás peor que el mensaje anterior):

/Applications/iTunes.app/: code or signature modified

La firma de código se remonta a OS 9 o anterior, pero la implementación actual se introdujo en 10.5 Leopard. Ars Technica escribe :

La firma de código vincula una identidad verificable criptográficamente a una colección de código y garantiza que se detecte cualquier modificación a ese código. No se hacen garantías sobre las partes involucradas. Por ejemplo, si descarga una aplicación firmada por Acme Inc., no puede probar nada al respecto, excepto que proviene de la misma entidad que afirma ser Acme Inc. la última vez que descargó algo de su sitio web.

Este ejemplo realmente resalta la aplicación más útil de la tecnología desde la perspectiva del consumidor. Al actualizar una aplicación Mac OS X hoy [en 10.4 Tiger, AvB], a menudo se le pide al usuario que vuelva a verificar que esta aplicación tenga acceso al Llavero para recuperar nombres de usuario y contraseñas. Esto parece una buena característica de seguridad, pero todo lo que realmente hace es capacitar a los usuarios de Mac para que hagan clic ciegamente en "Permitir siempre" cada vez que aparece. Y realmente, ¿qué va a hacer el usuario promedio, ejecutar el ejecutable a través de un desensamblador y verificar manualmente que el código sea seguro?

Una aplicación firmada, por otro lado, puede demostrar matemáticamente que, de hecho, es una nueva versión de la misma aplicación del mismo proveedor por el que expresó confianza en el pasado. El resultado es el final de los cuadros de diálogo que le piden que confirme una elección cuya seguridad no tiene una forma razonable de verificar.

Para el firewall en 10.5 Leopard, Apple explica :

Cuando agrega una aplicación a esta lista, Mac OS X firma digitalmente la aplicación (si aún no se ha firmado). Si la aplicación se modifica posteriormente, se le solicitará que permita o denegue las conexiones de red entrantes. La mayoría de las aplicaciones no se modifican a sí mismas, y esta es una característica de seguridad que le notifica el cambio.

[..]

Todas las aplicaciones que no están en la lista y que han sido firmadas digitalmente por una Autoridad de Certificación en la que confía el sistema (con el propósito de firmar el código) pueden recibir conexiones entrantes. Todas las aplicaciones de Apple en Leopard han sido firmadas por Apple y pueden recibir conexiones entrantes. Si desea rechazar una aplicación firmada digitalmente, primero debe agregarla a la lista y luego rechazarla explícitamente.

En 10.6 Snow Leopard, este último se hace más explícito (y se puede deshabilitar) como "Permitir automáticamente que el software firmado reciba conexiones entrantes. Permite que el software firmado por una autoridad de certificación válida proporcione servicios a los que se accede desde la red".

Firewall de Mac OS X 10.6: permite automáticamente que el software firmado reciba conexiones entrantes

(En 10.6, las opciones 10.5.1 "Permitir todas las conexiones entrantes", "Permitir solo servicios esenciales" y "Establecer acceso para servicios y aplicaciones específicos" se han actualizado en una opción para "Bloquear todas las conexiones entrantes" o una lista de las aplicaciones y opciones permitidas "Permitir automáticamente que el software firmado reciba conexiones entrantes" y "Habilitar el modo oculto". Antes de la actualización 10.5.1 , "Permitir solo servicios esenciales" en realidad se llamaba "Bloquear todas las conexiones entrantes".

Para las aplicaciones (de Apple) que de alguna manera tienen su firma original rota, esta firma ad hoc podría de alguna manera no ser persistente, y se sabe que causó problemas para configd, mDNSResponder y racoon.

Arjan
fuente
Supongo que la respuesta de The Tentacle lo dice todo (y no importa cuánto lo intente: romper firmas ni siquiera me ha mostrado una advertencia para Keychain Access todavía). Aún así, me pregunto si alguien ha encontrado problemas. Esperamos que la pregunta no es demasiado tiempo para leer ... ;-)
Arjan
etiqueta de certificado agregada
quack quijote
Niza: alguien volvió a firmar la versión beta de Safari 4 (con sus pestañas en la parte superior) para que sea compatible con Llavero: ver los comentarios de "petersconsult" en macosxhints.com/article.php?story=20090925131057394
Arjan

Respuestas:

1

Un ejemplo de dónde la firma de código 'romperá' una aplicación:

  • Keychain Access.app no ​​le permitirá ver las contraseñas si detecta que han sido manipuladas.

Fuente: Lista de correo de Apple y la irrealidad de Jaharmi

Chealion
fuente
Por supuesto, ahora que lo mencionas, ¡esta es la aplicación que debería haber usado para mis primeras pruebas! :-)
Arjan
3

Lo que puedo decirte es que Candybar, la aplicación de personalización de íconos utilizada por muchas personas, rompe la firma digital de al menos Finder y Dock (y probablemente algunas otras aplicaciones centrales del sistema) ya que cambia los archivos de recursos, y hasta ahora nada ha sido reportado como un problema debido a esto. Por lo tanto, una muestra en la naturaleza utilizando componentes principales del sistema operativo diría: ¡no mucho!

EDITAR: aquí está el resultado de verificar la firma de mi código para mi Dock en Snow Leopard:

⚛$ codesign --verify --verbose /System/Library/CoreServices/Dock.app/
/System/Library/CoreServices/Dock.app/: a sealed resource is missing or invalid
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-big.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/finder.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/frontline.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_large.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_medium.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-l.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-m.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-sm.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-xl.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashfull.png: resource modified
El tentáculo
fuente
¡Ajá, lo investigaré un poco! Algunos iconos de cambio manual no rompieron la firma de código para algunas otras aplicaciones. Los propios fabricantes escribieron en 2008: En cuanto a cambiar los iconos de sus aplicaciones a mano, ¡lo invitamos a hacerlo! Como advertencia: si Apple habilita la firma del código incorporado en una futura actualización menor de Mac OS X, sus aplicaciones simplemente ya no se iniciarán. Esto es lo que estamos tratando de evitar de forma segura al deshabilitar esa función hasta que Apple tenga una idea de sus planes. - macupdate.com/info.php/id/8948?rord=mod
Arjan
He agregado el resultado después de modificar manualmente mi muelle en Snow Leopard ...
The Tentacle
Ah, estupido. Hasta ahora, lo único que probé fue el ícono del programa (pegando un ícono nuevo a través de Obtener información del Finder), no cualquier ícono utilizado por el programa en sí. Ok, la firma del código está rota con seguridad. El comentario del desarrollador de Candybar todavía me da un poco de miedo, pero Apple podría meter en problemas a muchas personas al cambiar repentinamente los efectos (no) actuales.
Arjan
Bueno, la prueba es modificar los recursos en una aplicación orientada hacia la red y ver si romper la firma se detiene el traspaso automático desde el firewall de aplicaciones ...
El tentáculo
(Hmmm, el desarrollador de CandyBar eliminó el comentario del 10 de enero de 2008 de MacUpdate. La memoria caché de Google todavía lo muestra, pero aparentemente hay una nueva versión para OS X 6.1, por lo que el problema se ha resuelto o CandyBar quiere dejar que los perros durmientes mientan ... .? Vamos a suponer que no hay ningún problema a continuación)!
Arjan
0

En la revisión de Snow Leopard de ars technica se proporciona una explicación algo detallada de la firma de código en Snow Leopard . Por lo que puedo decir, romper la firma de código realmente no romperá nada. Sin embargo, hará que las aplicaciones no sean confiables, lo que significa tener que verificar más de sus acciones.

Peter Wagenet
fuente
En realidad es la revisión 10.5 Leopard. Sin embargo, una buena cita de la revisión 10.6: "Y no olvidemos las tecnologías" Mac OS X "que más tarde descubrimos que se desarrollaron para el iPhone y que se anunció por primera vez para Mac (porque el iPhone aún era un secreto), como Core Animation y firma de código ". - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
Arjan
0

Estaba reparando mis permisos de disco el otro día (desde la Utilidad de Discos), y recibí esta advertencia:

Warning: SUID file "System/.../ARDAgent" has been modified and will not be repaired.

Entonces hay algo que sucederá. No sé lo significativo que es eso.

wfaulk
fuente
Interesante, especialmente cuando Apple enumera esto en "Mac OS X 10.5: mensajes de permisos de reparación de disco de la utilidad de disco que puede ignorar con seguridad" en support.apple.com/kb/TS1448. Ninguna noticia de Apple sobre cómo se cambió esto y por qué no No importa ... ¿De codesign --verifyhecho muestra una firma rota?
Arjan
0

La implementación actual de la firma de código es bastante inofensiva y probablemente se apresuró a salir en beneficio de los desarrolladores de iPhone. Con suerte, será obligatorio en algún momento en el futuro, y con suerte también será mucho más fácil y más barato para ese momento.

Hasaan Chop
fuente