SponsorSign inSubmit
Blog

macOS 27.2.1 stops curl trusting eMudhra. Here is what I would check in my Mac app

By Justinas Rolando, maker of MacPip

Short answer

On November 9, 2026, Apple shipped macOS 27.2.1, with 26.7.3 and 15.8.3 for older Macs. Besides eight security fixes, they close a gap left by the eMudhra certificate compromise: since October 19, Safari, Mail and apps using Apple's networking and security frameworks already refused 12 bad certificates, but command-line tools like curl, git, python3 and openssl read /etc/ssl/cert.pem and kept accepting them. The updates remove five root certificates from that file, including AAA Certificate Services. If your app, installer or update script uses those tools, or ships its own list of trusted roots, test your downloads and your own servers on the new versions.

Most Mac updates I install and forget. macOS 27.2.1, out on November 9, is one I'd read the small print of if I made a Mac app, because it changes which certificates some of the tools on every Mac trust. Apple shipped it with macOS Tahoe 26.7.3 and Sequoia 15.8.3 for older Macs, and all three carry the same change.

Here's what happened, who it reaches, and what I'd test.

What happened

The same updates fix eight other security bugs, in Messages, AirPlay and Bluetooth, per MacRumors. Apple didn't say any were used in attacks.

Why a Mac app maker should care

If your app is a normal Swift app that talks to the internet with URLSession, it was most likely covered in October. Apple's page talks about apps that use its networking and security frameworks, and Howard Oakley, quoted by Michael Tsai, says apps built on Apple's standard APIs use the macOS trust store.

The apps that weren't covered are the ones a lot of indie makers ship:

So the October fix may not have reached your app, and the November fix may not either if it brings its own roots.

There's a second side. AAA Certificate Services is an old Sectigo root that has signed plenty of ordinary certificates. Apple's page warns that tools using only /etc/ssl/cert.pem may fail to verify some sites whose chains run through the removed roots. If your download server, update feed or license API happens to be one of them, curl on an updated Mac could start refusing it.

What I'd check this week

These are my own steps, not Apple's.

  1. Update one Mac to 27.2.1 and test downloads from the command line. Run your install script, your brew install if you have a cask, and curl -I against your download, appcast and license addresses. A refused certificate shows up as an error, not a slow page.
  2. Look at your own certificate chain. Run openssl s_client -connect yourapp.com:443 -showcerts and read the issuer lines. If you see eMudhra, emSign or AAA Certificate Services, ask your host or certificate seller for a chain that ends at another root.
  3. Find the trust store your app really uses. Electron, Go, Rust with bundled roots, Python with certifi and Java all bring their own. Update the runtime or the root package to a version that drops the bad certificates, and note it in your release notes.
  4. Have a support answer ready. If someone on an older Mac can't install updates, Apple's page has steps to remove the roots by hand. I'd link to Apple's page rather than paste commands that use sudo into an email.
  5. Tell people to update. If your app's users lean technical, a short note in your next release or newsletter costs nothing.
  6. Check the file on a test Mac. Apple's page gives the command below, which prints nothing once the two key roots are gone.
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

What I wouldn't do

I wouldn't turn off certificate checks in a script to make an error go away. That's the one thing this whole change is protecting against. And I wouldn't tell users their Mac was hacked. There's no sign the keys were used, and most apps were protected in October.

The MacPip angle

MacPip doesn't check which certificates an app trusts. Listings are scanned automatically when they're submitted, and a blue tick only means a person tried the app on a date. If you make a developer tool or a security and privacy app, you're the most likely to have a script or bundled runtime this touches, so it's worth an hour.

New today: the privacy manifest checker. Paste your PrivacyInfo.xcprivacy and it checks each data type, purpose and required reason code, such as CA92.1, against Apple's own lists. It also says what Apple asks for on the Mac and what it doesn't. It runs on the page and nothing is sent. The Info.plist explainer and the notarization explainer are next door. And if your Mac app isn't on MacPip yet, listing it is free.

Sources

Keep reading

Submit your appFree tools for makers