¿Mac OS se ralentiza? - Catalina comprueba cualquier código sin firmar a través de Internet al inicio

Muchos usuarios después de cambiar a Catalina comenzaron a quejarse de los frenos. Los colegas occidentales descubrieron la razón: MacOS envía un hash de cualquier código sin firmar a los servidores de Apple.

Esto crea serios retrasos en la ejecución, que se pueden verificar fácilmente:

echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh
time /tmp/test.sh && time /tmp/test.sh

Los resultados son sorprendentes:

$ time /tmp/test.sh && time /tmp/test.sh
Hello

real    0m1.417s
user    0m0.001s
sys 0m0.003s
Hello

real    0m0.003s
user    0m0.001s
sys 0m0.002s

¿Por qué sucede? Apple ha estado utilizando el mecanismo de notarización durante bastante tiempo ; con él, los usuarios pueden estar seguros de que un programa firmado por un ID de desarrollador válido no contiene componentes maliciosos. Es decir, además del hecho de que la aplicación está firmada, Apple también la verificará automáticamente en busca de elementos de malware.
Curiosamente, en el futuro, Apple generalmente planea prohibir el lanzamiento de programas no notarizados. Citar:
Importante

A partir de macOS 10.14.5, el software firmado con un nuevo certificado de ID de desarrollador y todas las extensiones de kernel nuevas o actualizadas deben estar notariadas para ejecutarse. A partir de macOS 10.15, todo el software creado después del 1 de junio de 2019 y distribuido con ID de desarrollador debe estar notarizado.

Ahora, aparentemente, para entrar, cualquier nuevo código sin firmar que ejecute se envía al servidor AAPL. Esto se puede verificar fácilmente ejecutando cualquier analizador de red y viendo llamadas al dominio api.apple-cloudkit.com. Cabe señalar que no se transmite el código en sí, sino la cantidad de hash. Puede verificar esto de dos maneras: compare la cantidad de datos transmitidos a través de la red para scripts de diferentes tamaños; además de mirar el contenido del demonio responsable del envío de datos ( otool -tV / usr / libexec / syspolicyd ). Sin embargo, con una conexión lenta a Internet, los retrasos pueden ser segundos: un usuario de China escribe sobre un retraso de 5,47 segundos.

Por un lado, Apple puede entender: se preocupa por la seguridad de los usuarios, sin embargo, al mismo tiempo convierte el proceso de cualquier desarrollo en su plataforma en un infierno.

Pero quiero citar al desarrollador que primero llamó la atención sobre el problema:
este comportamiento del sistema operativo indica serios problemas en su diseño cuando dos métodos de la API del sistema de bajo nivel (por ejemplo, exec y getxattr) realizan llamadas de red sincrónicas antes de devolver el resultado.

Enlaces:

lapcatsoftware.com/articles/catalina-executables.html
news.ycombinator.com/item?id=23275922
sigpipe.macromates.com/2020/macos-catalina-slow-by-design

All Articles