ستيم ويندوز عميل محلي تصعيد الامتياز 0day

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


لذلك ، بطل قصتنا هو برنامج Valve's Steam. والضعف التصاعدي امتياز في ذلك ، والذي يسمح لأي مستخدم لتنفيذ الأوامر نيابة عن NT AUTHORITY \ SYSTEM.

حساسية


الضعف نفسه بسيط جدا. يقوم Steam بتثبيت خدمة "خدمة عملاء Steam" لعملها. ألق نظرة على واصف خدمة SDDL :

O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)

نحن هنا مهتمون بالجزء (A ؛؛ RPWP ؛؛؛ BU). في هذه الحالة ، يعني هذا الإدخال أن أي مستخدم من مجموعة Users يمكنه بدء الخدمة وإيقافها.
دعونا نرى ما تفعله الخدمة عند بدء التشغيل. ليست مثيرة للاهتمام كثيرًا ، ولكن هناك بعض العمليات التي تبدو غير عادية - تسرد الخدمة محتويات قسم HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps وتعيين بعض الحقوق لجميع الأقسام الفرعية.



أتساءل ما نوع الحقوق المعروضة؟ نقوم بإنشاء مفتاح اختبار ، وبدء الخدمة (سجل procmon أعلاه) ونرى ما هو صحيح. يوجد هنا أيضًا أن قسم HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam لديه حقوق وصول كاملة لجميع المستخدمين الموروثين في جميع المفاتيح الفرعية. وُلدت فرضية أنه سيتم تعيين الحقوق نفسها لجميع الأقسام الفرعية لـ HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps من خلال استدعاء RegSetKeySecurity . ولكن ماذا لو كان هناك رابط في التسجيل والفرع HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps \ test سوف يشير ، على سبيل المثال ، إلى HKLM \ SOFTWARE \ test2 ؟

نحن نتحقق ونرى أن الحقوق في حالة symlink مسجلة لفرع التسجيل المستهدف.



نحن نتحقق من حقوق الفرع المستهدف ونرى في نموذج SDDL (تخطي عدم الاهتمام):

(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)

في شكل لفظي ، وهذا يعني أن الوصول الكامل (القراءة والكتابة) لجميع المستخدمين. هذه هي الحقوق المنصوص عليها في خدمة Steam للفرع.

الآن وقد تم إعداد البدائية للسيطرة على أي فرع من فروع التسجيل تقريبًا ، أصبح من السهل تشغيل PoC. لقد اخترت فرع HKLM \ SYSTEM \ ControlSet001 \ Services \ msiserver - وهو يتوافق مع خدمة "Windows Installer" ، والتي يمكن أيضًا تشغيلها بواسطة المستخدم ، ولكن ستعمل الخدمة مع امتيازات NT AUTHORITY \ SYSTEM. بعد الحصول على التحكم في فرع HKLM \ SYSTEM \ ControlSet001 \ Services \ msiserver ، نقوم بتغيير المسار إلى الملف القابل للتنفيذ في مفتاح ImagePath وبدء تشغيل خدمة msiserver. يتم تشغيل ملفنا القابل للتنفيذ بأعلى الأذونات الممكنة - NT AUTHORITY \ SYSTEM.

نقوم بتجميع كل ما هو مكتوب أعلاه في التعليمات البرمجية والحصول على تصعيد امتياز بسيط على أي كمبيوتر يعمل بنظام Windows حيث تم تثبيت Steam.

تقرير الضعف


لقد أرسلت تقرير الضعف إلى Valve من خلال Hackerone.

هنا كانت المفاجأة الأولى تنتظرني - قبل نقل مشكلة عدم الحصانة مباشرة إلى Valve ، كان علي أولاً إقناع موظفي hackerone بأنني تلقيت بالفعل تقريرًا عن الثغرة ، لأن Valve استخدم وظيفة "Managed by HackerOne" . لا مانع - لدي PoC ، الذي يستدعي وحدة التحكم نيابة عن NT AUTHORITY \ SYSTEM - دليل على الوجه. وأنا أحصل على إنكار في التقرير. يشير السبب إلى أن تقريري يقع خارج نطاق البحث ، لأن "الهجمات التي تتطلب القدرة على إسقاط الملفات في مواقع عشوائية على نظام ملفات المستخدم." (يتطلب الهجوم القدرة على تحديد موقع الملفات في مسارات نظام الملفات التعسفي). ردة فعلي: "ليس لدي حتى عملية نظام ملف واحد ، لكنني أعتبر فشلًا لهذا السبب حقًا؟"

