1 ポイント 投稿者 GN⁺ 2024-03-10 | 1件のコメント | WhatsAppで共有

Apple curl セキュリティインシデント 12604

  • 2023年12月28日、curl のイシュートラッカーにバグレポート 12604 が提出された。
  • 問題のタイトルは「flag –cacert behavior isn’t consistent between macOS and Linux」で、macOS と Linux の間で --cacert フラグの動作が一貫していないことを指摘している。
  • レポーターは、macOS にバンドルされた curl のバージョンが、オープンソースから完全にビルドされた curl バイナリとは異なる動作をすることを示した。

Apple のバージョンはシステム CA ストアを2回目に確認する

  • --cacert コマンドラインオプションは、ユーザーが特定の CA 証明書セットのみを信頼するよう curl に指示する方法を提供する。
  • macOS で Apple 提供の curl バージョンを使う場合、指定された CA 証明書セットでの検証に失敗すると、システム CA ストアを2回目に確認しているように見える。
  • これは文書化されておらず、ユーザーにとって予想外の挙動である。

これはセキュリティ問題である

  • ユーザーが指定した CA 証明書ファイルで検査を実行する際、システム CA ストアにサーバーを検証できる証明書があれば失敗しない。
  • その結果、本来通過してはならない証明書検査が通過してしまうというセキュリティ問題が発生する。

Apple は問題ないと述べる

  • 2024年3月8日、Apple Product Security は、OpenSSL のバージョンである LibreSSL が、意図的に組み込みのシステム信頼ストアをデフォルトの信頼ソースとして使用すると回答した。
  • サーバー証明書が組み込みのシステム信頼ストアを使って正常に検証できるため、これを問題とは見なしていない。

同意できない

  • この文書化されていない機能により、macOS における curl を使った CA 証明書検証は完全には信頼できず、ドキュメントとも一致していない。
  • ユーザーを混乱させる可能性がある。
  • この問題は、私たちが配布する curl バージョンのセキュリティ脆弱性ではないため、CVE は発行しない。
  • 問題は厳密には curl コードではなく、Apple が提供し curl のビルドに使用している LibreSSL のバージョンにある。

GN⁺ の見解

  • このインシデントは、ソフトウェアのセキュリティと信頼性の重要性を強調している。ユーザーが明示的に信頼する CA 証明書だけを使いたい場合に、システムが暗黙的に別の証明書を受け入れることは、深刻なセキュリティ上の懸念を引き起こしかねない。
  • Apple の回答は、企業が独自に定義したセキュリティ基準と、オープンソースコミュニティの期待との間に隔たりがあることを示している。これは、ユーザーや開発者がそのプラットフォーム上のセキュリティをどのように認識し管理すべきかという議論を促す可能性がある。
  • このような問題は、オープンソースソフトウェアを利用する際に起こりうる依存関係や統合の問題を浮き彫りにしている。開発者は、特定のプラットフォームが提供するライブラリやツールを使う際、こうした違いを認識し適切に対応する必要がある。
  • 類似の機能を提供する他のプロジェクトとしては OpenSSL や GnuTLS があり、それぞれ独自のセキュリティ哲学と実装方式を持っている。ユーザーや開発者はこうした代替案を検討できる。
  • 技術を導入する際には、その技術のセキュリティモデルとプラットフォーム間の互換性を綿密に検討すべきである。このインシデントは、Apple の LibreSSL 実装が標準的な curl の動作とは異なることを明らかにし、技術選定の重要性を強調している。

1件のコメント

 
GN⁺ 2024-03-10
Hacker Newsの意見
  • Appleのある種の「機能」への批判

    • この機能は不要な計算を追加したり、想定される検証モデルを壊したりする可能性がある。
    • ユーザーが独自のCAを提供したい理由は、OSバンドルにCAが存在しないため、または特定のCAに対して検証したいためかもしれない。
    • Appleのこのような挙動は、期待される結果ではない。
  • Appleデバイス所有者の意図に関係なくAppleのポリシーが優先される

    • Appleデバイスの「所有者」が望むことを無視してAppleのポリシーが優先されるのは、驚くべきことではないありふれた現象だ。
  • libcurlのCAストア利用に関する説明

    • CURLSSLOPT_NATIVE_CA オプションを設定すると、libcurlはオペレーティングシステムの既定のCAストアを使って証明書検証を行う。
    • CA証明書ファイルまたはディレクトリを設定した場合、それらは既定のCAストアとあわせて検索される。
    • --cacert オプションと組み合わせた場合、libcurlは両方の設定を尊重しようとする可能性があり、これは相互排他的であり得ることを示唆している。
  • SQLiteのF_BARRIERFSYNC事件と似た状況

    • Appleは気にしていないように見える。
  • Danielの指摘に基づくcurlの修正の必要性

    • Danielがcurlの問題を指摘したのであれば、Appleはこれを修正すべきだ。
  • curlドキュメントの問題点とlibcurlのセキュリティ欠陥

    • curlはすべてのプロトコルを直接実装しているわけではなく、さまざまなライブラリをサポートしている。
    • このアプローチの欠点は、独立したバックエンド間で一貫した挙動を保証するのが難しいことだ。
    • libresslはopensslの完全な再実装ではなく、そのAPIを完全に模倣する義務はない。
    • curlには、そのライブラリのサポートを打ち切るか、問題を文書化するかの二つの選択肢がある。
    • ユーザーコードを壊すことを避けるためにも、少なくとも問題は文書化すべきだ。
    • libresslのアプローチはセキュリティの観点で欠陥があり、CVEを発行する理由があるかもしれない。
  • macOSに同梱されたソフトウェアへの不信

    • MacPortsを使ってmacOSに同梱されたツール(例: curl)を置き換えているが、これはしばしば古かったり問題があったりするためだ。
  • Appleの既定の挙動はバックドアと見なされ得る

    • 意図的または悪意があるとは言わないが、事実上バックドアとして機能し得る。
    • ユーザーの認証スキームに鍵を追加することは、バックドアを追加するのと同じだ。
  • Appleがユーザーのセキュリティを重視していないことへの批判

    • 既定の挙動と代替の挙動は異なる。
    • Appleのセキュリティチームには読解力の問題がある可能性を示唆している。