Multiple Git flaws led to credentials compromise
2025/01/27 SecurityAffairs — Git クレデンシャル・プロトコルに複数の脆弱性が存在することが、GMO Flatt Security のセキュリティ研究者である RyotaK により明らかにされた。これらの脆弱性は、Git 認証情報取得プロトコルにおけるメッセージの不適切な処理に起因し、ユーザー認証情報へのアクセスを、攻撃者に許す可能性があるという。

一連の脆弱性は、2024年10月の時点で、GitHub バグ報奨金プログラムのための調査中に発見されたものだ。発見者である RyotaK が、調査の対象を GitHub Enterprise Server から GitHub Desktop へと移し、ソースコードを精査したところ、悪意のリポジトリからユーザー認証情報が漏洩するバグを発見された。さらに、他の Git 関連プロジェクトも分析したところ、複数の脆弱性が発見されたという。
Git クレデンシャル・プロトコルは、git-credential-store や git-credential-osxkeych ain などのヘルパーから、認証情報を取得するためのものだ。そこで、RyotaK の調査により発見されたのが、認証情報の漏洩につながる可能性がある、複数の脆弱性である。
Git は、改行文字で区切られた構造化メッセージを交換することで、認証情報をヘルパーから取得する。プロパティのインジェクションを防止するために、Git はプロパティ名と値における改行文字と NULL バイトをブロックする。
RyotaK が発見したのは、GitHub Desktop の認証情報ヘルパー “トランポリン“ が、改行文字 (\n や \r など) の処理方法の違いにより、Git クレデンシャル・プロトコルを適切に処理しないという欠陥である。攻撃者は、改行文字 (%0d) を取り込むように細工した URL を用いて、認証情報の解析方法を操作できる。それにより、GitHub Desktop は、認証情報を誤ったホスト (localhost ではなく github.com など) に関連付けることになり、結果として認証情報の漏洩の恐れが生じる。
この GitHub Desktop の不適切な正規表現の欠陥は、CVE-2025-23040 として追跡されている。
さらに RyotaK は、Git LFS に存在する、認証情報の漏洩にいたる可能性がある改行インジェクション脆弱性 CVE-2024-53263 も報告している。
Git の研究者たちは、キャリッジ・リターン・スマグリングにより引き起こされる、脆弱性 CVE-2024-52006 に対処するため、クレデンシャル・プロトコルの検証による多重防御策を導入した。新たに追加された credential.protectProtocol コンフィグはデフォルトで有効化されており、キャリッジ・リターン文字 (\r) を含む URL をブロックするようになった。このパッチにより、Git LFS などの全クレデンシャル・ヘルパーにおける、クレデンシャル漏洩のリスクは軽減される。
また、GitHub CLI には、任意のホストへ向けてアクセストークンが漏洩する、脆弱性 CVE-2024-53858 が存在することも判明した。この脆弱性は、tokenForHost 関数の論理的な欠陥に起因するものであり、キャリッジ・リターン・スマグリングの影響は受けない。
しかし、GitHub が所有していないホストを、IsEnterprise 関数が誤ってエンタープライズ・ホストとして分類し、GH_ENTERPRISE_TOKEN や GITHUB_TOKEN などのアクセストークンが、悪意のホストへと送信される可能性がある。専門家が指摘しているのは、特に GitHub Codespaces においては、CODESPACES 環境変数が常に true に設定されているため、悪意のリポジトリをクローンする際に、トークンが漏洩するリスクが高まるという点である。
RyotaK は、これらの脆弱性に関するレポートで、「テキストベースのプロトコルはインジェクションに対して脆弱であることが多く、小さなアーキテクチャ上の欠陥が、大きなセキュリティ問題につながる可能性がある。この研究が、Git コミュニティのセキュリティ向上に役立つことを願っている。また、Git 関連プロジェクトに関する、さらなる研究を期待している」と述べている。
GIt 関連の4件の脆弱性が発見されましたが、GMO Flatt Security のセキュリティ研究者である RyotaK さんが報告者というのも嬉しいですね。ご利用のチームは、ご注意ください。よろしければ、Git で検索も、ご参照ください。
You must be logged in to post a comment.