ما هو خطر نشر رموز التصحيح (ملف PDB) في بيئة الإنتاج؟

StackOverflow https://stackoverflow.com/questions/1307482

سؤال

لدي تطبيق يقوم بتسجيل الدخول إلى آثار Strack Stiack وأردت أن تضم هذه الآثار المكدس لأسماء الملفات وأرقام الأسطر عند النشر في الإنتاج. لقد اكتشفت كيفية نشر رموز التصحيح W / التجميع، ولكن في عملية البحث في القضية الرفيعة هذا السؤال, ، مما يعني أنه ليس من الجيد تضمين ملفات PDB في بيئة الإنتاج. يقول تعليق على الإجابة المقبولة "... معلومات تصحيح الأخطاء يمكن أن تعطي البيانات الحساسة وتكون ناقلات هجوم. اعتمادا على ما هو تطبيقك."

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

تعديل: متابعة السؤال / التوضيح

بناء على إجابات الجميع حتى الآن، يبدو أن هذا السؤال يمكن تبسيطه لتطبيقات .NET. هذا قليلا من جون روبنز بلوق مرتبط في إجابة مايكل مادوكس نوع من قفز في وجهي:

يحتوي .NET PDB فقط يحتوي على قطعتين من المعلومات وأسماء الملفات المصدر وخطوطها وأسماء المتغير المحلي. جميع المعلومات الأخرى موجودة بالفعل في البيانات الوصفية .NET لذا ليس هناك حاجة لتكرير نفس المعلومات في ملف PDB.

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

هل كانت مفيدة؟

المحلول

إليك سؤال آخر للنظر في:

هل هناك أي مشكلات أمنية تترك ملفات تصحيح PDB على الخوادم الحية؟

والمزيد من المعلومات حول ملفات PDB:

ملفات PDB: ما يجب أن يعرفه كل مطور

بشكل عام، أشمل دائما ملفات PDB في عمليات النشر الخاصة بي، والمكاسب ضخمة للغاية لتجاهلها.

إذا لم تكشف أبدا عن تتبع مكدس للمستخدمين (وعليا، فلن يجب عليك)، فلا يوجد أي مخاطر أمنية إضافية في نشر ملفات PDB.

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

تهديد أمني أكبر شيء مثل العاكس الذي عند استخدامه في DLLs سوف يسمح لهم بعرض التعليمات البرمجية المصدرية، مع أو بدون ملفات PDB.

نصائح أخرى

إذا كنت تنشر ببيئة الإنتاج في منظمتك الخاصة، فهي ليست مشكلة أمنية.

إذا كنت تبيع برنامجك إلى كيانات أخرى، فيمكن لملف .pdb أن يعطي شخصا مهتما في الهندسة العكسية ساقه - قد تكون مشكلة أو قد تكون مشكلة بالنسبة لك.

ومع ذلك (لتكون واضحة)، لا تريد عرض آثار المكدس الخاصة بك إلى العميل - سواء كانت متوفرة .pdbs أم لا. ولكن إذا كنت مجرد تسجيل الآثار وتقديم صفحة خطأ "جميلة" للعميل، فهي ليست مشكلة.

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

لذلك يمكن أن يرى نظامك لديه وظيفة مثل:

AddAdminUser(string name, string password);

ومعرفة تعويضها. إذا تم اختراق البرنامج الخاص بك، فيمكنه الاتصال بهذه الوظيفة لإعطاء امتيازات المسؤول عن نفسه.

أو شيء مثل:

typedef enum {Basic, NTLM} AuthenticationMode;
AuthenticationMode g_authenticationMode;

ويعرف ما الذي يرفع إلى تبديل طلبك إلى وضع غير آمن.

بدلا من ذلك، سيكون هذا قليلا من وقت الهندسة العكسي لمعرفة ذلك. ليس كم من الوقت غير قابل للتغلب عليه.

لكن . وبعد وبعد هذا كله يعني أن مهاجمك موجود بالفعل في وضع يمكنه فيه إنهاء البرنامج الخاص بك. إذا كان هذا هو الحال، فقد فقدت بالفعل.

إذا كان لديك سبب تجاري جيد لنشر رموز PDB، فانتقل إلى الأمام. نشر PDB لن يجعلك غير آمنة. إذا لم يكن لديك سبب وجيه للنشر، فلا يجب عليك القيام بذلك لأنه سيجعل الهجمات أسهل قليلا.

يمكنك أيضا إنشاء ملفات PDB العامة - هذه الشريط أجزاء معينة من المعلومات، ولكن تمنحك رموز كافية لتوليد تتبع المكدس والتصحيح الأساسي. التفاصيل هنا. وبعد تقوم Microsoft بنشر PDB العام على خادم الرمز الخاص به للجميع لاستخدامها.

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

يمكن لشخص ما "استعادة" شفرة المصدر الكامل للتطبيق الخاص بك. إذا كان مصدر مفتوح، فأنت لا داعي للقلق. إذا كان لديه بعض IP (الخوارزميات والحماية والتراخيص)، فمن المحتمل أنها ليست فكرة جيدة.

صحيح أن أدوات مثل العاكس يمكن إعادة بناء أجزاء من التعليمات البرمجية حتى بدون ملفات PDB، ولكن يمكن أن تساعد المرافق (حسنا، قليلا فقط).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top