スポンサーサインイン登録
ブログ

macOS 27.2.1 で curl が eMudhra を信頼しなくなります。Mac アプリで私が確認したいこと

作者: Justinas Rolando、MacPipの開発者

結論

2026年11月9日、Apple は macOS 27.2.1 を、古い Mac 向けの 26.7.3 と 15.8.3 とともに公開しました。8 件のセキュリティ修正に加えて、eMudhra 証明書の侵害で残っていた穴をふさぎます。10月19日以降、Safari、メール、Apple のネットワークおよびセキュリティのフレームワークを使うアプリは、不正な証明書 12 件をすでに拒否していましたが、curl、git、python3、openssl などのコマンドラインツールは /etc/ssl/cert.pem を読み、受け入れ続けていました。今回のアップデートで、AAA Certificate Services を含むルート証明書 5 件がそのファイルから削除されます。アプリ、インストーラ、アップデート用スクリプトがこれらのツールを使っている場合や、独自の信頼ルート一覧を同梱している場合は、新しいバージョンでダウンロードと自分のサーバーをテストしてください。

Mac のアップデートは、ほとんどの場合インストールしたら忘れてしまいます。11月9日に出た macOS 27.2.1 は、Mac アプリを作っているなら注意書きまで読んでおきたいアップデートです。すべての Mac に入っているツールの一部が信頼する証明書が変わるからです。Apple は、古い Mac 向けに macOS Tahoe 26.7.3 と Sequoia 15.8.3 も同時に出しており、3 つとも同じ変更が入っています。

何が起きたのか、誰に影響するのか、何をテストしたいかをまとめます。

何が起きたのか

同じアップデートで、メッセージ、AirPlay、Bluetooth にある別の 8 件のセキュリティ上のバグも修正されます(MacRumors による)。Apple は、攻撃に使われたものがあるとは述べていません。

Mac アプリの開発者が気にするべき理由

アプリが URLSession でインターネットと通信する通常の Swift アプリなら、10 月の対応でおそらくカバーされていました。Apple のページは、Apple のネットワークおよびセキュリティのフレームワークを使うアプリについて述べています。Michael Tsai 氏が引用した Howard Oakley 氏は、Apple 標準の API で作られたアプリは macOS の信頼ストアを使うと述べています。

対象外だったのは、多くのインディー開発者が出荷しているタイプのアプリです。

つまり、10 月の対応はアプリに届いていないかもしれず、独自のルートを持つアプリでは 11 月の対応も届かないかもしれません。

もう一つの側面があります。AAA Certificate Services は Sectigo の古いルートで、ごく普通の証明書にも数多く署名してきました。Apple のページは、/etc/ssl/cert.pem だけを使うツールでは、削除されたルートを経由するチェーンのサイトを検証できなくなる場合があると警告しています。ダウンロードサーバー、アップデート用フィード、ライセンス API がたまたまその 1 つなら、更新した Mac の curl が拒否し始めるかもしれません。

今週確認したいこと

これはAppleの手順ではなく、私自身の手順です。

  1. Mac 1 台を 27.2.1 に更新して、コマンドラインからのダウンロードをテストします。インストールスクリプトを実行し、cask があるなら brew install も試し、ダウンロード、appcast、ライセンスの各アドレスに curl -I を実行します。証明書が拒否されると、ページが遅くなるのではなく、エラーとして表れます。
  2. 自分の証明書チェーンを確認します。openssl s_client -connect yourapp.com:443 -showcerts を実行して、issuer の行を読みます。eMudhra、emSign、AAA Certificate Services が見つかったら、ホスティング会社か証明書の販売元に、別のルートで終わるチェーンを頼んでください。
  3. アプリが実際に使っている信頼ストアを調べます。Electron、Go、ルートを同梱した Rust、certifi を使う Python、Java は、それぞれ独自のストアを持っています。ランタイムまたはルートのパッケージを、問題のある証明書を外したバージョンに更新し、リリースノートに書いておきましょう。
  4. サポート向けの回答を用意しておきます。古い Mac でアップデートをインストールできない人には、Apple のページに手作業でルートを削除する手順があります。sudo を使うコマンドをメールに貼るより、Apple のページへのリンクを案内したいところです。
  5. アップデートを呼びかけます。アプリのユーザーが技術に詳しい人たちなら、次のリリースやニュースレターに短く書いておくだけでも、手間はかかりません。
  6. テスト用のMacでファイルを確認する。Appleのページには下のコマンドが載っていて、2つの重要なルート証明書が消えていれば何も表示されません。
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

私ならやらないこと

エラーを消すために、スクリプトで証明書のチェックをオフにすることはおすすめしません。今回の変更が守ろうとしているのは、まさにそこだからです。また、ユーザーに「Mac がハッキングされた」と伝えることもおすすめしません。鍵が使われた形跡はなく、ほとんどのアプリは 10 月に保護されていました。

MacPipから見ると

MacPip は、アプリがどの証明書を信頼するかをチェックしません。掲載ページは送信時に自動でスキャンされ、青いチェックは、人がある日付にそのアプリを試したことだけを表します。開発者ツールやセキュリティとプライバシーのアプリを作っているなら、今回の影響を受けるスクリプトや同梱ランタイムを持っている可能性が最も高いので、1 時間かける価値があります。

本日の新ツール: プライバシーマニフェストチェッカー。PrivacyInfo.xcprivacy を貼り付けると、各データタイプ、目的、CA92.1 のような必須理由コードを、Apple 自身の一覧と照らし合わせます。Mac で Apple が求めること、求めないことも表示します。ページ上で動作し、何も送信されません。Info.plist 解説と公証の解説もすぐ隣にあります。まだ Mac アプリが MacPip にないなら、掲載は無料です。

出典

続けて読む

アプリを登録開発者向けの無料ツール