تحليل مسارات الهجوم مقابل التحقق من مسارات الهجوم في AWS
أبرز النقاط
- تحليل مسارات الهجوم يربط النتائج الفردية في تسلسل الخطوات التي قد يتخذها المهاجم من نقطة دخول إلى هدف. وهو يجيب عن سؤال: ما الذي يمكن ربطه في سلسلة؟
- التحقق من مسارات الهجوم يفحص كل سلسلة مرشحة مقابل التفويض الذي ستقيّمه AWS: سياسات الهوية، وسياسات الموارد، وسياسات الثقة، وسياسات التحكم في الخدمات، وحدود الأذونات، ومفاتيح الشروط. وهو يجيب عن سؤال: أيّ هذه السلاسل ينجح فعلاً؟
- في AWS تختلف الإجابتان كثيراً. فالسلسلة التي تبدو مكتملة على الرسم البياني قد يمنعها SCP أو حدّ أذونات أو مفتاح شرط، ولا يخبرك بالسلاسل التي تصمد إلا حلّ هذه الطبقات كلها معاً.
- التحقق في مستوى التحكم لا يتطلب تشغيل أي استغلال. فحلّ التفويض الحقيقي بوضع القراءة فقط يعطي الإجابة نفسها دون أي مخاطرة.
- ترتيب الأولويات يعتمد على التحقق. في حساب المختبر لدى Pathbreak، تقلّص 4,942 مساراً مرشحاً إلى قائمة مرتبة أزال فيها تغييران اثنان 80 بالمئة من المخاطر.
يكتشف تحليل مسارات الهجوم سلاسل الأذونات وعلاقات الثقة ونقاط الانكشاف التي قد يستخدمها المهاجم للانتقال من نقطة دخول إلى هدف في AWS. أما التحقق من مسارات الهجوم فيفحص كل سلسلة منها مقابل التفويض الذي تقيّمه AWS عند كل استدعاء، ويُبقي على السلاسل التي تنجح.
فبدلاً من قائمة تضم 3,000 مشكلة منفصلة، ينتج التحليل سلاسل: هذا المثيل العام يحمل هذا الدور، وهذا الدور يستطيع تمرير ذلك الدور إلى Lambda، وذلك الدور مسؤول إداري. تقدّم معظم منصات أمان السحابة اليوم شكلاً منه، وهو تحسّن كبير على القوائم المرتبة حسب الخطورة.
التحقق هو الخطوة التي تلي التحليل. وفي AWS هذا سؤال أصعب مما يبدو، لأن عدة أنواع من السياسات تشارك في كل قرار، والإجابتان تتباعدان أكثر مما تتوقعه معظم الفرق.
ما الذي يفعله تحليل مسارات الهجوم
iam:PassRole وlambda:CreateFunction، ينشئ الكيان دالة ويسلّمها دوراً ذا امتيازات، فتعمل الدالة بهذا الدور. يأخذها هذا المقال من مسار مرشح على الرسم البياني إلى مسار مثبت.يبدأ التحليل من جرد: الكيانات، والأدوار، والسياسات، وعلاقات الثقة، وموارد الحوسبة، والتخزين، والروابط الشبكية بينها. ثم يبني رسماً بيانياً ويبحث فيه عن طرق تنتهي عند شيء حساس، مثل دور مسؤول إداري أو قاعدة بيانات إنتاجية أو حاوية تضم بيانات العملاء. كل قفزة هي تقنية معروفة. iam:PassRole مع lambda:CreateFunction قفزة. وsts:AssumeRole إلى حساب يمنح الثقة قفزة. وعنوان URL عام لدالة نقطة دخول.
الناتج مجموعة من المسارات المرشحة. وهي مرشحة لأن الرسم البياني بُني من وثائق السياسات كما كُتبت، وسياسة الهوية وحدها لا تخبرك بما ستقرره AWS عند تنفيذ الاستدعاء.
أين يتوقف التحليل
تقيّم AWS كل استدعاء API مقابل عدة وثائق في آن واحد، وأي واحدة منها قد تحوّل السماح إلى رفض. والمسار الموجود على الرسم البياني قد يمنعه أي مما يلي:
- سياسات التحكم في الخدمات. يمكن لـ SCP على الوحدة التنظيمية أن يرفض
lambda:CreateFunctionللوحدة كلها، ولا تستطيع أي سياسة هوية داخلها تجاوز ذلك. - حدود الأذونات. الحدّ المفروض على الكيان المصدر يقيّد ما يمكن أن تمنحه سياسات هويته. فإذا أغفل الحدّ
iam:PassRole، يفشل التمرير حتى لو سمحت به سياسة الهوية. - سياسات الثقة. يجب أن يثق الدور الهدف بالخدمة أو الكيان الذي تعتمد عليه القفزة. والدور الذي لا يثق بـ
lambda.amazonaws.comلا يمكن تمريره إلى Lambda، أياً كان ما يملكه المستدعي. - سياسات الموارد. الحاوية أو المفتاح أو قائمة الانتظار أو الدالة في نهاية المسار لها سياستها الخاصة، وقد ترفض الكيان الذي وصلت به السلسلة.
- مفاتيح الشروط.
iam:PassedToServiceوaws:SourceAccountوaws:PrincipalOrgIDوفحصsts:ExternalIdكلها تضيّق منحاً يبدو واسعاً في قائمة الإجراءات. - الرفض الصريح. عبارة رفض في أي مكان من التقييم تتغلب على كل سماح، وغالباً ما تكون في سياسة مختلفة عن تلك التي قرأها الرسم البياني.
قراءة أي واحدة من هذه الوثائق أمر سهل. العمل الحقيقي هو حلّها كلها معاً، بالترتيب الذي تتبعه AWS، لكل خطوة في كل سلسلة، وهذه الخطوة هي ما يفصل المسار المرشح عن المسار المثبت. إذا تخطيتها ستكون القائمة طويلة، وجزء كبير منها سيفشل عند أول استدعاء.
كيف تتحقق من مسار هجوم سحابي في AWS
لنأخذ سلسلة شائعة. دور CI اسمه ci-deploy يملك iam:PassRole على دور اسمه data-pipeline، إضافة إلى lambda:CreateFunction وlambda:InvokeFunction. ودور data-pipeline يملك AdministratorAccess. على الرسم البياني هذا مسار من قفزتين بين دور CI وصلاحيات المسؤول الإداري: أنشئ دالة مرفقاً بها data-pipeline، ثم استدعها، فتعمل شيفرة الدالة بصلاحيات المسؤول الإداري.
يصنّف التحليل المسار على أنه قابل للوصول. ثم يمرّ عليه التحقق فحصاً بعد فحص:
- هل تسمح سياسة الهوية على
ci-deployبـiam:PassRoleعلى ARN الخاص بـdata-pipeline، أو على حرف بدل يشمله؟ نعم، علىarn:aws:iam::*:role/data-*. - هل يضيّق
iam:PassedToServiceالتمرير؟ لا يوجد أي شرط، لذا تُقبل أي خدمة. - هل تثق سياسة الثقة لـ
data-pipelineبـlambda.amazonaws.com؟ نعم، فقد أُنشئ الدور لخط معالجة قائم على Lambda. - هل يرفض SCP على الوحدة التنظيمية للحساب
lambda:CreateFunctionأوiam:PassRole؟ للوحدة SCP، ولا يرفض أياً منهما. - هل يستبعد حدّ أذونات على
ci-deployأياً من الإجراءين؟ لا يوجد حدّ على الدور. - هل يصل تنفيذ الدالة إلى شيء مهم؟
data-pipelineمسؤول إداري، لذا الإجابة هي كل شيء في الحساب، ومن خلال علاقتي ثقة عبر الحسابات، حسابان آخران.
نجحت كل الفحوص، لذا المسار مثبت. لم تُنشأ أي دالة ولم يُستدعَ أي شيء. حلّت كل خطوة الوثائق نفسها التي ستحلّها AWS، بالترتيب نفسه، وأعادت القرار نفسه. هذا هو معنى التحقق في مستوى التحكم. الاستغلال هنا إذن، لذا الدليل هو نتيجة التفويض.
الإصلاح ينبع من الخطوة الثانية. أضيق تغيير هو إضافة iam:PassedToService إلى منح التمرير بحيث لا تستقبل الدور إلا الخدمة المقصودة، أو استبدال ARN ذي حرف البدل بالدور الوحيد الذي يحتاجه CI. بعد التغيير تُشغَّل الفحوص الستة نفسها مرة أخرى فتفشل الخطوة الثانية. يختفي المسار، ويُسجَّل التأكيد بجانب النتيجة. يحتوي مدخل الخريطة لهذه السلسلة على أحداث CloudTrail والشرح الكامل.
هل التحقق من مسارات الهجوم آمن في بيئة الإنتاج؟
نعم، عندما يكون التحقق للقراءة فقط. يتصل Pathbreak عبر دور IAM للقراءة فقط وبأقل الصلاحيات، تنشئه أنت ويمكنك إلغاؤه في أي وقت. كل استدعاء يجريه هو عملية قراءة (Get وList وDescribe)، ويُحلّ التفويض لكل خطوة من وثائق السياسات التي تعيدها تلك الاستدعاءات. لا تُنشأ أي دالة، ولا يُتولّى أي دور في المسار، ولا يتغير أي مورد، لذا تستمر أحمال العمل في الإنتاج كما كانت.
تظهر جلسة الدور وعمليات القراءة في CloudTrail كأحداث إدارة باسم دور Pathbreak، مما يجعل تدقيق النشاط سهلاً. يقرأ Pathbreak الإعدادات، بما فيها المواضع التي تنكشف فيها بيانات الاعتماد عادةً، مثل بيانات المستخدم للمثيلات ومتغيرات البيئة للدوال ومخرجات المكدسات. ولا يقرأ محتوى تخزين الكائنات أو قواعد البيانات.
يجيب التحقق للقراءة فقط عن سؤال واحد لكل خطوة: هل ستسمح AWS بهذا الاستدعاء لهذا الكيان؟ ولا يختبر شيفرة التطبيقات، ولا الاستغلالات ضد المضيفات العاملة، ولا ما إذا كان الكشف والاستجابة سيلتقطان المهاجم. يغطي ذلك تقييم يدوي لأمان AWS، ويعمل Pathbreak إلى جانبه. وبعض الأدوات تتحقق بتشغيل خطوات الهجوم داخل البيئة، وهذه المقارنة توضح متى يناسب كل نهج.
لماذا يحدد الفرق ما تصلحه أولاً
ترتيب المسارات حسب الأثر لا ينفع إلا إذا كانت المسارات حقيقية. فالقائمة التي تخلط السلاسل المثبتة بسلاسل يمنعها SCP أصلاً ستدفع الفرق نحو عمل لا يغيّر شيئاً. في حساب المختبر لدى Pathbreak، أنتج التحليل 4,942 مساراً مرشحاً. وبعد التحقق والترتيب حسب نطاق الضرر، أزالت عبارة Deny واحدة على دور واحد 3,893 من أصل 4,087 مساراً متبقياً، وأزال تغييران معاً 80 بالمئة من المخاطر في الحساب. هذا الترتيب لا يظهر إلا بعد حلّ كل مسار مقابل التفويض الحقيقي.
كيف يفعل Pathbreak ذلك
يبني Pathbreak الرسم البياني، ويستدل عليه لإنتاج سلاسل مرشحة، ثم يتحقق من كل سلسلة من بدايتها إلى نهايتها بحلّ التفويض الذي ستقيّمه AWS: سياسات الهوية والموارد، وسياسات الثقة، وSCP، والحدود، والشروط. الوصول بوضع القراءة فقط ولا يُنفَّذ أي شيء. يُرتَّب كل مسار متحقَّق منه حسب ما يصل إليه، ويأتي مع التغيير المحدد الذي يكسره. وبعد تطبيق التغيير يُعاد تقييم المسار وتُسجَّل النتيجة، فيتأكد الإصلاح بالدليل.
الأسئلة الشائعة
ما هو تحليل مسارات الهجوم؟
يربط تحليل مسارات الهجوم نتائج الأمان الفردية في تسلسل الخطوات التي قد يتخذها المهاجم من نقطة دخول إلى هدف، عادة ببناء رسم بياني للهويات والأذونات والموارد والبحث فيه عن طرق تؤدي إلى أصول حساسة. يبني Pathbreak هذا الرسم البياني لـ AWS ثم يتحقق من كل مسار يجده.
ما هو التحقق من مسارات الهجوم؟
يفحص التحقق من مسارات الهجوم كل مسار مرشح مقابل التفويض الذي سيقيّمه مزوّد السحابة في كل خطوة. وفي AWS يعني ذلك حلّ سياسات الهوية، وسياسات الموارد، وسياسات الثقة، وسياسات التحكم في الخدمات، وحدود الأذونات، ومفاتيح الشروط معاً، والتأكد من أن المسار ينجح. يتحقق Pathbreak من مسارات الهجوم في AWS بهذه الطريقة، بوضع القراءة فقط، ويسجّل النتيجة لكل خطوة.
هل يعني التحقق تشغيل استغلالات في حساب AWS الخاص بي؟
لا. في مستوى التحكم في AWS، تحركات المهاجم هي استدعاءات API، وكل استدعاء تسمح به أو ترفضه وثائق السياسات. وحلّ هذه الوثائق بوضع القراءة فقط يعطي القرار نفسه الذي ستتخذه AWS، لذا يمكن إثبات المسار دون إنشاء أي شيء أو استدعائه أو تغييره. هكذا يتحقق Pathbreak من مسارات الهجوم في AWS.
هل يمكن لأداة CSPM إجراء التحقق من مسارات الهجوم؟
تقدّم أدوات CSPM وCNAPP تحليلاً لمسارات الهجوم على رسم بياني لإعداداتك. أما التحقق بالمعنى الموصوف هنا فيعني تقييم كل طبقة من طبقات التفويض في AWS لكل خطوة، ثم تأكيد الإصلاح بعد ذلك. يفعل Pathbreak ذلك، ويمكن أن يعمل بجانب CSPM أو أن يحل محل ماسح مستقل.
كيف تتحقق من مسارات الهجوم السحابية في AWS؟
ابنِ رسماً بيانياً للكيانات والأدوار وعلاقات الثقة والموارد، وولّد منه سلاسل مرشحة. ولكل خطوة في السلسلة، حُلّ سياسة الهوية وسياسة المورد وسياسة الثقة وسياسة التحكم في الخدمة وحدود الأذونات ومفاتيح الشروط معاً، بالترتيب الذي تقيّمها به AWS، واحتفظ فقط بالسلاسل التي تُسمح فيها كل خطوة. وبعد تطبيق الإصلاح، أعد تشغيل الفحوص نفسها لتأكيد اختفاء المسار. ويؤتمت Pathbreak هذه الخطوات في AWS.
ما الذي يظهر في CloudTrail عندما يتحقق Pathbreak من مسارات الهجوم؟
استدعاء sts:AssumeRole الذي يبدأ كل جلسة على دور IAM للقراءة فقط الذي أنشأته، ثم استدعاءات القراءة. تظهر استدعاءات Get وList وDescribe الخاصة بـ Pathbreak في CloudTrail كأحداث إدارة باسم ذلك الدور. لا يُنشأ أي شيء في المسار ولا يُستدعى ولا يُغيَّر، لذا لا يترك التحقق أي أحداث كتابة.
ما الذي لا يغطيه التحقق من مسارات الهجوم للقراءة فقط؟
يجيب عمّا إذا كانت AWS ستسمح بكل خطوة في المسار. ولا يختبر شيفرة التطبيقات، ولا الاستغلالات ضد المضيفات العاملة، ولا ما إذا كان الكشف والاستجابة سيلتقطان المهاجم. يغطي ذلك تقييم يدوي لأمان AWS، ويعمل Pathbreak إلى جانبه.
اعرف أيّ مسارات الهجوم في حسابات AWS لديك مثبتة، والتغيير الذي يكسر كلاً منها.
اطلب عرضاً توضيحياً شاهد العرض التوضيحي