O Mac OS fica mais lento? - Catalina verifica qualquer código não assinado pela Internet na inicialização

Muitos usuários depois de mudarem para a Catalina começaram a reclamar dos freios. Colegas ocidentais descobriram o motivo: o MacOS envia um hash de qualquer código não assinado aos servidores da Apple.

Isso cria sérios atrasos na execução, que podem ser facilmente verificados:

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

Os resultados são surpreendentes:

$ 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 que isso acontece? A Apple usa o mecanismo de Notarização há algum tempo - com isso, os usuários podem ter certeza de que um programa assinado por um ID de desenvolvedor válido não contém componentes maliciosos. Ou seja, além do fato de o aplicativo ser assinado, a Apple também verificará automaticamente se há elementos de malware.
Curiosamente, no futuro, a Apple geralmente planeja proibir o lançamento de programas sem reconhecimento de firma. Citar:
Importante A

partir do macOS 10.14.5, o software assinado com um novo certificado de ID do desenvolvedor e todas as extensões de kernel novas ou atualizadas devem ter um reconhecimento de firma para serem executadas. A partir do macOS 10.15, todos os softwares criados após 1º de junho de 2019 e distribuídos com o ID do desenvolvedor devem ter reconhecimento de firma.

Agora, aparentemente, para interromper, qualquer novo código não assinado executado é enviado ao servidor AAPL. Isso pode ser facilmente verificado executando qualquer analisador de rede e vendo chamadas para o domínio api.apple-cloudkit.com. Note-se que não é o próprio código que é transmitido, mas a quantidade de hash. Você pode verificar isso de duas maneiras - compare a quantidade de dados transmitidos pela rede para scripts de tamanhos diferentes; bem como examinar o conteúdo do daemon responsável pelo envio de dados ( otool -tV / usr / libexec / syspolicyd ). No entanto, com uma conexão lenta à Internet, os atrasos podem ser segundos - um usuário da China escreve sobre um atraso de 5,47 segundos.

Por um lado, a Apple pode entender - ela se preocupa com a segurança dos usuários, ao mesmo tempo em que transforma o processo de qualquer desenvolvimento em sua plataforma no inferno.

Mas quero citar o desenvolvedor que primeiro chamou a atenção para o problema:
Esse comportamento do sistema operacional indica problemas sérios no design quando dois métodos da API do sistema de baixo nível (por exemplo, exec e getxattr) executam chamadas de rede síncronas antes de retornar o resultado.

Links:

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

All Articles