سمحت ثغرة أمنية في معالج GitHub Actions باختراق الحزم الموجودة في Nixpkgs.

تم الكشف عن ثغرات أمنية في معالجات GitHub Actions، التي تُستدعى تلقائيًا عند إرسال طلبات سحب إلى مستودع حزم Nixpkgs، المستخدم في توزيعة NixOS ونظام إدارة حزم Nix. سمحت هذه الثغرة الأمنية لمستخدم غير مصرح له باستخراج رمز يمنحه صلاحية القراءة والكتابة إلى الشيفرة المصدرية لجميع الحزم المستضافة في Nixpkgs. سمح هذا الرمز بتعديل أي حزمة مباشرةً عبر مستودع Git الخاص بالمشروع، متجاوزًا بذلك عمليات المراجعة والموافقة.

أثبت باحثو الأمن في أكتوبر الماضي خلال مؤتمر NixCon قدرة اختراق Nixpkgs وحقن أكواد مخصصة في أي حزمة، وتم تصحيحها فورًا في البنية التحتية للمشروع. ومع ذلك، لم تُكشف تفاصيل الهجوم إلا بعد عام. تتعلق المشكلة باستخدام معالجات GitHub Actions في مستودع Nixpkgs على GitHub، والتي ترتبط بحدث "pull_request_target" وتُجري عمليات فحص آلية عند ورود طلبات سحب جديدة.

بخلاف حدث "pull_request"، تُمنح المعالجات في "pull_request_target" صلاحية القراءة والكتابة إلى بيئة البناء، مما يتطلب عناية خاصة عند التعامل مع البيانات المُمررة في طلب سحب. قام أحد المعالجات المرتبطة بـ "pull_request_target" بالتحقق من صحة ملف "OWNERS" المُقدم في طلب السحب عن طريق بناء واستدعاء أداة التحقق من صحة الكود (codeowners-validator): الخطوات: — الاستخدامات: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf مع: ref: refs/pull/$/merge path: pr — تشغيل: nix-build base/ci -A codeownersValidator — تشغيل: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

كانت المشكلة أنه في حال تنسيق ملف OWNERS بشكل غير صحيح، فإن أداة التحقق من صحة الكود الخاصة به ستُخرج محتويات السلسلة النصية المشوهة إلى السجل القياسي المتاح للعامة. تمثل الهجوم في وضع رابط رمزي باسم OWNERS في طلب السحب، يُشير إلى ملف ".credentials"، الذي يُخزن بيانات الاعتماد في بيئة البناء. ونتيجةً لذلك، أدت معالجة هذا الملف إلى حدوث خطأ، وتم إخراج السطر الأول، الذي يحتوي على رمز وصول المستودع، إلى السجل العام.

 سمحت ثغرة أمنية في معالج GitHub Actions باختراق الحزم الموجودة في Nixpkgs.

بالإضافة إلى ذلك، تم العثور على ثغرة أمنية أخرى في المعالج الذي يتحقق من قواعد editorconfig. الخطوات: — الاسم: الحصول على قائمة بالملفات المتغيرة من تشغيل PR: gh api […] | jq [ … ] > «$HOME/changed_files» — الاستخدامات: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 مع: ref: refs/pull/$/merge — الاسم: التحقق من تشغيل EditorConfig: cat «$HOME/changed_files» | xargs -r editorconfig-checker

في هذه الحالة، كانت المشكلة في استخدام أداة "xargs" لتشغيل أداة editorconfig-checker مع كل ملف في طلب السحب. نظرًا لعدم التحقق من صحة أسماء الملفات، يمكن للمهاجم تضمين ملف يحتوي على أحرف خاصة في طلب السحب، والتي ستُعالج كوسيطات سطر أوامر عند تشغيل أداة editorconfig-checker. على سبيل المثال، عند إنشاء ملف "--help"، تعرض أداة editorconfig-checker تلميحًا حول الخيارات المتاحة.

المصدر: opennet.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster