تعتبر معظم الفرق ثغرة تصعيد الامتيازات خطأً في نواة النظام أو خللاً تم إساءة استخدامه sudo على خادم الإنتاج. في عام 2026، سيوجد الإصدار الأكثر خطورة في مكان آخر: في pipeline يقوم ببناء ونشر التعليمات البرمجية الخاصة بك. CI/CD يحتفظ هذا البرنامج بشكل روتيني بصلاحيات الكتابة إلى مستودعاتك، ورموز تسجيل الحزم، وبيانات اعتمادك السحابية. لا يحتاج المهاجم الذي يتمكن من تشغيل التعليمات البرمجية داخل هذا البرنامج إلى بذل جهد كبير. pipeline لقد فعل ذلك بالفعل من أجلهم.
يشرح هذا الدليل شكل ثغرة تصعيد الامتيازات في CI/CD pipelineيتناول هذا الدليل المسارات الأكثر شيوعًا التي يستخدمها المهاجمون، ويوضح كيفية إغلاق كل منها.
باختصار: ثغرة أمنية تسمح بتصعيد الامتيازات في CI/CD pipelines
في باقة pipelineفي كثير من الأحيان، لا يحتاج المهاجم إلى رفع مستوى صلاحياته. pipeline يمتلكها بالفعل. ثغرة أمنية تسمح بتصعيد الامتيازات في CI/CD عادة ما يكون هذا إذنًا مرسومًا على نطاق أوسع مما تحتاجه المهمة، في انتظار تشغيل التعليمات البرمجية غير الموثوقة بداخله.
- Pipelineيتمتعون بامتيازات بحكم التصميم. إنهم يقرؤون شفرة المصدر، ويحتفظون بالأسرار، وينشرون القطع الأثرية، وينشرونها في بيئة الإنتاج، مما يجعلهم أحد أهم أهداف التصعيد في مؤسستك.
- معظم مسارات التصعيد ناتجة عن سوء تكوين، وليست ثغرات أمنية. الرموز الافتراضية العامة،
pull_request_targetتتسبب عمليات سير العمل التي تشغل التعليمات البرمجية المتفرعة، ومفاتيح السحابة طويلة الأمد، في أضرار أكبر من أي ثغرة أمنية غير معروفة. - يؤدي رفع مستوى امتيازات الحاويات إلى تحويل مهمة واحدة إلى عملية تشغيل كاملة. الحاويات ذات الامتيازات، ومستخدمو الجذر، ومقبس Docker المُثبَّت، تجعل من حاوية البناء مدخلاً، وليس حداً فاصلاً.
- يحدث ذلك بالفعل على نطاق واسع. استخدم دودة CHAINDROP صلاحيات وصول مرتفعة على مشغلات GitHub Actions لقراءة بيانات الاعتماد مباشرة من ذاكرة المشغل.
- الحل هو تطبيق مبدأ أقل الامتيازات بشكل مستمر. حدد نطاق كل رمز مميز، وحصّن كل حاوية، واكتشف أي انحراف في الأذونات قبل أن يكتشفه المهاجم.
ما هي الثغرة الأمنية؟
تُعرَّف ثغرة تصعيد الامتيازات بأنها أي نقطة ضعف تسمح لمستخدم أو عملية أو جزء من التعليمات البرمجية بالحصول على صلاحيات تتجاوز ما هو مُصرَّح له به. ويتتبع إطار عمل MITRE ATT&CK هذه الثغرة كأحد أساليبه الخاصة. TA0004: تصعيد الامتيازاتلأنها الخطوة التي تحول موطئ قدم صغير إلى ضرر حقيقي.
هناك شكلان كلاسيكيان:
- التصعيد الرأسي: الانتقال إلى مستوى أعلى، على سبيل المثال من مستخدم عادي إلى مستخدم الجذر، أو من رمز للقراءة فقط إلى رمز يمكنه الكتابة.
- التصعيد الأفقي: الانتقال الجانبي، على سبيل المثال استخدام صلاحيات الوصول لوظيفة ما للوصول إلى مستودع أو أسرار أو بيئة فريق آخر.
يستغل المهاجمون ثغرة تصعيد الامتيازات من خلال ثلاثة أنواع من نقاط الضعف: أخطاء البرمجيات، وسوء التكوين، والصلاحيات المفرطة. وتحظى الأخطاء البرمجية بمعظم الاهتمام على الخوادم. CI/CD pipelineإن الأخطاء في التكوين والأذونات المفرطة هي التي تقوم بمعظم العمل.
لماذا هو خطير للغاية في CI/CD pipelines
A pipeline ليست مجرد أداة بناء، بل هي هوية مؤتمتة تتمتع بأوسع صلاحيات الوصول في شركتك. يمكن لوظيفة نموذجية أن:
- اطلع على شفرة المصدر وقم بتعديلها
- قراءة البيانات السرية من متغيرات البيئة، والخزائن، وخدمات البيانات الوصفية السحابية
- نشر الحزم والصور وإصدار المنتجات
- انشر على بيئة الاختبار والإنتاج
استخدم OWASP Top 10 CI/CD المخاطر الأمنية يُشير هذا إلى هذه المشكلة بشكل مباشر. مخاطرها CICD-SEC-5: غير كافٍ Pipelineضوابط الوصول القائمة على - يصف هذا كيف يقوم المهاجمون بتشغيل برامج ضارة في pipeline إساءة استخدام الصلاحيات الممنوحة لها للتحرك جانبياً، داخل أو خارج CI/CD نظام.
هذا ليس مجرد كلام نظري. خلال حملة CHAINDROP في أغسطس 2026، البرامج الضارة تم استخراج بيانات الاعتماد المؤقتة من ذاكرة مُشغّل GitHub Actions واستخدم رموز النشر المسروقة لإصابة المزيد من الحزم. على أنظمة لينكس، الحمولة قام بتشغيل جامع البيانات الخاص به من خلال sudo لقراءة ذاكرة عملية التشغيل. هذا يُعدّ تصعيدًا للصلاحيات في CI/CD pipelineفي أنقى صورها: اعتمادٌ سام، ووصولٌ مُعزز إلى المُتسلل، وكل سرٍّ يمكن أن تمسّه الوظيفة. إنه النمط نفسه الذي نراه في نتائجنا الأسبوعية حول حزم npm الضارة.
أين تختبئ ثغرة تصعيد الامتيازات في pipeline?
ستة مسارات شائعة، وما يفتحه كل منها للمهاجم، والتحكم الذي يغلقه.
| مسار التصعيد | كيف يحدث ذلك | ما يحصل عليه المهاجم | كيفية إغلاقه |
|---|---|---|---|
| مُفرط في الامتيازات pipeline رمز | يتم تشغيل سير العمل بنطاقات رموز افتراضية واسعة لأنه لا يوجد permissions تم تعيين الكتلة | إمكانية الوصول للكتابة إلى التعليمات البرمجية والإصدارات وسير العمل الأخرى | قم بتعيين الإعدادات الافتراضية للقراءة فقط، وامنح حق الوصول للكتابة لكل مهمة، عند الحاجة فقط. |
| تسمم pipeline | pull_request_target أو ما شابه ذلك من محفزات تقوم بفحص وتشغيل التعليمات البرمجية من نسخة غير موثوقة | أسرار المستودع ورمز الكتابة، من مصدر واحد pull request | لا تقم بتشغيل التعليمات البرمجية المتفرعة في سياق ذي امتيازات؛ افصل المهام الموثوقة عن غير الموثوقة |
| تصعيد امتيازات الحاويات | يتم تشغيل حاويات البناء كجذر، أو في وضع مميز، أو مع تركيب مقبس Docker | صلاحيات الجذر على مضيف التشغيل والوصول إلى كل مهمة يقوم بتشغيلها | قم بتشغيلها كحساب غير الجذر، وقم بإسقاط الصلاحيات ومنع تصعيد الامتيازات في مواصفات الحاوية. |
| بيانات اعتماد سحابية طويلة الأمد | مفاتيح السحابة الثابتة المخزنة كأسرار أو متغيرات بيئية | إمكانية الوصول المستمر إلى حسابات السحابة، حتى بعد انتهاء المهمة بفترة طويلة | استخدم بيانات اعتماد موحدة قصيرة الأجل و إلغاء الأسرار المكشوفة تلقائيًا |
| العدائين المثابرين الذين يستضيفون أنفسهم | يتم إعادة استخدام برامج التشغيل عبر المهام والمستودعات دون إعادة بنائها | المثابرة، والقدرة على التلاعب بتشكيلات الفرق الأخرى | استخدم العدائين المؤقتين واعزلهم حسب مستوى الثقة |
| روايات بشرية مُفرطة في الامتياز | تتراكم المشاكل المتعلقة بالمسؤولين غير النشطين والمتعاونين الخارجيين وتغييرات الأذونات غير المراجعة | حساب صالح قابل للتغيير pipelineحماية الفروع | راجع صلاحيات الوصول باستمرار، وقم بالتنبيه عند حدوث تغييرات غير طبيعية في الأذونات. |
تصعيد امتيازات الحاوية: عندما لا تكون حاوية البناء بمثابة حد فاصل
تُشعر الحاويات بالعزلة، لذا غالباً ما تتعامل معها الفرق كحدود أمنية. CI/CDغالباً ما لا يكون الأمر كذلك. يحدث تصعيد امتيازات الحاوية عندما يستحوذ الكود الموجود داخل حاوية البناء على السيطرة على المضيف، ومعه كل مهمة أخرى تعمل هناك.
ثلاثة إعدادات تُغطي معظم الحالات:
- يتم التشغيل بصلاحيات المستخدم الجذر. إذا كانت العملية داخل الحاوية هي الجذر، فإن أي اختراق يبدأ من أقوى موقع ممكن.
- الوضع المميز. تتمتع الحاوية ذات الامتيازات بنفس مستوى الوصول تقريبًا إلى المضيف مثل العملية التي تعمل مباشرة عليه.
- مقبس Docker مثبت. متزايد
/var/run/docker.sockفي مهمة حتى تتمكن من بناء الصور بشكل فعال، وتسلم تلك المهمة جذرها على المضيف، لأنه يمكنها بدء حاويات جديدة ذات امتيازات.
أظهر باحثو الأمن كيف يتجلى ذلك في أنظمة التكامل المستمر الحقيقية. في إحدى الحالات الموثقة جيدًا، انتقل الباحثون من تشغيل نصوص البناء داخل حاوية التكامل المستمر إلى الهروب الكامل من الحاوية على مضيفات بناء صفحات Cloudflare، قبلcisوذلك لأن الحاوية كانت تُعامل كحدود أمنية.
إليك شكل مواصفات وظيفة Kubernetes المُحسّنة. الإعداد الرئيسي هو allowPrivilegeEscalation: false، التي يمنع ذلك عملية من الحصول على امتيازات أكثر من العملية الأصلية.على سبيل المثال من خلال الملفات الثنائية التي تستخدم صلاحيات المستخدم الجذر (setuid).
# وحدة بناء مُحصّنة: تحجب مسارات تصعيد امتيازات الحاويات الأكثر شيوعًا نسخة: v1 نوع: جراب البيانات الوصفية: الاسم: ci-build المواصفات: سياق الأمان: تشغيل كـ غير جذري: صحيح تشغيل كـ مستخدم: 10001 ملف تعريف seccomp: نوع: RuntimeDefault حاويات:- الاسم: نساعدك في بناء صورة: registry.example.com/build-image@sha256: سياق الأمان: السماح بتصعيد الامتيازات: زائف متميز: زائف نظام الملفات الجذر للقراءة فقط: صحيح قدرات:
ينطبق المبدأ نفسه على ملف Dockerfile نفسه. أضف مستخدمًا غير الجذر وانتقل إليه قبل نقطة الدخول:
# تشغيل الحاوية كمستخدم غير الجذر من عند node:22-slim RUN useradd --دليل 10001 --إنشاء-المنزل باني عمل / تطبيق COPY --chown=المُنشئ: المُنشئ . . USER باني CMD ["العقدة", "index.js"]
وثائق Kubernetes حول تهيئة سياق الأمان يتناول كل من هذه الإعدادات بالتفصيل.
إجراءات GitHub: ثغرة أمنية للتصعيد مخفية في وضح النهار
تُعدّ GitHub Actions المكان الذي تواجه فيه العديد من الفرق لأول مرة مشكلة تصعيد الامتيازات. CI/CD pipelineلذلك، تبدو الأنماط الخطيرة عادية تمامًا. هناك نمطان يستحقان التحقق منهما في كل مستودع بيانات اليوم.
نطاق الرمز المميز. كل سير عمل يحصل على GITHUB_TOKENإرشادات GitHub الخاصة بشأن المصادقة التلقائية للرمز المميز من الواضح أن الإجراء قد يصل إلى هذا الرمز المميز حتى لو لم تُمرّره صراحةً، لذا يجب دائمًا تقييد صلاحياته إلى الحد الأدنى. إن تعيين صلاحيات القراءة فقط في بداية سير العمل ومنح صلاحية الكتابة لكل مهمة يزيل مسار التصعيد الأكثر شيوعًا في خطوة واحدة.
الاسم: نساعدك في بناء on: [دفع] # الوضع الافتراضي لكل مهمة: للقراءة فقط أذونات: محتويات: اقرأ وظائف: تجربه بالعربي: يعمل على: أحدث إصدار من أوبونتو سلم: تثبيت إجراءات الطرف الثالث على كامل commit SHA، وليس علامة قابلة للتغيير - يستخدم: actions/checkout@commit-sha> - يجري: npm ci && npm test الافراج عن: إحتياجات: تجربه بالعربي يعمل على: أحدث إصدار من أوبونتو # هذه الوظيفة وحدها هي التي تستطيع الكتابة، ولا تكتب إلا ما تحتاجه أذونات: محتويات: اكتب سلم: - يستخدم: actions/checkout@commit-sha> - يجري: ./scripts/release.sh
المحفزات غير الموثوقة. سير العمل الذي يتم تشغيله بواسطة pull_request_target يتم تشغيلها باستخدام أسرار المستودع المستهدف ورمز مميز قابل للكتابة، حتى عندما pull request يأتي من نسخة متفرعة. إذا تم التحقق من سير العمل هذا وتشغيل كود النسخة المتفرعة، فيمكن لأي شخص فتحه. pull request وتنفيذ التعليمات البرمجية باستخدام صلاحياتك. هذه ثغرة أمنية لرفع مستوى الصلاحيات لا تحتاج إلى استغلال على الإطلاق، فقط pull request. احتفظ بالخطوات ذات الامتيازات على التعليمات البرمجية الموثوقة، وقم بتشغيل التعليمات البرمجية غير الموثوقة في سير عمل منفصل بدون أسرار.
إذا كنت ترغب في رؤية هذه الأنماط في مكان آمن، xygeni-goat يجمع المستودع بيانات غير آمنة عمداً pipeline و IaC إعدادات التدريب. للاطلاع على مراجعة شاملة لإعدادات GitHub الخاصة بك، راجع دليلنا حول كيفية معرفة ما إذا كان تطبيق أو مستودع GitHub آمنًا.
كيفية منع ثغرة تصعيد الامتيازات في CI/CD pipelines
إغلاق تصعيد الامتيازات في CI/CD pipelineيرتكز الأمر على مبدأ واحد: مبدأ أقل الامتيازات، المطبق على جميع المستويات، والذي يُراجع باستمرار بدلاً من مرة واحدة. قائمة مرجعية عملية:
- قم بتحديد نطاق كل رمز مميز. الوضع الافتراضي هو للقراءة فقط، وإمكانية الوصول للكتابة لكل مهمة، ولا توجد رموز مميزة على مستوى المؤسسة في سير عمل المستودع.
- افصل بين التعليمات البرمجية الموثوقة وغير الموثوقة. لا تقم بتشغيل التعليمات البرمجية من النسخ المتفرعة أو من المساهمين الخارجيين في مهمة تحتوي على أسرار.
- قم بتأمين جميع حاويات البناء. لا يوجد وضع مميز للمستخدمين غير الجذر، ولا يوجد منفذ Docker، وتم إسقاط الإمكانيات.
allowPrivilegeEscalation: false. - استبدل الأسرار التي طال أمدها. يفضل استخدام بيانات اعتماد اتحادية قصيرة الأجل، وإلغاء أي شيء تم الكشف عنه على الفور.
- قم بتثبيت ما تقوم بتشغيله. إجراءات وصور جهات خارجية مرجعية commit SHA أو التجزئة، لذلك لا يمكن للعلامة المخترقة تغييرها pipeline.
- انتبه للانحراف. تتسع صلاحيات الوصول بمرور الوقت. تنبيه بشأن المسؤولين الجدد، وضعف حماية الفروع، والتغييرات غير المتوقعة في سير العمل.
- بوابة pipeline. قم بإيقاف عملية البناء عند ظهور خطأ حرج في التكوين، قبل دمجه.
الجزء الصعب ليس معرفة هذه القواعد، بل تطبيقها عبر مئات المستودعات وسير العمل التي تتغير كل يوم.
كيف يمنع برنامج Xygeni ثغرة تصعيد الامتيازات في CI/CD?
كل مسار تصعيد، مطابق لقدرة Xygeni التي تكتشفه أو تمنعه.
| المخاطرة المالية | ما يفعله زيجيني |
|---|---|
| Pipeline الخاطئة | كاشفات سوء التكوين قم بفحص تعريفات وظائف التكامل المستمر، ونصوص البناء، وملفات التكوين عبر GitHub وGitLab وAzure DevOps وBitbucket وCircleCI وJenkins، وقم بتحديد الأذونات الأوسع نطاقًا مما تسمح به أفضل الممارسات. |
| تصعيد امتيازات الحاويات | IaC وفحوصات الحاويات يشمل ذلك ملفات Dockerfiles، وملفات docker-compose، وبيانات Kubernetes، ومخططات Helm، بما في ذلك الحاويات التي تعمل كجذر. |
| المستخدمون ذوو الامتيازات المفرطة والمستخدمون غير النشطين | يُحدد تحليل أقل الامتيازات المستخدمين غير النشطين والمستخدمين ذوي الامتيازات الزائدة، و Health Check يحوّل كل اكتشاف إلى تذكرة |
| انحراف الإذن | تنبيهات كشف الحالات الشاذة بشأن تغييرات الأذونات غير المعتادة، وعمليات الدمج غير الطبيعية، وتثبيتات المكونات الإضافية غير المتوقعة. |
| بيانات اعتماد مكشوفة | يشمل الكشف عن الأسرار الشفرة البرمجية، pipelineصور الحاويات، مع إلغاء تلقائي لأنواع الأسرار المدعومة |
| شفرة خبيثة في pipeline | يحظر الوصول العكسي إلى البرامج الضارة وتنزيل البرامج الضارة في pipelineفي الوقت الفعلي، ويكتشف MEW الحزم الضارة قبل وجود التوقيع. |
| تطبيق | Pre-commit hooks و CI guardrails فشل عملية البناء بسبب مشاكل حرجة، مع سياسات YAML مخصصة لقواعدك الخاصة. |
تتوافق عمليات التحقق مع OWASP Top 10 CI/CD المخاطر الأمنية و standardق مثل CIS، المعهد الوطني للمعايير والتكنولوجيا، و OpenSSFكل نتيجة تصب في Xygeni ASPM، حيث يتم إعطاء الأولوية لها جنبًا إلى جنب مع نتائج الكود والتبعيات والأسرار، بحيث يتم إصلاح ثغرة تصعيد الامتيازات التي تصل بالفعل إلى الإنتاج أولاً.
معظم عمليات تصعيد الامتيازات في CI/CD pipelines موجود بالفعل في ملفات سير العمل الخاصة بك، في انتظار تشغيل التعليمات البرمجية غير الموثوقة.
الأسئلة الشائعة
ما هي ثغرة تصعيد الامتيازات في CI/CD?
أي ثغرة تسمح بتشغيل التعليمات البرمجية في بيئة معينة هي نقطة ضعف. pipeline الحصول على صلاحيات وصول أكثر مما تتطلبه الوظيفة، مثل رمز مميز ذو امتيازات زائدة، أو سير عمل يقوم بتشغيل تعليمات برمجية غير موثوقة تحتوي على أسرار، أو حاوية بناء يمكنها الوصول إلى المضيف.
ما هو تصعيد امتيازات الحاويات؟
تصعيد امتيازات الحاوية هو عندما يحصل أحد العمليات داخل الحاوية على امتيازات أعلى، وغالبًا ما تكون امتيازات الجذر على المضيف. ومن الأسباب الشائعة لذلك: التشغيل بصلاحيات الجذر، ووضع الامتيازات، ووجود مقبس Docker مُثبَّت.
لا allowPrivilegeEscalation: false هل يمكن إيقاف عمليات الهروب من الحاويات؟
يمنع هذا الإجراء مسارًا مهمًا واحدًا: وهو حصول عملية ما على صلاحيات أكثر من العملية الأصلية، على سبيل المثال من خلال ملفات setuid الثنائية. ويعمل هذا الإجراء على أفضل وجه عند استخدامه مع مستخدم غير الجذر، وتعطيل بعض الصلاحيات، وعدم وجود وضع امتيازات.
Is pull_request_target هل هو خطير دائماً؟
ليس بمفرده. يصبح ثغرة أمنية تسمح بتصعيد الامتيازات عندما يقوم سير العمل باستخراج التعليمات البرمجية وتشغيلها من pull requestلأن هذا الكود يعمل بعد ذلك باستخدام أسرارك ورمز مميز قابل للكتابة.
كيف يمكنني العثور على مسارات تصعيد الامتيازات عبر العديد من المستودعات؟
لا يمكن تطبيق المراجعات اليدوية على نطاق واسع. أما المراجعات الآلية فهي غير فعالة. CI/CD تقوم أداة الأمان بفحص كل سير عمل ومواصفات حاوية ومجموعة أذونات بشكل مستمر، وتنبه عند اتساع نطاق شيء ما.







