Skip to content

تقرير أمني حول ثغرات Workflow وأفضل الممارسات المقترحة (.github/workflows/gitflow_pr-router.yaml) #42

@Sawsqr68

Description

@Sawsqr68

🔍 تقرير أمني شامل عن ملف GitHub Actions Workflow

المستودع: mattsb42-meta/pipx-in-pipx
المسار: .github/workflows/gitflow_pr-router.yaml


1. المخاطر والثغرات الأمنية المكتشفة

أ) استخدام pull_request_target مع Secrets:

  • يُشغّل الـ workflow بصلاحيات كاملة مع إمكانية الوصول للأسرار مثل (WRITE_BOT_TOKEN) حتى لطلبات السحب القادمة من Forks.
  • هذه الثغرة معروفة وقد سمحت في حالات عالمية سابقة بتسريب أسرار مشاريع عبر PR خبيث.
  • التأثير: خطر تسريب توكنات، تنفيذ أوامر ضارة، أو هجوم supply chain.

ب) توكن بصلاحيات كتابة واسعة (WRITE_BOT_TOKEN):

  • كتابة التوكن بدون حصر الصلاحيات يُعرض المستودع لأخطار في حال تم تسريبه.
  • قد يتيح الهجوم التعديل أو حذف الكود البرمجي من خلال الـ workflow.

ج) استخدام actions/github-script@v3 (قديم):

  • النسخة v3 تعمل على بيئة Node.js 12، والتي انتهى دعمها الأمني منذ سنوات، ما يجعلها عرضة للثغرات.
  • هناك إصدارات أحدث (v7) تحتوي على تحديثات أمان حcriticale وتصحيحات حديثة.

د) غياب إدارة الصلاحيات الدقيقة:

  • لا يوجد قسم permissions: يُحدد الحد الأدنى للصلاحيات اللازمة للـ workflow.
  • يسمح بتشغيل الأكشن بصلاحيات أوسع من الضروري.

هـ) غياب معالجة الأخطاء والتسجيل:

  • لا يوجد Logging واضح أو رصد لفشل العمليات البرمجية في السكربت.

2. التوصيات الأمنية والفنية (أفضل الممارسات)

  1. تغيير Trigger إلى pull_request إذا لم تعد هناك حاجة للأسرار على الـ forks، أو إضافة فحوص صارمة للكود القادم من fork.
  2. تحديث الأكشن إلى actions/github-script@v7 أو ما بعده، كي تستخدم بيئة مدعومة حديثاً وتستفيد من التصحيحات الأمنية.
  3. استبدال WRITE_BOT_TOKEN بـ GITHUB_TOKEN أو على الأقل تقييد صلاحياته لأضيق مدى ممكن.
  4. إضافة قسم permissions: لفرض سياسات أقل امتيازًا (Least Privilege Principle).
  5. تضمين تسجيل الأخطاء (error logging) ومعالجة رسائل الفشل ضمن السكربت.
  6. تنبيه الفريق حول خطورة استخدام pull_request_target مع توكنات حساسة في الـ README وسياسات الأمان الداخلية.

3. ملاحظات أخرى

  • لم يطرأ تحديث جوهري على ملف العمل منذ 2020.
  • لم يتم رصد هجمات فعلية، ولكن الخطورة قائمة كما في سجلات مشاريع GitHub عالمية سابقًا.

هذا التقرير يقدم كوثيقة رسمية لتوثيق المخاطر الأمنية الحالية والتوصيات الهامة لمعالجتها بناءً على أفضل الممارسات في 2024 وما بعدها.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions