GitHubは、GitPythonで意図しないコードを実行される脆弱性「CVE-2026-114145」の情報を掲載しています。外部から受け取ったパスを使う処理では、攻撃用のファイルが配置され、後の操作で実行される恐れがあります。公表日は資料に記載されていません。
パスの検証前にフックが配置される
問題があるのは、サブモジュールを作成するcreate_submoduleのパス検証の順序です。GitHubによると、.git/hooksというパスが、クローン前の検証を通過します。クローンは、リポジトリを複製する処理です。
このため、攻撃用のサブモジュールから実行可能なフックを配置できます。フックは、特定の操作に合わせて動く処理です。配置されたpost-checkoutは、その場ではなく、後のcheckout時に実行されます。
攻撃には、アプリが攻撃者の影響するサブモジュールパスを渡す必要があります。GitHubは、利用者が送るマニフェストやAPI要求からパスを取り込むサービスを、影響する例として挙げています。マニフェストは構成情報などを記したファイル、APIはシステム間で要求をやり取りする窓口です。
さらに、対象のフック名が空いていることも条件です。GitHubは、最小構成の環境や、継続的インテグレーション(CI)、コンテナでのチェックアウトを、攻撃条件に合う例に挙げています。
例外が出ても、配置を防げたとは限らない
GitHubによると、3.1.xでは不正なパスが拒否されず、エラーなしでフックが配置されます。3.2.0以降の検証対象でも、例外が発生する前にフックが書き込まれ、その後も削除されません。
コード実行を確認した対象として、3.1.59と、3.2.0に3コミットを加えたbda18e08が挙げられています。これは検証結果であり、資料には修正版や影響する版の全範囲は記載されていません。3.2.0以降なら安全、と判断できる情報ではありません。
一方、標準のサンプルフックがある場合はクローンが拒否され、フックは配置されないとしています。版だけでなく、パスの取り込み方と実行環境を組み合わせて確認する必要があります。
日本での提供は発表には書かれていません。今回の確認では、社内システムや委託先の処理がGitPythonを使っているかを、まず調べることが出発点になります。
影響する会社・しない会社
- 影響する: GitPythonの
create_submoduleに、利用者のマニフェストやAPI要求から得たパスを渡す会社です。攻撃者がパスに影響でき、対象のフック名が空いている場合は、攻撃条件に当てはまります。
- 影響する: 上記の処理を、最小構成の環境、CI、コンテナで動かす会社です。GitHubが条件に合う例として挙げており、開発者の端末だけの確認では足りません。
- 影響しない: 攻撃者の影響するパスを
create_submoduleに渡さない処理は、今回示された攻撃条件に当てはまりません。ただし、製品全体の安全性を示すものではありません。
- 影響しない: 標準のサンプルフックがあり、説明どおりクローンが拒否される環境では、今回の方法によるフック配置は行われません。この条件だけを恒久対策とみなさず、実環境での確認が必要です。