طريقة سهلة لكسب المال على علة باونتي

الشكل 2


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

مكافآت الأخطاء على البرمجيات الحرة والمفتوحة المصدر - ما هذا؟


Bug Bounty هو اسم عام للعديد من البرامج التي يقدم فيها مطورو مواقع الويب والبرامج مكافآت نقدية للعثور على الأخطاء ونقاط الضعف. بالإضافة إلى برامج Bug Bounty المشهورة جدًا من الشركات الكبيرة مثل Apple أو Microsoft ، هناك أيضًا برامج للعثور على الثغرات الأمنية في مشاريع مفتوحة المصدر.

يمكن العثور على الكثير منها على HackerOne ، ولكن ربما يكون الأكبر هو FOSSA - تدقيق البرمجيات الحرة والمفتوحة المصدر. هذا هو برنامج أبحاث الضعف التي يرعاها الاتحاد الأوروبي لمختلف المشاريع مفتوحة المصدر. مجموع جوائز الجائزة هو مبلغ مثير للإعجاب - يصل إلى 850،000 يورو!

كيف تشارك؟


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

إذا كانت هناك رغبة في المشاركة في Bug Bounty من الاتحاد الأوروبي - يمكن العثور على قائمة بالمشروعات المشاركة في هذا البرنامج هنا . بالنسبة لمعظم المشاريع ، سيكون تسجيلك على HackerOne كافياً ، لكن العديد من البرامج المدرجة في تلك القائمة موجودة على intigriti.com.

للمشاركة ، تحتاج إلى اختيار مشروع مناسب لك ، ثم قراءة شروط المشاركة بعناية. إذا كانوا يرضونك ، فقد حان الوقت لممارسة.

للعثور على الثغرات والحصول على أموالك ، تحتاج فقط إلى تنزيل المشروع (أو استنساخه من GitHub) وتحليل كل سطر من التعليمات البرمجية بعناية ، وفحص كل تعبير عن الأخطاء المحتملة. إذا وجدت أي شيء يمكن أن يؤثر على أمان البرنامج - فاكتبه في تقرير وارسله إلى المطورين. إذا قاموا بتقييم العثور الخاص بك على أنه يستحق الترقية - أموالك في جيبك :).

انتظر اين الخفة


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

بالطبع ، يمكن للمحللين الاستاتيكيين اكتشاف كل الأخطاء. نعم وبارك الله لهم! بعد كل شيء ، هدفنا هو العثور على الأخطاء بسرعة وسهولة ، وليس للعثور عليهم جميعا.

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

الشكل 1


مثال على تصفية نتائج التحليل.

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

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

لقطة الشاشة تعرض واجهة Visual Studio. ومع ذلك ، لا تنخدع بهذا. يمكن استخدام المحلل ليس فقط كمكون إضافي لبرنامج Visual Studio ، ولكن أيضًا بشكل مستقل ، بما في ذلك في Linux و macOS .

إيجابيات هذا النهج


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

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

ثالثًا ، غالبًا ما يكون المحللون أكثر معرفة من أي شخص. ماذا يعني هذا؟ اسمحوا لي أن أشرح فكرتي على مثال الكود من نواة أندرويد:

static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE); // Zero out key data. } 

يبدو حيث قد يكون هناك خطأ؟

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

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

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

وأخيرا ، رابعا. واحدة من أكثر الفوائد المفيدة لاستخدام التحليل الثابت عند مطاردة Bug Bounty هي السرعة. نعم ، من خلالها يمكنك التحقق من مشروعين أو ثلاثة أو أربعة مشاريع في المساء - ولكن هذا ليس كل شيء.

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

الشكل 4


نقاط الضعف المحتملة


قد يكون في حيرة القارئ اليقظة:

توقف ، توقف! من ناحية ، يشير إلى البحث في الكود عن الأخطاء في البرامج ، من ناحية أخرى ، يتم ذكر الثغرات المحتملة. علاوة على ذلك ، فإن نقاط الضعف أكثر إثارة للاهتمام من وجهة نظر Bug Bounty. يرجى توضيح!

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

بالمناسبة ، وفقًا لتقرير المعهد الوطني للمعايير والتكنولوجيا (NIST) ، يرتبط حوالي 64٪ من الثغرات الأمنية في التطبيقات بأخطاء البرامج ، وليس بأوجه القصور الأمني ​​(وليس نقص ميزات الأمان).

التقط بثقة PVS-Studio بثقة وابدأ في البحث عن الأخطاء والعيوب الأمنية! بالمناسبة ، تصنيف التحذيرات وفقًا لـ CWE سوف يساعدك في ذلك.

استنتاج


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

ربما هذا كل شيء. حظا سعيدا في العثور على المكافأة الخاصة بك!



إذا كنت ترغب في مشاركة هذا المقال مع جمهور ناطق باللغة الإنجليزية ، فيرجى استخدام الرابط الخاص بالترجمة: George Gribkov. طريقة سهلة لكسب المال على علة باونتي .

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


All Articles