ملخص

  • كان المحفز المباشر إصدار تحديث محتوى سريع الاستجابة في 19 يوليو 2024 يتطلب من مستشعر Falcon فحص إدخال الحادي والعشرين على الرغم من أن كود التكامل ذي الصلة قدم 20 فقط. أدى قراءة الذاكرة خارج الحدود الناتجة في سياق النواة إلى تعطل الأنظمة المتضررة.
  • كان الفشل الأعمق سلسلة من فجوات التحكم التي يمكن منعها: عدم اكتشاف عدم تطابق عدد المدخلات في وقت الترجمة، غياب التحقق من الحدود في وقت التشغيل، استخدمت حالات الاختبار حرف بدل في الحقل الحاسم، وثق المدقق في تعريف غير صحيح، لم يتم اختبار كل مثيل محتوى جديد من خلال المفسر، وافتقر النشر إلى حلقات تجريبية فعالة.
  • عكست CrowdStrike المحتوى المعيب في الساعة 05:27 بالتوقيت العالمي، بعد 78 دقيقة من الإصدار، لكن التراجع لم يتمكن من إحياء العديد من الأنظمة العالقة في حلقات إعادة التشغيل تلقائيًا. تطلب الاسترداد غالبًا الوصول إلى الوضع الآمن أو بيئة الاسترداد، أو الإدارة المحلية، أو مفاتيح BitLocker، أو وسائط التمهيد، أو الإصلاح اليدوي.
  • المساءلة ليست حصرية. CrowdStrike تسيطر على المحتوى المعيب وضمانات الإصدار التي كان من الممكن أن تمنع أو تحد من الضرر الأولي. العملاء يسيطرون على تصميم استمرارية الأعمال وجزء كبير من الاستعداد للاسترداد. مايكروسوفت تسيطر على قدرات نظام التشغيل والاسترداد المهمة، لكن السجل العام لا يظهر أن مايكروسوفت أنشأت أو وافقت على المحتوى المعيب.

تبدأ الحادثة قبل 19 يوليو

قوة الأدلة: عالية.يأتي التسلسل الزمني التقني المركزي من المراجعة الأولية لـ CrowdStrike، وتحليل السبب الجذري الكامل، والتنبيه الفني المعاصر، والإيداع التنظيمي. وثقت مايكروسوفت بشكل مستقل حجم الأجهزة وسلوك التعطل. تتقارب هذه المصادر حول الآلية الأساسية، على الرغم من أن معظم أدلة عملية الإصدار الدقيقة لا تزال من CrowdStrike.

أقصر نسخة من الحادثة تبدأ في الساعة 04:09 بالتوقيت العالمي في 19 يوليو 2024. تلك النسخة دقيقة ولكنها غير مكتملة. تحديث محتوى يتم تسليمه عبر السحابة وصل إلى أنظمة Windows التي تعمل بإصدار Falcon 7.11 أو أحدث، تعطلت الأنظمة، أعادت CrowdStrike المحتوى في الساعة 05:27 بالتوقيت العالمي، وتبع ذلك اضطراب عالمي. يبدأ الجدول الزمني المفيد للمساءلة قبل ما يقرب من خمسة أشهر، عندما دخل عدم التطابق الكامن لأول مرة في كود الإنتاج.

في 28 فبراير 2024، أصدرت CrowdStrike إصدار المستشعر 7.11 بشكل عام. قدم الإصدار نوع IPC Template Type جديد يهدف إلى اكتشاف إساءة استخدام أنابيب Windows المسماة والآليات ذات الصلة للاتصال بين العمليات. نوع النموذج هو كود مبني في إصدار المستشعر. يحدد الحقول التي يمكن أن يستخدمها محتوى الكشف المسلَّم عبر السحابة لاحقًا. تقولمراجعة CrowdStrike الأولية بعد الحادثةإن إصدار المستشعر اجتاز عملية الاختبار العادية، بما في ذلك الفحوصات الآلية واليدوية والتوزيع المرحلي لبرنامج المستشعر نفسه.

كان الخطأ موجودًا بالفعل. تم تعريف نوع النموذج IPC الجديد على أنه يحتوي على 21 حقل إدخال، لكن كود التكامل الذي يوفر البيانات للمفسر قدم 20 قيمة فقط. لم يكن هذا كافيًا بعد للتسبب في تعطل. كان المحتوى اللاحق بحاجة إلى طلب مقارنة ضد القيمة 21 المفقودة.

في 5 مارس، اختبرت CrowdStrike نوع النموذج IPC في بيئة مرحلية وأصدرت أول مثيل نموذج IPC عبر ملف القناة 291. مثيل النموذج ليس ملف ثنائي جديد للمستشعر. إنه محتوى مطابق يهيئ قدرة موجودة بالفعل في المستشعر. تم نشر ثلاثة مثيلات أخرى بين 8 أبريل و24 أبريل. عملت دون الفشل العلني الذي شوهد في يوليو.

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