أكتب تعليقًا حول هذا الأمر ووصل موظف آخر ، ومع ذلك يتعهد بالتحقق من مشكلة عدم الحصانة. يؤكد ذلك ويمر صمام. الصيحة ، يتحقق الهدف. أم لا ...؟

يمر الوقت ويتم وضع علامة على التقرير مرة أخرى على أنه غير قابل للتطبيق. الأسباب: "الهجمات التي تتطلب القدرة على إسقاط الملفات في المواقع العشوائية على نظام ملفات المستخدم" و "الهجمات التي تتطلب الوصول المادي إلى جهاز المستخدم" (الهجوم يتطلب الوصول الفعلي إلى جهاز المستخدم). ثم أدركت أن هجمات تصعيد الامتياز لم تكن مثيرة للاهتمام بالنسبة إلى Valve.

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

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

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

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

إحصائيات صغيرة: تم اختبار الثغرة الأمنية على أنظمة التشغيل Windows 8 x64 و Windows 8.1 x64 و Windows 10 x64. لا أعرف ميزات ترقيم إصدار برنامج Steam ، لذلك سأصلح إصدار مكونات الخدمة:

  • SteamService.dll (5.16.86.11 ، الموقع من قبل Valve 06/14/2019)
  • SteamService.exe (5.16.86.11 ، الموقع من قبل Valve 06/14/2019)

الجدول الزمني:

15 يونيو - إرسال تقرير الضعف.
تم رفض 16 يونيو - "الهجمات التي تتطلب القدرة على إسقاط الملفات في مواقع عشوائية على نظام ملفات المستخدم."
16 يونيو - إعادة اكتشاف مع التعليق.
2 يوليو - أكده موظف HackerOne ، تم نقله إلى Valve.
20 يوليو - تم رفض ، "الهجمات التي تتطلب القدرة على إسقاط الملفات في المواقع العشوائية على نظام ملفات المستخدم." ، "الهجمات التي تتطلب الوصول الفعلي إلى جهاز المستخدم."
7 أغسطس - تم نشر هذا المقال.

قليلا من التكهنات


أنا بخيبة أمل كبيرة. تقوم إحدى الشركات الجادة التي تكتب كلمات مضللة تفيد بأن الأمان مهم ، بفتح جهاز الكمبيوتر الخاص بك للوصول إلى أي برامج تقوم بتشغيلها.

من المثير للسخرية أن نجد أن المشغّل ، المصمم فعليًا لتشغيل برامج الطرف الثالث على جهاز الكمبيوتر الخاص بك ، يتيح له الحصول على أقصى الامتيازات بهدوء. هل أنت متأكد من أن لعبة مجانية قام بها مطور غير معروف على الركبة ستتصرف بأمانة؟ هل تعتقد أنه بخصم 90٪ لن تحصل على عامل مناجم خفي؟ بالطبع ، ستظل هناك بعض التهديدات أثناء العمل بدون حقوق المسؤول ، ولكن الحقوق العالية للبرامج الضارة يمكن أن تفسد الأعصاب بشكل كبير - تعطيل مكافحة الفيروسات ، وإصلاحه عند بدء تشغيل النظام ، وتغيير أي ملفات تقريبًا ، أي مستخدمين.

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

  1. هناك ثغرة يسهل استغلالها (وبالنظر إلى الرسائل الموجودة على Twitter ، وليس واحدة).
  2. من السهل تحديد موقعه - لست متأكدًا من أنني كنت أول من وجده ، لكن على الأقل أول من وصفته علنًا.
  3. الإحجام عن قبول تقرير عن هذه الثغرات وغيرها من الثغرات الأمنية (يتم اختيار النطاق خصيصًا بحيث يصعد تصاعد الامتيازات عنه).

