Skip to content

Commit 8ed073a

Browse files
committed
translated security article
1 parent 964be55 commit 8ed073a

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

_articles/ar/security-best-practices-for-your-project.md

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@
22
lang: ar
33
untranslated: true
44
title: أفضل ممارسات الأمان لمشروعك
5-
description: عزز مستقبل مشروعك من خلال بناء الثقة من خلال الممارسات الأمان الأساسية — من MFA و مسح الكود الى الادارة الأمنة للتبعيات وإعداد تقارير الثغرات الأمنية الخاصة.
5+
description: عزز مستقبل مشروعك من خلال بناء الثقة من خلال الممارسات الأمان الأساسية — من MFA و مسح الكود الى الادارة الأمنة للتبعيات وإعداد تقارير الثغرات الأمنية الخاصة
66
class: security-best-practices
77
order: -1
88
image: /assets/images/cards/security-best-practices.png
99
---
1010

1111
<div dir="rtl" markdown="1">
12+
1213
بغض النظر عن الأخطاء والميزات الجديدة، فإن طول عمر المشروع لا يتوقف فقط على فائدته ولكن أيضًا على الثقة التي يكتسبها من مستخدميه.من الضروري جدا اتخاذ تدابير أمنية قوية للحفاظ على هذه الثقة حية. فيما يلي بعض الإجراءات المهمة التي يمكنك اتخاذها لتحسين أمان مشروعك بشكل كبير.
1314

1415
## تأكد من أن جميع المساهمين أصحاب الامتيازات قد قاموا بتمكين المصادقة متعددة العوامل (MFA)
1516

16-
### .ممثل خبيث يتمكن من انتحال شخصية مساهم ذو امتيازات في مشروعك، سوف يتسبب في أضرار كارثية>>
17+
### ممثل خبيث يتمكن من انتحال شخصية مساهم ذو امتيازات في مشروعك، سوف يتسبب في أضرار كارثية.
1718

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

20-
MFA توفر طبقة اضافية من الأمان ضد سؤقة الحساب. عندما تفعل يجب أن تسجل الدخول باسم مستخدمك وكلمة المرور بالاضافة الى شكل أخر من المصادقة أنت فقط تعرفه أو تستطيع الوصول اليه.
21+
MFA توفر طبقة اضافية من الأمان ضد سؤقة الحساب. عندما تفعل يجب أن تسجل الدخول باسم مستخدمك وكلمة المرور بالاضافة الى شكل أخر من المصادقة أنت فقط تعرفه أو تستطيع الوصول إليه.
2122

2223
## قم بتأمين الكود الخاص بك كجزء من سير عمل التطوير الخاص بك
2324

@@ -33,48 +34,43 @@ MFA توفر طبقة اضافية من الأمان ضد سؤقة الحساب.
3334

3435
* اختر واحدا يتكامل بسهولة مع الأدوات التي تستخدمها بالفعل, ومع عمليتك الحالية. على سبيل المثال , من ألأفضل أن تكون التنبيهات متاحة كجزء من عملية وأداة مراحعة كودك الحالي بدلا من الانتقال الى أداة أحرى لرؤيتها.
3536
* احذر من الإيجابيات الكاذبة! أنت لا تريد أن تبطئك الأداة دون سبب!
36-
* تحقق من الميزات: بعض الأدوات قوية جدًا ويمكنها أن تتبع التلوث (taint tracking).
37-
* مثل : Github Codeql ,بعضها يقترح اصلاحات مقترحة من الAi,بعضها يجعل كتابة استعلامات مخصصة (custom queries) مثل : SemGrep.
37+
* تحقّق من المزايا: بعض الأدوات قوية جدًا ويمكنها تنفيذ taint tracking (مثل GitHub CodeQL)، وبعضها يقترح AI-generated fix suggestions، وأخرى تسهّل كتابة custom queries (مثل SemGrep).
3838

3939
## لا تشارك أسرارك
4040

41-
### بيانات حساسة مثل API keys,tokens, passwords قد تذهب بالخطأ في بعض الأحيان الى Github repository.
41+
### بيانات حساسة مثل API keys,tokens, passwords قد تذهب بالخطأ في بعض الأحيان إلى Github repository.
4242

