SponsorSe connecterSoumettre
Blog

macOS 27.2.1 empêche curl de faire confiance à eMudhra. Voici ce que je vérifierais dans mon app Mac

Par Justinas Rolando, créateur de MacPip

Réponse courte

Le 9 novembre 2026, Apple a publié macOS 27.2.1, avec 26.7.3 et 15.8.3 pour les Mac plus anciens. Outre huit correctifs de sécurité, ces versions comblent une faille laissée par la compromission des certificats eMudhra : depuis le 19 octobre, Safari, Mail et les apps qui utilisent les frameworks réseau et sécurité d'Apple refusaient déjà 12 mauvais certificats, mais les outils en ligne de commande comme curl, git, python3 et openssl lisent /etc/ssl/cert.pem et continuaient à les accepter. Les mises à jour retirent cinq certificats racine de ce fichier, dont AAA Certificate Services. Si votre app, votre installeur ou votre script de mise à jour utilise ces outils, ou embarque sa propre liste de racines de confiance, testez vos téléchargements et vos propres serveurs sur les nouvelles versions.

La plupart des mises à jour du Mac, je les installe et je les oublie. macOS 27.2.1, sorti le 9 novembre, est de celles dont je lirais les petites lignes si je créais une app Mac, car elle change les certificats auxquels font confiance certains des outils présents sur tous les Mac. Apple l'a publiée avec macOS Tahoe 26.7.3 et Sequoia 15.8.3 pour les Mac plus anciens, et les trois versions portent le même changement.

Voici ce qui s'est passé, qui est concerné, et ce que je testerais.

Ce qui s'est passé

Les mêmes mises à jour corrigent huit autres failles de sécurité, dans Messages, AirPlay et Bluetooth, selon MacRumors. Apple n'a pas dit que l'une d'elles ait été utilisée dans des attaques.

Pourquoi un créateur d'app Mac devrait s'en soucier

Si votre app est une app Swift classique qui communique avec internet via URLSession, elle était très probablement couverte en octobre. La page d'Apple parle des apps qui utilisent ses frameworks réseau et sécurité, et Howard Oakley, cité par Michael Tsai, dit que les apps conçues avec les API standard d'Apple utilisent le magasin de confiance de macOS.

Les apps qui n'étaient pas couvertes sont celles que beaucoup de créateurs indépendants publient :

Le correctif d'octobre n'a donc peut-être pas atteint votre app, et celui de novembre non plus si elle apporte ses propres racines.

Il y a un deuxième aspect. AAA Certificate Services est une ancienne racine de Sectigo qui a signé beaucoup de certificats ordinaires. La page d'Apple prévient que les outils qui utilisent uniquement /etc/ssl/cert.pem peuvent ne pas réussir à vérifier certains sites dont les chaînes passent par les racines retirées. Si votre serveur de téléchargement, votre flux de mises à jour ou votre API de licences en fait partie, curl sur un Mac mis à jour pourrait se mettre à le refuser.

Ce que je vérifierais cette semaine

Ce sont mes propres étapes, pas celles d’Apple.

  1. Mettez un Mac à jour vers 27.2.1 et testez les téléchargements en ligne de commande. Lancez votre script d'installation, votre brew install si vous avez un cask, et curl -I sur les adresses de votre téléchargement, de votre appcast et de votre licence. Un certificat refusé apparaît comme une erreur, pas comme une page lente.
  2. Regardez votre propre chaîne de certificats. Lancez openssl s_client -connect yourapp.com:443 -showcerts et lisez les lignes de l'émetteur. Si vous voyez eMudhra, emSign ou AAA Certificate Services, demandez à votre hébergeur ou à votre vendeur de certificats une chaîne qui se termine par une autre racine.
  3. Trouvez le magasin de confiance que votre app utilise vraiment. Electron, Go, Rust avec racines intégrées, Python avec certifi et Java apportent tous le leur. Mettez à jour le runtime ou le paquet de racines vers une version qui retire les mauvais certificats, et mentionnez-le dans vos notes de version.
  4. Préparez une réponse pour le support. Si quelqu'un avec un Mac plus ancien ne peut pas installer les mises à jour, la page d'Apple explique comment retirer les racines à la main. Je renverrais vers la page d'Apple plutôt que de coller dans un e-mail des commandes qui utilisent sudo.
  5. Dites aux gens de mettre à jour. Si les utilisateurs de votre app sont plutôt techniques, une courte note dans votre prochaine version ou votre newsletter ne coûte rien.
  6. Vérifiez le fichier sur un Mac de test. La page d'Apple donne la commande ci-dessous, qui n'affiche rien une fois les deux racines principales retirées.
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

Ce que je ne ferais pas

Je ne désactiverais pas la vérification des certificats dans un script pour faire disparaître une erreur. C'est justement ce que tout ce changement protège. Et je ne dirais pas aux utilisateurs que leur Mac a été piraté. Rien n'indique que les clés aient été utilisées, et la plupart des apps étaient protégées dès octobre.

L'angle MacPip

MacPip ne vérifie pas à quels certificats une app fait confiance. Les fiches sont analysées automatiquement à leur soumission, et une coche bleue signifie seulement qu'une personne a essayé l'app à une date donnée. Si vous créez un outil de développement ou une app de sécurité et de confidentialité, vous êtes les plus susceptibles d'avoir un script ou un runtime intégré concerné, alors cela vaut bien une heure.

Nouveau aujourd'hui : le vérificateur de manifeste de confidentialité. Collez votre PrivacyInfo.xcprivacy et il vérifie chaque type de données, chaque finalité et chaque code de raison requise, comme CA92.1, d'après les listes d'Apple. Il indique aussi ce qu'Apple demande sur Mac et ce qu'elle ne demande pas. Il fonctionne dans la page et rien n'est envoyé. L'explicateur d'Info.plist et l'explicateur de notarisation sont juste à côté. Et si votre app Mac n'est pas encore sur MacPip, la référencer est gratuit.

Sources

Continuer la lecture

Soumettre votre appOutils gratuits pour les créateurs