CVE-2026-29050 in melange
الملخص
بحسب VulDB • 16/05/2026
تتيح أداة melange للمستخدمين بناء حزم apk باستخدام خطوط أنابيب تعريفية (declarative pipelines). بدءًا من الإصدار 0.32.0 وحتى ما قبل الإصدار 0.43.4، يمكن لمهاجم قادر على التأثير في ملف تكوين melange — على سبيل المثال، من خلال عمليات الدمج (pull requests) المدعومة ببيئة التكامل المستمر (CI) أو سيناريوهات البناء كخدمة — أن يحدد قيمة الحقل `pipeline[].uses` لتحتوي على تسلسلات `../` أو مسارًا مطلقًا. تمرر الدالة `(*Compiled).compilePipeline` الموجودة في الملف `pkg/build/compile.go` قيمة `uses` مباشرةً إلى `filepath.Join(pipelineDir, uses + ".yaml")` دون التحقق من صحتها، مما قد يؤدي إلى هروب المسار المحلّل خارج كل دليل `--pipeline-dir` وقراءة ملف YAML قابل للتحليل بشكل تعسفي ومتاح لعملية melange. ونظرًا لأن الملف المحمّل يُفسر لاحقًا كخط أنابيب melange ويتم تنفيذ كتلة `runs:` الخاصة به عبر الأمر `/bin/sh -c` في بيئة العزل (sandbox) الخاصة بالبناء، فإن ذلك سمح أيضًا بتشغيل أوامر shell مستمدة من ملف خارج الشجرة (out-of-tree) أثناء البناء، متجاوزًا حد المراجعة الذي يغطي عادةً تعريف خط الأنابيب داخل الشجرة (in-tree). تم إصلاح هذه المشكلة في melange الإصدار 0.43.4 عبر الالتزام commit 5829ca4. يرفض الإصلاح القيم التي تكون مسارات مطلقة أو تحتوي على `..`، ويتحقق (عبر `filepath.Rel` بعد `filepath.Clean`) من أن الهدف المحلّل يبقى ضمن دليل خط الأنابيب. كحل بديل، قم بتشغيل `melange build` فقط ضد ملفات التكوين القادمة من مصادر موثوقة. وفي أنظمة CI التي تقوم ببناء تكوينات melange المقدمة من المستخدمين، ضع عمليات البناء تحت مراجعة يدوية لقيم `pipeline[].uses` ورفض أي قيمة تحتوي على `..` أو تبدأ بـ `/`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.