43-
تخيل هذا السيناريو : أنت المسؤول عن مشروع مفتوح المصدر مشهور مع مساهمين مطورين من جميع أنحاء العالم .
44-
في يوم ما, يضع مساهم بدون معرفة مفاتيح الApi لخدمة من خارج المشروع(third party service) في Github repository.بعد بضعة أيام شخص يجد هذه المفاتيح ويستخدمها للوصول للخدمة بدون اذن. يتم اختراق الخدمة، ويواجه مساهمو مشروعك فترة توقف، وتتضرر سمعة مشروعك.بصفتك المسؤول عن المشروع أنت الأن أمام مهام مرهقة لاسترجاع المفاتيح المخترقة,التحقق من الأفعال السيئة والضارة الذي قد يكون ارتكبها هذا المهاجم بهذه المفاتيح, تنبيه المستخدمين المتأثرين والقيام ببعض الاصلاحات.
43+
تخيّل هذا السيناريو: أنت الـ maintainer لمشروع مفتوح المصدر مشهور يشارك فيه مطورون من جميع أنحاء العالم، وفي أحد الأيام يقوم مساهم عن غير قصد بعمل commit يحتوي على بعض مفاتيح الـ API الخاصة بخدمة خارجية، وبعد أيام يجد أحدهم هذه المفاتيح ويستخدمها للوصول إلى الخدمة دون إذن، فتتعرض الخدمة للاختراق، ويواجه مستخدمو مشروعك فترة توقف، وتتضرر سمعة مشروعك، والآن بصفتك الـ maintainer عليك التعامل مع مهام مرهقة مثل إلغاء المفاتيح المخترقة، والتحقيق في الأفعال الضارة التي قد نفذها المهاجم باستخدامها، وإبلاغ المستخدمين المتأثرين، وتنفيذ الإصلاحات اللازمة.
4544

46-
لمنع حوادث كهذه,حلول "secret scanning" موجودة لتساعد للكشف المبكر لأسرار كهذه في كودك. بعض الأدات ك Github Secret Scanning و Trufflehog تتستطيع أن تمنعك من وضع هذه الأشياء على remote branches في المقام الأول, وبعض الأدوات ستزيل هذه الأسرار بشكل تلقائي لك.
45+
لمنع حوادث كهذه، حلول "secret scanning" موجودة لتساعد للكشف المبكر لأسرار كهذه في كودك. بعض الأدات ك Github Secret Scanning و Trufflehog تتستطيع أن تمنعك من وضع هذه الأشياء على remote branches في المقام الأول, وبعض الأدوات ستزيل هذه الأسرار بشكل تلقائي لك.
4746

48-
## تحقق وحدث الDependencies
47+
## تحقّق من التبعيات الخاصة بك وقم بتحديثها
4948

5049
### Dependencies في مشروعك ممكن أن تحتوي على ثغرات قد تخترقه. القيام بتحديث الDependencies يدويا باليد ستكون مهمة مستهلكة للوقت.
5150

5251
تخيل هذا: مشروع مبني على أساس قوي لمكتبة مستخدمة على نطاق واسع , لاحقا المكتبة تواجه مشكلة أمنية كبيرة.لكن الناس الذين بنوا المشروع باستخدامها لا يعرفون عن هذه المشكلة. تُترك بيانات المستخدم الحساسة مكشوفة عندما يستغل المهاجم هذا الضعف، فينقض عليها للاستيلاء عليها. هذا ليس مثالا نظريا انما ما حدث تماما في في 2017.لقد فشلوا في تحديث Apache Struts dependeny الخاص بهم بعد اشعارهم عن وجود ثغرة في الخادم.لقد تم استغلال هذه الثغرة، وأثرت عملية الاختراق الشهيرة لشركة Equifax على بيانات 144 مليون مستخدم.
5352

5453
لمنع سيناريوهات كهذه, أدوات تحليل تكوين البرمجيات (SCA) مثل Dependabot,Renvate تتحقق بشكل تلقائي من Dependencies الخاصة بك لأكثر الثغرات انتشارا في قواعد البيانات العامة مثل NVD,the Github Advisory Database ثم تنشأ pull requests لتحديثهم لأخر نسخ. مواكبة أخر التحديثات لل Dependencies الخاصة بمشروعك تحميه وتمنعه من المخاطر المحتملة.
5554

56-
## تجنب تغيرات غير مرغوبة باستخدام protected branches
55+
## تجنّب التغيّرات غير المرغوبة باستخدام الفروع المحمية
5756

58-
### يمكن أن يؤدي الوصول الغير المقيد لmain branch الى تغييرات عرضية التي قد تنتج ثغرات أمنية وتعطل استقرار مشروعك
57+
### يمكن أن يؤدي الوصول غير المقيد لmain branch إلى تغييرات عرضية التي قد تنتج ثغرات أمنية وتعطل استقرار مشروعك
5958

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

6261
## إنشاء آلية استقبال للإبلاغ عن نقاط الضعف
6362

6463
### من الجيد أن تتيح لمستخدميك الإبلاغ عن الأخطاء بسهولة، لكن السؤال الأهم هو: عندما يكون لهذا الخطأ تأثير أمني، كيف يمكنهم الإبلاغ عنه بأمان دون أن يجعلوك هدفًا محتملاً للمتسللين الخبيثين؟
6564

