← كل المقالات مرجع

خريطة تصعيد امتيازات AWS

أبرز النقاط

  • بنينا مرجعاً لأذونات AWS التي يمكن لمهاجم أن يسلسلها للوصول إلى صلاحيات المدير أو البيانات أو الاستمرارية، مع صفحة لكل منها.
  • كل مدخل يحمل الأمور الأربعة نفسها: كيف يُستخدم الإذن، وأحداث CloudTrail التي ترصده، وتقنية MITRE ATT&CK، والضابط الذي يزيل المسار.
  • أكثر من نصف مداخل تصعيد الامتيازات تمر عبر iam:PassRole. هو الإذن الوحيد الذي يلامس أكبر عدد من الخدمات.
  • بعض الأذونات تصعّد وحدها. وكثير منها لا يصعّد إلا ضمن تركيبة، محمولاً مع أذونات أخرى. تلك التركيبات السامة هي ما تغفله مراجعة تنظر في سياسة واحدة في كل مرة.
  • معرفة أن إذناً خطير ليست كمعرفة أنه خطير في حسابك. ذلك يتطلب تحققاً مقابل صلاحياتك الحقيقية، وقراراً بحسب سياق العمل حول ما إذا كان الإذن حاملاً أساسياً.

اسأل عشرة من مهندسي AWS عن الأذونات الخطيرة وستحصل على عشر قوائم قصيرة. الجميع يذكر iam:PassRole. ومعظمهم يذكر تعديلات السياسات. بعد ذلك يصبح الأمر غامضاً، لأن الإجابة الحقيقية طويلة، وتتغير مع إطلاق AWS خدمات جديدة، ومعظم الخطر في التركيبات لا في الإجراءات المفردة.

لذلك دوّناها. خريطة تصعيد امتيازات AWS هي صفحة لكل إذن يمكن لمهاجم أن يسلسله للوصول إلى صلاحيات المدير أو البيانات أو طريق للعودة. يمكنك البحث فيها بحسب الخدمة أو التقنية أو تركيبة من الأذونات، ويُقرأ كل مدخل بالطريقة نفسها.

ما الذي في كل صفحة

كل مدخل يجيب عن أربعة أسئلة. كيف يُستخدم الإذن، وحده أم فقط إلى جانب غيره. كيف تراه، عبر أحداث CloudTrail التي تسجّل الاستدعاء. أين يقع في دليل المهاجم، عبر تقنية MITRE ATT&CK. وما الذي يزيل المسار، عبر الضابط الذي يمكن للمدافع تطبيقه. ترسم الصفحة الحركة كسلسلة، من مُسند المهاجم إلى ما يصل إليه الإذن، مع إجراء API الحقيقي في كل خطوة.

CreateFunction iam:PassRole runs as role 01 Attacker principal 02 New Lambda 03 Passed role 04 Administrator
تركيبة سامة واحدة من الخريطة. بحمل lambda:CreateFunction و iam:PassRole معاً، يُنشئ مُسند دالة، ويسلّمها دوراً مميّزاً، فتعمل الدالة بصفة ذلك الدور. ولا يثير أي من الإذنين القلق بمفرده.

مسار، خطوة بخطوة

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

  • الخطوة 1. ابدأ كمُسند عادي. يكفي دور مطوّر أو دور CI يحمل lambda:CreateFunction و iam:PassRole. لا شيء هنا يملك صلاحيات المدير بعد.
  • الخطوة 2. أنشئ دالة بشيفرة المهاجم (lambda:CreateFunction). جسم الدالة هو ما يريد المهاجم تشغيله.
  • الخطوة 3. مرّر إليها دوراً مميّزاً (iam:PassRole). وجّه الدالة إلى دور يملك وصولاً أوسع مما يملكه المُسند، كدور يستطيع قراءة كل سلة تخزين أو إرفاق السياسات.
  • الخطوة 4. استدعِها، فتعمل الشيفرة بصفة ذلك الدور. لقد استعار المُسند وصولاً لم يُمنح إياه قط، وهذا هو التصعيد بأكمله.
  • الخطوة 5. القطع: احصر iam:PassRole في معرّفات ARN محددة للأدوار وثبّت iam:PassedToService. هذا التغيير الواحد يغلق هذا المسار وحصة كبيرة من بقية الخريطة، لأن كل خدمة تشغّل شيفرة نيابةً عنك تقبل دوراً مُمرَّراً بالطريقة نفسها.

ذلك مدخل واحد. ترسم الخريطة السلسلة نفسها لكل إذن تغطيه، فترى الحركة قبل أن تقرر ما إذا كان الإذن حاملاً أساسياً في حسابك.

iam:PassRole هو الخيط المشترك

من بين مداخل تصعيد الامتيازات في الخريطة، يعتمد أكثر من نصفها على iam:PassRole. يظهر في مسارات تصل إلى أربع وعشرين خدمة مختلفة، لأن كل خدمة تشغّل شيفرة نيابةً عنك ستقبل دوراً تسلّمه إياها. فـ Lambda و EC2 و ECS و Glue و SageMaker و CodeBuild و Step Functions وبقيتها كلها تأخذ دوراً مُمرَّراً وتعمل بصفته. لهذا السبب يساوي منح iam:PassRole واحد على مورد بحرف بدل أكثر للمهاجم من أي إذن آخر تقريباً. احصره في معرّفات ARN محددة للأدوار وثبّت iam:PassedToService، فتُغلق حصة كبيرة من الخريطة دفعة واحدة.

