موقف من الحياة اليومية#
بتعمل حساب على موقع، وتكتب بياناتك، وتشتري حاجة بالكارت.
وبعد كام شهر بتسمع في الأخبار إن الموقع ده اتسرّبت بياناته.
طب الاختراق ده بيحصل إزاي؟
في الأغلب مش سحر ولا عبقرية: هو غلطة معروفة المبرمجين وقعوا فيها.
والغلطات دي متكررة لدرجة إن فيه قائمة بأشهرها، وكل مبرمج ويب المفروض يعرفها.
خلاصة سريعة#
- OWASP (Open Worldwide Application Security Project) · مشروع أمان التطبيقات المفتوحمؤسسة غير ربحية تنشر أدلة وأدوات مفتوحة لتحسين أمان البرمجيات، وأشهر وثائقها OWASP Top 10.عرض في القاموس مؤسسة غير ربحية بتنشر أدلة وأدوات مفتوحة لأمان البرمجيات، وأشهر وثائقها OWASP Top 10 · قائمة أهم عشرة مخاطر لتطبيقات الويبوثيقة توعية للمبرمجين تجمع أخطر عشرة مخاطر أمنية في تطبيقات الويب، وتصدرها OWASP كل بضع سنوات، وأحدث نسخها نسخة 2025.عرض في القاموس: أخطر 10 مخاطر في تطبيقات الويب.
- أحدث نسخة هي 2025، وأول فئة فيها Broken Access Control (مستخدم يوصل لحاجة مش من حقه).
- القائمة دي وثيقة توعية بتقول للمبرمجين «خلّوا بالكم من دول»، ومش قائمة بكل المشاكل الممكنة.
ببساطة#
فكّر في قائمة أشهر أسباب حوادث العربيات: السرعة، والموبايل وانت سايق، والفرامل البايظة… القائمة دي ما بتعلّمش حد إزاي يعمل حادثة، هي بتقول للسواقين يركزوا في إيه علشان ما يحصلش.
والـ OWASP Top 10 نفس الفكرة، بس للمبرمجين: أشهر الغلطات اللي بتسبب اختراق المواقع، علشان يتجنبوها من الأول.
بالتفصيل#
إيه هي OWASP؟#
OWASP (اختصار Open Worldwide Application Security Project) مؤسسة غير ربحية، بتنشر أدلة وأدوات مجانية ومفتوحة علشان البرمجيات تبقى أأمن.
وأشهر حاجة عملتها OWASP Top 10، وهي وثيقة توعية للمبرمجين، فيها اتفاق واسع على أخطر المخاطر في تطبيقات الويب.
والقائمة دي بتتحدّث كل كام سنة على حسب بيانات من تطبيقات اتفحصت فعلًا، ومعاها استطلاع رأي للمتخصصين.
وكل فئة في القائمة مش ثغرة واحدة، دي مجموعة نقاط ضعف شبه بعض.
ولو محتاج تراجع يعني إيه Vulnerability · الثغرةنقطة ضعف في نظام معلومات أو إجراءاته الأمنية أو ضوابطه الداخلية أو طريقة تنفيذه، يمكن أن يستغلها مصدر تهديد.عرض في القاموس (ثغرة)، شوف مقال ما هي الثغرة؟.
الفئات العشرة (نسخة 2025)#
A01: Broken Access Control (خلل التحكم في الوصول)
المستخدم يقدر يعمل حاجة خارج صلاحياته: يشوف بيانات مستخدم تاني، أو يعدّلها، أو يدخل على صفحات المديرين.
بتتمنع إزاي: فحص الصلاحية يتعمل على السيرفر دايمًا (مش في المتصفح اللي المستخدم يقدر يتحكم فيه)، وطبّق Deny by Default (امنع افتراضيًا) على أي حاجة مش عامة، وزي ما شرحنا في مقال الـ Firewall.
A02: Security Misconfiguration (الإعدادات الأمنية الخاطئة)
النظام أو التطبيق أو الخدمة السحابية متظبطين غلط: إعدادات افتراضية ما اتغيرتش، أو صلاحيات واسعة على الفاضي، أو مزايا شغالة ومحدش محتاجها.
بتتمنع إزاي: خطوات Hardening (تقوية) ثابتة بتتكرر في كل بيئة، وأحسن تبقى آلية، وشيل أي ميزة أو مكوّن مش محتاجه، وما تخليش رسايل الخطأ تكشف تفاصيل داخلية للمستخدم.
A03: Software Supply Chain Failures (إخفاقات سلسلة توريد البرمجيات)
البرنامج بيعتمد على مكتبات وأدوات من برّا، ولو واحدة منهم فيها ثغرة أو اتعدلت بشكل خبيث، المشكلة بتوصل للبرنامج كله.
بتتمنع إزاي: احتفظ بقائمة بكل مكونات البرنامج وإصداراتها (SBOM (Software Bill of Materials) · قائمة مكونات البرنامجقائمة بكل المكتبات والمكونات التي يتكون منها البرنامج وإصداراتها، تساعد على معرفة المتأثر عند ظهور ثغرة في أحدها.عرض في القاموس)، وتابع المكونات اللي معتمد عليها والمكونات اللي هم معتمدين عليها، وشيل اللي مش مستخدم، وحدّث باستمرار.
A04: Cryptographic Failures (إخفاقات التشفير)
بيانات حساسة مش متشفّرة أو متشفّرة بطريقة ضعيفة، فبتتكشف.
بتتمنع إزاي: حدد البيانات الحساسة الأول، وشفّر البيانات وهي بتتنقل، واستخدم خوارزميات معروفة وموثوقة بدل ما تعمل تشفيرك بنفسك.
وشوف مقال ما هو التشفير؟.
A05: Injection (الحقن)
التطبيق بياخد كلام كتبه المستخدم ويبعته لحاجة بتنفّذ أوامر (زي قاعدة البيانات أو المتصفح)، فجزء من الكلام ده بيتنفّذ كأنه أمر.
ومن أشهر أنواعه SQL Injection، وكمان XSS (Cross-site Scripting) اللي بقى جزء من الفئة دي.
بتتمنع إزاي: القاعدة الأساسية: افصل البيانات عن الأوامر.
استخدم طرق برمجة بتمرر البيانات كبيانات بس (زي الاستعلامات اللي بتاخد البيانات كـ Parameters).
وكمان اعمل Input Validation (فحص المدخلات) على السيرفر، بس ده لوحده مش دفاع كامل.
A06: Insecure Design (التصميم غير الآمن)
المشكلة في التصميم نفسه: ضوابط الأمان ناقصة أو ضعيفة من الأول، حتى لو الكود اتكتب من غير غلط.
وده مختلف عن الغلط في كتابة الكود.
بتتمنع إزاي: خلّي الأمان جزء من دورة تطوير البرمجيات من أولها، واستخدم Threat Modeling (نمذجة التهديدات) للأجزاء الحساسة زي تسجيل الدخول والصلاحيات.
A07: Authentication Failures (إخفاقات المصادقة)
النظام بيصدّق إن حد هو اللي بيقول إنه هو، وهو مش هو.
مثلًا بيسمح بمحاولات تخمين آلية كتير، أو بكلمات سر ضعيفة.
بتتمنع إزاي: MFA (Multifactor Authentication) · المصادقة متعددة العواملالتحقق من الهوية باستخدام أكثر من عامل من أنواع مختلفة، مثل شيء تعرفه (كلمة المرور)، وشيء تملكه (الهاتف أو مفتاح الأمان)، وشيء فيك (البصمة).عرض في القاموس (المصادقة متعددة العوامل)، وتشجيع استخدام مديري كلمات السر، وما فيش أي كلمات سر افتراضية خصوصًا لحسابات المديرين.
ولو محتاج تراجع Authentication · المصادقةالتحقق من هوية المستخدم أو البرنامج أو الجهاز، وتكون غالبًا شرطًا قبل السماح له بالوصول إلى موارد النظام.عرض في القاموس (المصادقة)، شوف مقال التعريف والمصادقة والتفويض والمحاسبة.
A08: Software or Data Integrity Failures (إخفاقات سلامة البرمجيات والبيانات)
التطبيق بيثق في كود أو بيانات من غير ما يتأكد إنها سليمة ومن المصدر الصح، زي إضافات أو مكتبات من مصادر مش موثوقة.
بتتمنع إزاي: استخدم Digital Signatures (التوقيع الرقمي) أو طرق شبهها علشان تتأكد إن البرنامج أو البيانات جاية من المصدر المتوقع وما اتعدلتش، وخلّي المكتبات تيجي من مستودعات موثوقة بس.
A09: Security Logging & Alerting Failures (إخفاقات السجلات والتنبيهات)
مفيش سجلات كفاية أو مفيش تنبيهات، فالاختراق بيحصل ومحدش بياخد باله.
ومن غير تنبيه، حتى السجلات الكويسة ما بتفيدش كتير.
بتتمنع إزاي: سجّل محاولات الدخول الفاشلة ومشاكل الصلاحيات، ومعاها معلومات كفاية تعرف منها مين عمل إيه، واحتفظ بيها مدة كفاية، وخلّي فيه تنبيهات على الحاجات المريبة.
A10: Mishandling of Exceptional Conditions (التعامل الخاطئ مع الحالات الاستثنائية)
البرنامج ما بيستعدّش للحاجات الغريبة اللي ممكن تحصل (زي خطأ مفاجئ أو مدخلات مش متوقعة)، فبيقع، أو بيتصرف بشكل غريب، أو يحصل Fail open (يفشل وهو مفتوح).
بتتمنع إزاي: توقّع الأسوأ: امسك كل خطأ في مكانه، واتعامل معاه بشكل يرجّع النظام لحالة آمنة، وخلّي التعامل مع الأخطاء وتسجيلها في مكان واحد في التطبيق، وافحص المدخلات بدقة.
إيه اللي اتغير من نسخة 2021؟#
- فئتين جداد: Software Supply Chain Failures (توسيع لفئة المكونات القديمة والمعرّضة للخطر في 2021)، وMishandling of Exceptional Conditions.
- Server-Side Request Forgery (SSRF) كانت فئة لوحدها في 2021، وبقت جزء من A01 (Broken Access Control).
- Security Misconfiguration طلعت من المركز 5 للمركز 2، لأنها بقت أكتر انتشارًا في البيانات.
- Cryptographic Failures وInjection وInsecure Design نزلوا مركزين.
للمتعمقين
القائمة بتتعمل إزاي؟
نسخة 2025 هي النسخة التامنة من القائمة.
وOWASP بيقول إنها «مبنية على البيانات، بس مش منقادة ليها بشكل أعمى»: بيرتبوا 12 فئة على حسب البيانات اللي اتجمعت من تطبيقات اتفحصت، وبيسيبوا مكانين لفئات بيرشحها استطلاع رأي المتخصصين، لأن فيه مشاكل صعب تتكشف بالاختبارات الآلية.
أرقام من البيانات
- A01 Broken Access Control: في المتوسط 3.73% من التطبيقات اللي اتفحصت كان فيها واحدة على الأقل من نقاط الضعف التابعة للفئة دي، وهي 40 نقطة ضعف (CWE).
- A03 Software Supply Chain Failures: أقل فئة ظهورًا في البيانات، بس عندها أعلى متوسط لدرجات الاستغلال والتأثير في الـ CVEs.
CWE
كل فئة في القائمة عبارة عن مجموعة CWE (Common Weakness Enumeration)، وده كتالوج لأنواع نقاط الضعف في البرمجيات.
والفرق بينه وبين CVE: الـ CWE نوع الضعف، والـ CVE ثغرة معينة في برنامج معين.
أخطاء شائعة#
- «الـ OWASP Top 10 هي كل المشاكل الأمنية»: لأ.
دي وثيقة توعية بأخطر المخاطر، مش قائمة كاملة.
والتطبيق ممكن يبقى فيه مشاكل تانية. - «لو التطبيق ما فيهوش أي حاجة من العشرة، يبقى آمن تمامًا»: مش شرط.
القائمة بداية كويسة، مش شهادة أمان. - «فحص الصلاحيات في المتصفح كفاية»: لأ.
المستخدم يقدر يتحكم في اللي بيحصل في متصفحه، فالفحص الحقيقي لازم يبقى على السيرفر. - «المكتبات المشهورة آمنة ومش محتاجة متابعة»: لأ.
أي مكتبة ممكن تظهر فيها ثغرة، وده سبب وجود A03.
المصطلحات#
- مشروع أمان التطبيقات المفتوح (OWASP (Open Worldwide Application Security Project) · مشروع أمان التطبيقات المفتوحمؤسسة غير ربحية تنشر أدلة وأدوات مفتوحة لتحسين أمان البرمجيات، وأشهر وثائقها OWASP Top 10.عرض في القاموس): مؤسسة غير ربحية تنشر أدلة وأدوات مفتوحة لأمان البرمجيات.
- قائمة أهم عشرة مخاطر (OWASP Top 10 · قائمة أهم عشرة مخاطر لتطبيقات الويبوثيقة توعية للمبرمجين تجمع أخطر عشرة مخاطر أمنية في تطبيقات الويب، وتصدرها OWASP كل بضع سنوات، وأحدث نسخها نسخة 2025.عرض في القاموس): وثيقة توعية بأخطر مخاطر تطبيقات الويب.
- خلل التحكم في الوصول (Broken Access Control · خلل التحكم في الوصولخلل يسمح للمستخدم بأن يتصرف خارج صلاحياته، مثل الاطلاع على بيانات غيره أو تعديلها.عرض في القاموس): تصرّف المستخدم خارج صلاحياته.
- الإعدادات الأمنية الخاطئة (Security Misconfiguration · الإعدادات الأمنية الخاطئةضبط نظام أو تطبيق أو خدمة سحابية بطريقة غير آمنة، مثل ترك الإعدادات الافتراضية أو صلاحيات واسعة بلا داعٍ.عرض في القاموس): ضبط غير آمن للنظام أو التطبيق.
- إخفاقات سلسلة التوريد (Software Supply Chain Failures · إخفاقات سلسلة توريد البرمجياتثغرات أو تعديلات خبيثة في المكتبات والأدوات والمكونات الخارجية التي يعتمد عليها البرنامج أثناء بنائه أو توزيعه أو تحديثه.عرض في القاموس): مشكلات في المكونات الخارجية التي يعتمد عليها البرنامج.
- الحقن (Injection · الحقنخلل يجعل التطبيق يمرر مدخلات المستخدم غير الموثوقة إلى مُفسِّر (مثل قاعدة البيانات أو المتصفح) فينفذ جزءًا منها كأوامر.عرض في القاموس): تنفيذ جزء من مدخلات المستخدم كأوامر.
- التصميم غير الآمن (Insecure Design · التصميم غير الآمنضعف في تصميم التطبيق نفسه بسبب غياب ضوابط الأمان أو ضعفها، ويختلف عن الخطأ في كتابة الكود.عرض في القاموس): ضعف في التصميم نفسه.
- قائمة مكونات البرنامج (SBOM (Software Bill of Materials) · قائمة مكونات البرنامجقائمة بكل المكتبات والمكونات التي يتكون منها البرنامج وإصداراتها، تساعد على معرفة المتأثر عند ظهور ثغرة في أحدها.عرض في القاموس): قائمة بمكونات البرنامج وإصداراتها.
اختبر نفسك#
مستخدم غيّر رقم في رابط الصفحة، فشاف فاتورة مستخدم تاني. ده من أنهي فئة؟
إظهار الإجابة
A01: Broken Access Control، لأنه وصل لبيانات مش من صلاحياته.
والحل إن السيرفر يتأكد في كل طلب إن البيانات دي تخص المستخدم ده.
سيرفر لسه شغال بكلمة سر المدير الافتراضية اللي جه بيها. ده من أنهي فئة؟
إظهار الإجابة
A02: Security Misconfiguration (إعدادات غلط).
وكلمات السر الافتراضية كمان مذكورة في A07 كحاجة لازم ما تبقاش موجودة.
إيه القاعدة الأساسية لمنع الـ Injection؟
إظهار الإجابة
افصل البيانات عن الأوامر: استخدم طرق برمجة بتمرر مدخلات المستخدم كبيانات بس، فمهما المستخدم كتب، عمره ما يتنفّذ كأمر.