66-
67-
تخيّل هذا الموقف: باحث أمني يكتشف ثغرة في مشروعك، لكنه لا يجد طريقة واضحة أو آمنة للإبلاغ عنها. في غياب عملية مخصصة لذلك، قد يقوم بإنشاء issue أو مناقشة الأمر علنًا على وسائل التواصل الاجتماعي. حتى لو كانت نواياه حسنة وقدّم إصلاحًا للمشكلة، فإن قيامه بذلك من خلال عمل pull request سيجعل الآخرين يرون الثغرة قبل أن يتم دمج الإصلاح!
68-
هذا الكشف العلني سيعرّض الثغرة للمهاجمين قبل أن تتاح لك فرصة معالجتها، مما قد يؤدي إلى استغلال من نوع "صفر يوم" (zero-day exploit) يستهدف مشروعك ومستخدميه.
65+
تخيّل هذا: يكتشف باحث أمني ثغرة في مشروعك لكنه لا يجد طريقة واضحة أو آمنة للإبلاغ عنها، وبدون وجود عملية محددة، قد ينشئ issue عام أو يناقشها علنًا على وسائل التواصل الاجتماعي. حتى لو كانت نيته حسنة وقدّم إصلاحًا، إذا فعل ذلك من خلال public pull request، سيراه الآخرون قبل دمجه! هذا الكشف العلني سيعرّض الثغرة للمهاجمين قبل أن تتمكن من معالجتها، مما قد يؤدي إلى zero-day exploit يهاجم مشروعك ومستخدميه.
6966

7067
### سياسة الأمان
7168

7269
لتجنب ذلك، قم بنشر سياسة أمان. تُعرّف سياسة الأمان في ملف `SECURITY.md`، وتوضح الخطوات اللازمة للإبلاغ عن المخاوف الأمنية، وتُنشئ عملية واضحة للكشف المنظم، وتحدد مسؤوليات فريق المشروع في معالجة القضايا المُبلّغ عنها. يمكن أن تكون سياسة الأمان بسيطة مثل: "يرجى عدم نشر التفاصيل في issue أو public pull request، أرسلوا لنا بريدًا إلكترونيًا خاصًا على[email protected]"، لكنها يمكن أن تتضمن أيضًا تفاصيل أخرى مثل متى يمكنهم توقع الحصول على رد منكم. أي شيء يمكن أن يُسهم في تعزيز فعالية وكفاءة عملية الكشف.
7370

74-
### الإبلاغ الخاص عن الثغرات الأمنية
71+
### الإبلاغ عن الثغرات بشكل خاص
7572

76-
في بعض المنصّات، يمكنك تبسيط وتعزيز عملية إدارة الثغرات الأمنية لديك من مرحلة الاستقبال إلى مرحلة النشر باستخدام القضايا الخاصة.في GitLab، يمكن القيام بذلك عبر Private Issues. أما فيGitHub، فيُطلق على ذلك اسم الإبلاغ الخاص عن الثغرات الأمنية Private Vulnerability Reporting PVR.تُتيح ميزة PVR للمسؤولين عن المشاريع استقبال تقارير الثغرات ومعالجتها بالكامل ضمن منصة GitHub.يقوم GitHub تلقائيًا بإنشاء نسخة خاصة(Private Fork) لكتابة الإصلاحات، بالإضافة إلى إصدار مسودة إشعار أمني (Security Advisory Draft).تبقى جميع هذه الإجراءات سرّية بالكامل حتى تقرر أنت الإفصاح عن المشكلة وإصدار الإصلاحات.
77-
وفي المرحلة الأخيرة، يتم نشر الإشعارات الأمنية (Security Advisories) لإبلاغ المستخدمين وحمايتهم من خلال أداة تحليل مكونات البرمجيات (SCA Tool).
73+
على بعض المنصات، يمكنك تبسيط وتعزيز عملية إدارة الثغرات الأمنية لديك، من الاستلام إلى النشر، باستخدام private issues. على GitLab يمكن فعل ذلك باستخدام private issues، أما على GitHub فهذه العملية تُسمى private vulnerability reporting (PVR). تتيح PVR للـ maintainers استقبال ومعالجة تقارير الثغرات كلها ضمن منصة GitHub، حيث يقوم GitHub تلقائيًا بإنشاء private fork لكتابة الإصلاحات، وdraft security advisory. كل هذا يبقى سريًا حتى تقرر الكشف عن الثغرات وإصدار الإصلاحات. لإغلاق الحلقة، سيتم نشر security advisories لإبلاغ وحماية جميع مستخدميك عبر أداة SCA الخاصة بهم.
7874

7975
## الخلاصة: خطوات قليلة منك، لكنها تُحدث فرقًا كبيرًا لمستخدميك.
8076

@@ -87,5 +83,6 @@ MFA توفر طبقة اضافية من الأمان ضد سؤقة الحساب.
8783
تم كتابة هذا الدليل بواسطة [@nanzggits](https://github.com/nanzggits) & [@xcorail](https://github.com/xcorail) بمشاركة مساهمي من:
8884

8985
[@JLLeitschuh](https://github.com/JLLeitschuh)
90-
[@intrigus-lgtm](https://github.com/intrigus-lgtm) + أخرون .
86+
[@intrigus-lgtm](https://github.com/intrigus-lgtm) + آخرون
87+
9188
</div>

0 commit comments

Comments
 (0)