أنا حقا لا أحب كل هذا. لن أحثك ​​على إزالة Steam ، لكنني أقترح أن تكون حذراً للغاية فيما تفعله. أمانك على المحك.

علاوة


والحقيقة هي أنه أثناء عملية إعداد هذه المقالة ، وقع حدث مثير للاهتمام إلى حد ما ، وقررت فيه استكمال الجدول الزمني.

20 تموز (يوليو) - بعد رفض التقرير ، حذرت h1 من أنني سأكشف علانية عن تفاصيل الثغرة الأمنية بعد 30 يوليو.
2 أغسطس - تم الإبلاغ عن موظف آخر في h1 في تقرير مغلق ويقول إنهم لا يسمحون لي بالإفصاح.

تم إعداد هذا المقال للنشر بحلول 30 يوليو (تم اختيار هذا التاريخ بمعدل 45 يومًا بعد إرسال التقرير) ، لكن تم تأجيله. وهكذا ، بعد أسبوعين من رسالتي في 20 يوليو ، ظهر شخص يخبرني: "لا نعطي الإذن بالكشف عن نقاط الضعف". في الواقع ، اتضح: لقد حددنا تقريرك على أنه غير مناسب ، وأغلقنا المناقشة ، ولم نعتبر أنه من الضروري شرح أي شيء لك ، ونحن لا نريد منك نشره. لا توجد كلمة واحدة من Valve. لا شباب ، وهذا لن ينجح. أنت لم تحترم عملي ، ولن أحترم عملك - لا أرى أي سبب لعدم نشر هذا التقرير للجميع. على الأرجح سيتم حظري على h1 بسبب هذا ، لكنني لن أكون غاضبًا.

UPD. اتضح أمس (6 أغسطس) تم إصدار تحديث Steam. لا ، لم يصلح أي شيء.
إصدار الملف: 5.27.59.20 توقيع مؤرخ في 08/08/2019.

بعد الكشف


نواصل تحديث الجدول الزمني:

7 أغسطس (بعد النشر) - تم اكتشاف تقرير h1. تلقيت خطابًا ، يصعب تحديد جوهره باختصار ، لكن الشيء الأكثر أهمية هو أن بعض الحجج المقنعة تحتاج إلى استنتاج مفاده أن نتائج الضعف مهمة. كان هناك "Valve لن يقوم بإصلاح شيء قرروا أن يكون N / A." أكدت هذه الكلمات مرة أخرى اقتناعي بأنني على صواب في أنني أجريت الكشف العلني عن التفاصيل.

7 آب (أغسطس) - كتب مات نيلسون أن الثغرة الأمنية التي أبلغ عنها هي نفسها مشكلة عدم الحصانة. مما يؤكد رسالتي عن سهولة العثور عليها. انه يفتح له PoC .


9 أغسطس - يتلقى Steam Beta تحديثًا حيث يكون أحد الخطوط هو "استغلال تصعيد الامتيازات الثابتة باستخدام روابط رمزية في سجل Windows". هناك شكوك حول إمكانية التحايل على الإصلاح ، ولكن الآن قم بتخزين الفشار.

13 أغسطس - تلقى Steam تحديثًا يكون أحد الخطوط فيه "استغلال تصعيد الامتيازات الثابتة باستخدام روابط رمزية في سجل Windows". يبدو أن الخدمة لا تعرض الحقوق في السجل ، لذلك يمكننا أن نفترض أنها ثابتة.

15 أغسطس - أظهر الباحث أن التصحيح يمكن التحايل عليه ، لا تزال الثغرة الأمنية ذات صلة. اختصار - يمكنك إرجاع الإصدار السابق (قبل التصحيح) من الخدمة.

20 أغسطس - حظرني Valve في برنامجهم على H1. ما تبقى من H1 متاح لي.

هذا المقال باللغة الإنجليزية.

Source: https://habr.com/ru/post/ar462479/


All Articles