في الساعة 04:09 بالتوقيت العالمي في 19 يوليو، أصدرت CrowdStrike مثيلين إضافيين من IPC Template Instance. قدم أحدهما معيار مطابقة غير بدل للحقل الحادي والعشرين. وفقًالتحليل السبب الجذري الكامل لملف القناة 291، قيّم مدقق المحتوى المثيل على افتراض أن 21 مدخلاً ستكون متاحة. قدم المستشعر الجاري 20. عند إشعار IPC التالي ذي الصلة، حاول مفسر المحتوى فحص الإدخال الحادي والعشرين، وقرأ بعد نهاية مصفوفة الإدخال، وتسبب في تعطل نظام Windows.

يحددالتنبيه الفني لـ CrowdStrike الصادر في 19 يوليوالطابع الزمني لملف القناة 291 الإشكالي عند 04:09 بالتوقيت العالمي والنسخة المستعادة عند 05:27 بالتوقيت العالمي. لم يكن السكان المتأثرون كل جهاز Windows وليس كل عميل Falcon. بل كان يتكون من أنظمة Windows معينة تعمل بإصدار المستشعر 7.11 أو أحدث والتي كانت متصلة بالإنترنت، وتلقت المحتوى خلال نافذة التعرض البالغة 78 دقيقة، ثم واجهت حالة التشغيل. كانت أنظمة Mac و Linux خارج مسار الفشل هذا.

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

المحفز والسبب الجذري والظروف المساهمة

قوة الأدلة: عالية للسلسلة التقنية؛ متوسطة للتسبب التنظيمي.تدعم الأدلة العامة تفسيرًا تقنيًا دقيقًا. لا تحدد أصحاب القرار الداخليين، أو مناقشات الموافقة، أو ظروف التوظيف، أو حوافز الإدارة وراء تصميم الإصدار. تحد هذه الإغفالات من أي ادعاء حول الخطأ الفردي أو النية المؤسسية.

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

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

السبب الجذري التقني.قدم كود جانب المستشعر 20 قيمة إدخال بينما توقع تعريف نوع النموذج والمحتوى 21. افتقر مفسر المحتوى إلى فحص حدود مصفوفة وقت التشغيل الذي كان يمكن أن يرفض الوصول غير الصالح بدلاً من القراءة بعد المدخلات المتاحة. عدم التطابق بالإضافة إلى القراءة غير الآمنة خلق حالة التعطل.

ظروف الإصدار المساهمة.استخدمت حالات الاختبار لنوع النموذج مطابقة بدل في الحقل الحادي والعشرين؛ اعتمد المدقق على تعريف الحقول الـ 21 غير الصحيح؛ لم يثبت اختبار الإجهاد الأولي أن المثيلات اللاحقة ستتصرف بأمان؛ لم يتم اختبار كل مثيل جديد داخل مسار المفسر الفعلي قبل الإنتاج؛ ولم يمر محتوى Rapid Response عبر حلقات نشر متتالية مع وقت اختبار وإشارات قبول. لا تحتاج أي فجوة تحكم واحدة إلى حمل التفسير بأكمله. تطلبت الحادثة توافقها.

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

الفرق بين المحتوى والكود حقيقي تقنيًا لكنه غير كافٍ من الناحية التشغيلية. تؤكد CrowdStrike أن محتوى Rapid Response هو بيانات تكوين، وليس برنامج تشغيل نواة. ومع ذلك، يمكن للبيانات التي يفسرها برنامج متميز توجيه ذلك البرنامج إلى مسار غير آمن. التسمية المرفقة بالحمولة لا تحدد شدة تأثيرها. إذا كان التكوين يمكن أن يتسبب في قراءة مكون النواة لذاكرة غير صالحة، فإن التكوين يحتاج إلى ضوابط إصدار تتناسب مع تلك النتيجة المحتملة.

لهذا السبب أيضًا لم تكن شهادة Windows Hardware Quality Labs حاجزًا كاملاً. طبقت الشهادة على إصدارات المستشعر وملفات القناة الموجودة أثناء الشهادة. وصل مثيل يوليو ديناميكيًا بعد نشر إصدار المستشعر المعني بالفعل. أكدالتحليل الفني لمايكروسوفت حول تكامل أدوات الأمن في Windowsأن التعطل حدث في وحدةcsagent.sysالتابعة لـ CrowdStrike ووصف سبب استخدام منتجات الأمن لبرامج تشغيل النواة للرؤية المبكرة والفرض والأداء ومقاومة العبث. لا يمكن لشهادة برنامج تشغيل التحقق من صحة كل مدخل تكوين مستقبلي ما لم يرفض وقت التشغيل المدخلات غير الصالحة بأمان وتختبر عملية المحتوى اللاحق مسار التنفيذ الحقيقي.

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

... (يتبع النص الكامل لكنه مقطوع للاختصار)...