30秒で判断
- 対応すべき人: libssh2 SSHバックエンド(
USE_SSH=libssh2)でビルドされた libgit2 1.8.7未満、または1.9.0〜1.9.7未満を利用しているツール・アプリの開発者/運用者。 - 対応不要な人: libgit2 を使用していない方、libssh2 バックエンドを使用していない方、1.8.7 / 1.9.7 以降を利用している方。
- 確認コマンド: 依存する libgit2 のバージョンとSSHバックエンド(libssh2 か否か)を確認。
概要
libgit2 の libssh2 SSHバックエンドには、シェルコマンドインジェクションの脆弱性があります(CWE-78)。ssh_libssh2.c の gen_proto() 関数が、リポジトリパスを特殊文字のエスケープなしにシェルコマンド文字列へ直接組み込み、libssh2_channel_exec() に渡してしまいます。
このため、シングルクォート・セミコロン・パイプなどのシェルメタ文字を含むリポジトリパスを与えると、リモートSSHサーバ側のシェルが注入されたコマンドを解釈する可能性があります。具体的には、.gitmodules に細工したサブモジュールURLを仕込み、再帰クローン時に処理させることで、被害者のSSHユーザー権限でコマンドが実行され得ます。libgit2 は多くのGit連携ツールが依存する基盤ライブラリのため、影響範囲は広いと考えられます。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 8.8(High) |
| 攻撃元区分 (AV) | ネットワーク |
| 攻撃条件の複雑さ (AC) | 低 |
| 必要な権限 (PR) | 低 |
| CWE | CWE-78(OSコマンドインジェクション) |
影響を受けるソフトウェア
| 製品 | ベンダー | バージョン |
|---|---|---|
| libgit2(libssh2バックエンド) | libgit2 | < 1.8.7、および 1.9.0 <= x < 1.9.7 |
修正バージョンと回避策
libgit2 1.8.7 以降、または 1.9.7 以降へアップデートしてください。libgit2 を組み込んでいるアプリケーションやツールは、同梱している libgit2 のバージョンを確認し更新してください。信頼できないリポジトリの再帰クローンを避けることも緩和策になります。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
