
مشروع SEDATED® (محلل بيانات المؤسسات الحساسة للقضاء على الإفصاح)

يركّز مشروع SEDATED® (Sensitive Enterprise Data Analyzer To Eliminate Disclosure) على منع دفع البيانات الحساسة مثل بيانات اعتماد المستخدمين والرموز المميزة (tokens) إلى Git.
/config/enforced_repos_list.txtمع العدد الهائل من تغييرات التعليمات البرمجية المطلوبة في بيئة CICD اليوم، يدفع المطورون باستمرار تعليمات برمجية قد تحتوي عن غير قصد على معلومات حساسة. ويمثل هذا الاحتمال لتعرض البيانات الحساسة خطرًا كبيرًا على المؤسسات (2017 OWASP Top Ten #3 - Sensitive Data Exposure). يعالج SEDATED® هذه المشكلة عبر مراجعة جميع تغييرات التعليمات البرمجية الواردة تلقائيًا وتقديم تغذية راجعة فورية للمطور. وإذا حدد بيانات حساسة، فسيمنع دفع الالتزام (الالتزامات) إلى خادم Git.
**ملاحظة: فقط الأسطر المُضافة أو المعدَّلة (التي تبدأ بـ + في ملف التصحيح) في عمليات دفع الالتزامات هي ما يفحصه SEDATED®. أما الأسطر التي تتم إزالتها (التي تبدأ بـ - في ملف التصحيح) في عمليات دفع الالتزامات، لا يفحصها SEDATED®.
git clone https://github.com/OWASP/SEDATED.git
cd SEDATED/
cp /config/whitelists/commit_whitelist.txt.example /config/whitelists/commit_whitelist.txt
cp /config/whitelists/repo_whitelist.txt.example /config/whitelists/repo_whitelist.txt
cp /config/enforced_repos_list.txt.example /config/enforced_repos_list.txt
ادفع التنفيذ الخاص بمؤسستك من SEDATED® إلى مستودع Git الذي تريده المؤسسة (GitHub أو GitLab أو Git أو غير ذلك...).
يمكن العثور على إرشادات تنفيذ ذلك على مثيل GitHub Enterprise في GitHub_Enterprise_Setup.md.
always_reject.sh بنص pre-receive.sh البرمجي الخاص بـ SEDATED®.pre-receive.sh البرمجي.pre-receive.sh، يتيح للمؤسسات تخصيص تنفيذها لـ SEDATED® دون الحاجة إلى تعديل أي من الكود المصدري داخل ملف pre-receive.sh الخاص بـ SEDATED®، وذلك من خلال توفير متغيرات ودوال مخصصة مدمجة يتم استيرادها من pre-receive.sh.use_enforced_repo_check_custom الخاصة بـ SEDATED® (خطاف pre-receive) في config/custom_configs.sh مضبوطة على "True"./* بنهاية المؤسسة أو اسم المستخدم المطلوب فرض التطبيق عليه./config/enforced_repos_list.txt، فسيرى المستخدم الذي يقوم بالدفع (إذا كان يدفع من سطر الأوامر) رسالة قابلة للتخصيص (يمكن تخصيصها عبر ملف /config/custom_configs.sh) ولن يفحص SEDATED® أيًا من التعليمات البرمجية المضمنة في الدفع./config/custom_configs.sh وضبطها على "True" أو "False".
/config/enforced_repos_list.txt سيكون SEDATED® "مفروضًا" عليها. أما جميع المستودعات الأخرى التي لديها SEDATED® "مفعلاً" ولكنها غير مدرجة في ملف /config/enforced_repos_list.txt فستشاهد رسالة مخصصة معروضة فقط، ولن يتم فحص أي تعليمات برمجية لعمليات الدفع من تلك المستودعات.use_enforced_repo_check_custom في config/custom_configs.sh مضبوطة على "True".pre-receive.sh) مع علامة -P مما يجعلها تعبيرات نمطية متوافقة مع Perl (PCREs)./testing/regex_testing/regex_test_script.sh البرمجي، فسيلزم تحديث ملف /testing/regex_testing/test_cases.txt بإضافة أو إزالة حالات الاختبار المتعلقة بالتعبيرات النمطية المحدثة حتى تكون النتائج من /testing/regex_testing/regex_test_script.sh دقيقة.\ اعتمادًا على التعبيرات النمطية المطلوبة، لأن هذا الملف بتنسيق JSON./config/whitelists/commit_whitelist.txt.example.commit_whitelist.txt) عندما يواجهون نتائج إيجابية كاذبة حتى يمكن مراجعتها./config/whitelists/repo_whitelist.txt.example.testing/regex_testing/test_cases.txt، هو طريقة بسيطة وسريعة وبدون اتصال لاختبار/التحقق من أن التعبيرات النمطية داخل config/regexes.json صالحة وتطابق الأنماط المطلوبة، بالإضافة إلى استبعاد/عدم مطابقة ما هو مطلوب.
/testing/regex_testing/test_cases.txt) للتحقق من أن التعبيرات النمطية تعمل كما هو متوقع./testing/regex_testing/test_cases.txt).-P)./testing/regex_testing/test_cases.txt./testing/regex_testing/regex_test_script.sh لاستهلاكها.>>pass أو >>fail، وهذان يُعلمان نص /testing/regex_testing/regex_test_script.sh البرمجي بالتوقع المنشود من التعبيرات النمطية.
>>pass تعني أن دفعًا يحتوي على السلسلة السابقة سيتم قبوله بواسطة SEDATED® (أي أن التعبيرات النمطية لن تُحدد السلسلة السابقة).>>fail تعني أن دفعًا يحتوي على السلسلة السابقة سيتم رفضه بواسطة SEDATED® (أي أن التعبيرات النمطية ستُحدد السلسلة السابقة).صُممت المتغيرات والدوال المخصصة للسماح للمؤسسات بتخصيص تنفيذها الخاص لـ SEDATED® بسهولة دون تغيير ملف خطاف pre-receive الرئيسي الذي يقوم بكل العمل الشاق. يمكن العثور على جميع المتغيرات والدوال المخصصة في /config/custom_configs.sh، وفيما يلي شروح المتغيرات الواردة في هذا الملف.
show_SEDATED_link_custom - "True" لعرض رابط مستودع OWASP/SEDATED على GitHub (حساس لحالة الأحرف)، وإلا فاضبطه على "False".documentation_link_custom - أضف رابطًا إلى الوثائق الخاصة بالمؤسسة حول كيفية رغبة المؤسسة في تعامل المطورين مع عمليات الدفع المرفوضة و/أو المعلومات العامة الخاصة بالمؤسسة فيما يتعلق بـ SEDATED®.
use_enforced_repo_check_custom - "True" أو "False" (حساس لحالة الأحرف).
/config/enforced_repos_list.txt لمزيد من التفاصيل حول معنى هذه العلامة.enforced_repo_check_true_message_custom مع رسالة مخصصة (ضروري فقط إذا كانت use_enforced_repo_check_custom مضبوطة على "True").obfuscate_output_custom - "True" أو "False" (حساس لحالة الأحرف). استخدم هذا الخيار لإخفاء البيانات الحساسة المعروضة في مخرجات SEDATED®.SET_USER_REPO_NAME_CUSTOM
PRINT_ERROR_MESSAGE_CUSTOM
EXIT_SEDATED_CUSTOM
: "عدم القيام بأي شيء" كإجراء إضافي، وليس من الضروري تغييره.UNABLE_TO_ACCESS_REPO_WHITELIST_CUSTOM
: "عدم القيام بأي شيء" كإجراء إضافي، وليس من الضروري تغييره.PUSH_ACCEPTED_CUSTOM
: "عدم القيام بأي شيء" كإجراء إضافي، وليس من الضروري تغييره.UNABLE_TO_ACCESS_REGEXES_CUSTOM
: "عدم القيام بأي شيء" كإجراء إضافي، وليس من الضروري تغييره.exit 1 ويطبع رسالة خطأ إذا تعذر الوصول إلى التعبيرات النمطية، ومع ذلك يمكن تنفيذ إجراء مخصص إضافي في هذه الحالات إذا رغبت (مثل طباعة رسالة خطأ إضافية، التسجيل، إرسال مقياس، وما إلى ذلك...).PUSH_REJECTED_WITH_VIOLATIONS_CUSTOM
: "عدم القيام بأي شيء" كإجراء إضافي، وليس من الضروري تغييره.UNABLE_TO_ACCESS_COMMIT_WHITELIST_CUSTOM
: "عدم القيام بأي شيء" كإجراء إضافي، وليس من الضروري تغييره.متوافق فقط مع أدوات إدارة المصدر (SCM) التي تستخدم نظام التحكم في الإصدارات Git.
SET_USER_REPO_NAME_CUSTOM مطلوبة لضبط المستخدم/المؤسسة واسم المستودع..git/hooks/ (باستثناء مجلد/ملفات الوثائق)..sample من pre-receive.sample وانسخ الكود من ملف pre-receive.sh الخاص بـ SEDATED® إلى ملف pre-receive الذي أنشأناه للتو من ملف .sample.SET_USER_REPO_NAME_CUSTOM مطلوبة لضبط المستخدم/المؤسسة واسم المستودع.يمكنك المساهمة بإحدى الطريقتين التاليتين:
SEDATED® مرخّص بموجب BSD 3-Clause "New" or "Revised" License.
**SEDATED® غير مضمون لتحديد كل حالة من حالات بيانات الاعتماد أو المفاتيح أو الأسرار المُرمَّزة، وما إلى ذلك... فهو يستخدم مطابقة الأنماط بالتعبيرات النمطية، ومع أنه أصبح جيدًا جدًا في التقاط معظم الحالات، إلا أنه ليس مثاليًا، لكننا دائمًا منفتحون على الأفكار و/أو طلبات السحب للمساعدة في جعل SEDATED® أفضل.