الأذونات المفردة والتركيبات السامة

بعض الأذونات تصعّد وحدها. فـ iam:AttachUserPolicy مع مورد واسع بما يكفي يصعّد وحده. لكن كثيراً من أخطر المسارات يحتاج إلى إذنين أو أكثر محمولين معاً، ولا يبدو أي منهما مثيراً للقلق بمفرده. فـ iam:PassRole غير ضار دون إجراء خدمة يستخدمه. و lambda:CreateFunction غير ضار دون دور يُمرَّر. احمل كليهما وتحصل على شيفرة اعتباطية تعمل بصفة دور مميّز.

هذه التركيبات السامة هي ما ينساب خلال المراجعة، لأن تدقيق سياسة ينظر في عبارة واحدة في كل مرة لا يرى الزوج أبداً. تصنّف الخريطة كل مدخل بوصفه قابلاً للاستغلال مباشرة أو تركيبة سامة، ويمكنك التصفية لعرض التركيبات وحدها.

لماذا قائمة الأذونات ليست القصة كاملة

مرجع كهذا يخبرك أي الأذونات يمكن أن تكون خطيرة. لكنه لا يستطيع أن يخبرك أيها خطير في حسابك. ذلك يعتمد على من يحمل الإذن فعلاً، وما إذا كانت سياسات الثقة والشروط متوافقة، وما إذا كانت هناك سياسة SCP تحجبه بالفعل، وما إذا كان الدور الذي يصل إليه مميّزاً. الإذن نفسه قد يكون حاملاً أساسياً في حساب ومحض خطر في آخر.

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

كيف تستخدمها

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

كيف يستخدمها Pathbreak

الخريطة هي النسخة العامة مما يستدل عليه Pathbreak داخل حسابك. نتصل بقراءة فقط، ونحسم سياسات IAM والأدوار وعلاقات الثقة الحقيقية لديك، ونؤكد أي من هذه المسارات موجود فعلاً لهوياتك. ثم نرتّبها بحسب مقدار ما يفتحه كل منها، ومع نموذج التهديد وسياق العمل لديك، نعرض أي التغييرات القليلة يقطع أكثرها. وتعود أول المسارات المتحقق منها خلال الساعة.

الأسئلة الشائعة

ما هو أخطر إذن في AWS IAM؟

iam:PassRole هو الإذن الأكثر إعادةَ استخدام في مسارات تصعيد الامتيازات. فمنحه على مورد بحرف بدل يتيح لمُسند أن يسلّم دوراً مميّزاً إلى خدمة يستطيع تشغيلها، مثل Lambda أو EC2، ويرث ذلك الدور. وهو خطير في تركيبة مع إجراء خدمة لا بمفرده، وهذا جزء من سبب تركه واسعاً أكثر من اللازم في كثير من الأحيان. تُظهر خريطة تصعيد امتيازات AWS من Pathbreak كل تركيبة تحوّله إلى مسار.

ما هي التركيبة السامة من الأذونات؟

هي مجموعة من إذنين أو أكثر آمنة فرادى لكنها تمنح التصعيد عندما يحملها مُسند واحد معاً. iam:PassRole مع lambda:CreateFunction مثال كلاسيكي. تغفل المراجعات التي تفحص عبارة سياسة واحدة في كل مرة هذه الحالات، لأن الخطر في الاقتران لا في أي من الإذنين بمفرده. تصنّف خريطة Pathbreak هذه الحالات على أنها تركيبات سامة.

كيف أعرف أي هذه الأذونات خطير فعلاً في حسابي؟

تتحقق منها مقابل صلاحياتك الحقيقية. لا يشكّل الإذن مساراً إلا إذا كان مُسند يحمله فعلاً، وكانت سياسات الثقة والشروط تسمح به، ولم يحجبه أي حاجز حماية، وكان الدور الذي يصل إليه مميّزاً. يحسم Pathbreak هذا بالقراءة فقط ولا يبلّغ إلا عن المسارات التي تُحسم، بدلاً من كل إذن قد يكون خطيراً نظرياً.

هل عليّ ببساطة إزالة كل إذن على الخريطة؟

لا. كثير من هذه الأذونات يؤدي عملاً مشروعاً. تعرض الخريطة الضابط الذي يزيل كل مسار، لكن تطبيقه قرار يخص العمل. النهج الصحيح هو التحقق من المسارات الموجودة، وترتيبها بحسب مقدار ما تفتحه، وقطع القليل الأكثر أهمية دون كسر ما يعتمد عليها. يتحقق Pathbreak من أيّها يشكّل مساراً حقيقياً في حساباتك، لتبدأ بإصلاحها أولاً.

هل تغطي الخريطة أكثر من تصعيد الامتيازات؟

نعم. إلى جانب تصعيد الامتيازات، تغطي الوصول إلى بيانات الاعتماد، والتهرّب الدفاعي من تسجيلك وحواجز الحماية لديك، وكشف الموارد لمُسندين خارجيين أو عامّين، والوصول إلى البيانات، والاستمرارية، لأن مسارات الهجوم الحقيقية تعبر تلك الفئات في طريقها إلى الأثر. يحافظ Pathbreak على الخريطة ويتحقق من التقنيات نفسها في منصته.

مقالات ذات صلة

اطّلع على أي من هذه المسارات موجود في حسابات AWS الخاصة بك.

اطلب فحصاً مجانياً