Verificar la firma de código de un instalador de paquetes

En macOS, cuando abre una aplicación descargada de Internet, Gatekeeper verifica automáticamente la firma del código y, en caso de cualquier problema, le advierte y bloquea la aplicación. Según tengo entendido, eso solo sucede con las aplicaciones (extensión .app) y Gatekeeper no hará lo mismo con los instaladores de paquetes (extensión .pkg).

Decidí hacer un experimento para comprobarlo. Usé un instalador de paquetes ( 1Password-7.8.pkg) con una firma válida y eliminé la firma por completo, esencialmente hice lo siguiente:

  1. pkgutil --expand 1Password-7.8.pkg Unsigned.unpkg
  2. pkgutil --flatten Unsigned.unpkg Unsigned.pkg
  3. pkgutil --check-signature Unsigned.pkg

La salida del paso 3 es:

Package "Unsigned.pkg":
   Status: no signature

Luego hice doble clic en Unsigned.pkgy pude hacer la instalación sin ninguna advertencia o bloqueo del Gatekeeper. Ese experimento demuestra que Gatekeeper no verifica la firma del código de un instalador de paquetes (extensión .pkg) automáticamente, ¿verdad?

Si la suposición anterior es actual, conduce a la segunda pregunta. ¿Cómo verifico la firma de un instalador de paquetes manualmente antes de ejecutarlo?

Apple tiene un excelente artículo sobre cómo verificar la firma de un instalador de paquetes: https://support.apple.com/en-us/HT202369 : simplemente necesita abrir el instalador y hacer clic en el candado en la esquina superior derecha . Esto funciona sin problemas en la mayoría de los casos. Pero si un instalador contiene el script de preinstalación , cuando abre el instalador verá una ventana emergente con el texto "Este paquete ejecutará un programa para determinar si el software se puede instalar". la ventana emergente se ve así: ingrese la descripción de la imagen aquíEn ese caso, el candado está atenuado y no puede hacer clic en él hasta que haga clic en "Permitir". El problema es que cuando hace clic en "Permitir", se ejecutará el script de preinstalación y significa que está ejecutando algún tipo de script antes de verificar su autenticidad. Generalmente,script solo verifica los requisitos y la compatibilidad como se indica en el título de la ventana emergente. Pero potencialmente puede hacer cosas arbitrarias, por ejemplo, el caso del instalador de zoom: https://twitter.com/c1truz_/status/1244737672930824193

Entonces, ¿existe una opción para verificar la firma del código de un instalador de paquetes desde la GUI antes de ejecutarlo o Apple acaba de pasar por alto ese caso y necesito enviarles una solicitud de función?

Por supuesto, siempre puede verificar la firma desde la terminal así: `pkgutil --check-signature, pero ejecutar ese comando para cualquier instalador de paquetes descargado de Internet no parece correcto y debería haber una forma nativa y más conveniente de Haz eso.

¡Gracias!

Respuestas (1)

No existe una forma actual de verificar la firma usando Installer.app antes de aceptar el script previo al vuelo. Este es un descuido de larga data por parte de los ingenieros de Apple.

Envíe sus comentarios o, si es un desarrollador, informe formalmente este problema a Apple.