PatrocinarEntrarEnviar
Blog

O macOS 27.2.1 faz o curl parar de confiar na eMudhra. Veja o que eu verificaria no meu app para Mac

Por Justinas Rolando, criador do MacPip

Resposta curta

Em 9 de novembro de 2026, a Apple lançou o macOS 27.2.1, com 26.7.3 e 15.8.3 para Macs mais antigos. Além de oito correções de segurança, eles fecham uma brecha deixada pelo comprometimento dos certificados da eMudhra: desde 19 de outubro, o Safari, o Mail e os apps que usam os frameworks de rede e segurança da Apple já recusavam 12 certificados ruins, mas ferramentas de linha de comando como curl, git, python3 e openssl liam o /etc/ssl/cert.pem e continuavam aceitando. As atualizações removem cinco certificados raiz desse arquivo, incluindo o AAA Certificate Services. Se seu app, instalador ou script de atualização usa essas ferramentas, ou traz a própria lista de raízes confiáveis, teste seus downloads e seus próprios servidores nas novas versões.

A maioria das atualizações do Mac eu instalo e esqueço. O macOS 27.2.1, lançado em 9 de novembro, é uma que eu leria com atenção se fizesse apps para Mac, porque muda em quais certificados algumas das ferramentas de todo Mac confiam. A Apple o lançou junto com o macOS Tahoe 26.7.3 e o Sequoia 15.8.3 para Macs mais antigos, e os três trazem a mesma mudança.

Aqui está o que aconteceu, quem é afetado e o que eu testaria.

O que aconteceu

As mesmas atualizações corrigem outros oito bugs de segurança, no Mensagens, no AirPlay e no Bluetooth, segundo o MacRumors. A Apple não disse que algum deles tenha sido usado em ataques.

Por que um criador de apps de Mac deveria se importar

Se seu app é um app Swift comum que fala com a internet usando URLSession, ele provavelmente já estava coberto em outubro. A página da Apple fala de apps que usam seus frameworks de rede e segurança, e Howard Oakley, citado por Michael Tsai, diz que apps feitos com as APIs padrão da Apple usam o repositório de confiança do macOS.

Os apps que não estavam cobertos são os que muitos criadores independentes lançam:

Então a correção de outubro pode não ter chegado ao seu app, e a de novembro também pode não chegar se ele trouxer as próprias raízes.

Há também outro lado. O AAA Certificate Services é uma raiz antiga da Sectigo que assinou muitos certificados comuns. A página da Apple avisa que ferramentas que usam apenas /etc/ssl/cert.pem podem não conseguir verificar alguns sites cujas cadeias passam pelas raízes removidas. Se seu servidor de download, feed de atualização ou API de licença for um deles, o curl em um Mac atualizado pode começar a recusá-lo.

O que eu conferiria esta semana

Estes são os meus próprios passos, não os da Apple.

  1. Atualize um Mac para o 27.2.1 e teste os downloads pela linha de comando. Rode seu script de instalação, seu brew install se você tiver um cask, e curl -I nos endereços de download, appcast e licença. Um certificado recusado aparece como erro, não como página lenta.
  2. Olhe a cadeia de certificados do seu site. Rode openssl s_client -connect yourapp.com:443 -showcerts e leia as linhas do emissor. Se aparecer eMudhra, emSign ou AAA Certificate Services, peça à sua hospedagem ou a quem vende o certificado uma cadeia que termine em outra raiz.
  3. Descubra qual repositório de confiança seu app realmente usa. Electron, Go, Rust com raízes embutidas, Python com certifi e Java trazem o seu próprio. Atualize o runtime ou o pacote de raízes para uma versão que remova os certificados ruins e avise nas notas de lançamento.
  4. Tenha uma resposta de suporte pronta. Se alguém com um Mac mais antigo não conseguir instalar atualizações, a página da Apple tem os passos para remover as raízes manualmente. Eu colocaria o link da página da Apple em vez de colar num e-mail comandos que usam sudo.
  5. Avise as pessoas para atualizarem. Se quem usa seu app é mais técnico, uma nota curta no próximo lançamento ou na newsletter não custa nada.
  6. Confira o arquivo em um Mac de teste. A página da Apple traz o comando abaixo, que não mostra nada quando as duas raízes principais já foram removidas.
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

O que eu não faria

Eu não desligaria a verificação de certificados num script só para fazer um erro sumir. Essa é justamente a única coisa que toda essa mudança protege. E eu não diria aos usuários que o Mac deles foi hackeado. Não há sinal de que as chaves foram usadas, e a maioria dos apps já estava protegida em outubro.

O ponto de vista do MacPip

O MacPip não verifica em quais certificados um app confia. As listagens são analisadas automaticamente quando enviadas, e um selo azul só significa que uma pessoa testou o app em uma data. Se você cria uma ferramenta para desenvolvedores ou um app de segurança e privacidade, é quem mais provavelmente tem um script ou runtime embutido afetado por isso, então vale uma hora do seu tempo.

Novidade de hoje: o verificador de manifesto de privacidade. Cole seu PrivacyInfo.xcprivacy e ele confere cada tipo de dado, finalidade e código de motivo obrigatório, como CA92.1, com as listas da própria Apple. Ele também diz o que a Apple pede no Mac e o que não pede. Roda na página e nada é enviado. O guia do Info.plist e o guia de notarização estão logo ao lado. E se seu app para Mac ainda não está no MacPip, listar é grátis.

Fontes

Continue lendo

Envie seu appFerramentas grátis para criadores