cURLの開発者は3月8日(現地時間)、「the Apple curl security incident 12604|daniel.haxx.se」において、Appleの提供しているmacOS版のcURLバイナリに仕様と異なる実装が含まれておりセキュリティ上の問題を抱えていると報じた。この実装により、本来なら検証に失敗するはずの証明書がパスする可能性があるという。

  • the Apple curl security incident 12604|daniel.haxx.se

cURLの証明書検証オプション「--cacert」

cURLには、指定の証明書ファイルを使用したピアの検証機能が実装されている。この機能はオプション「--cacert」により提供されており、指定のCA証明書(複数内包可)のみを使用した接続先サーバの証明書検証を可能にする。オプションを指定しない場合、デフォルトのCA証明書が使用される。

2023年12月28日、cURLのバグレポートに「--cacert」の挙動がmacOSとLinuxとで異なるとする報告が投稿された(参考:「flag --cacert behavior isn't consistent between macOS and Linux · Issue #12604 · curl/curl · GitHub」)。投稿によると、同じバージョンのcURLに対して同じCA証明書を指定した場合に、macOSはパスするがLinuxはエラーになるという。

cURLの開発者兼メンテナのDaniel Stenberg氏がこのバグについて調査。その結果、macOS版のcURLは指定されたCA証明書による検証に失敗した場合、フォールバックしてシステムのデフォルトCA証明書による再検証を実行することがわかったと説明している。つまり、AppleはcURLの仕様を無視して改造を施したことになる。

Appleの対応

Daniel Stenberg氏はこの改造について「パスしないはずの証明書が突然パスするようになる」として、セキュリティ上の問題と指摘している。そして、2023年12月29日(協定世界時)にAppleへ問題を報告している。

Daniel Stenberg氏によるとAppleは2024年3月8日、次のように回答したという。

  • AppleバージョンのOpenSSL(LibreSSL)は、デフォルトの信頼源として意図的に組み込み信頼ストア(CA証明書)を使用する。サーバ証明書は組み込み信頼ストアにより正常に検証できるため、われわれのプラットフォームで対処する必要があるとは考えていない

Daniel Stenberg氏はこのAppleの回答に対し、「この文書化されていない機能により、macOSにおけるcURLを使用したCA証明書の検証の信頼性は低下する」として、否定的な見解を述べている。また、この問題はcURLに起因していないためcURL側で対処することはできず、macOSユーザーには仕様と異なる挙動に注意するよう呼びかけている。