أساسيات الأمن وOWASP

OWASP Top 10 2025: A01-A05

5 دقيقة للقراءة

يعكس OWASP Top 10 2025 مشهد التهديدات الحالي مع تغييرات كبيرة بما في ذلك تركيز جديد على أمان سلسلة التوريد. دعنا نفحص أهم 5 ثغرات ستُختبر فيها.

A01:2025 - التحكم في الوصول المعطل

الترتيب: #1 (الأكثر حرجاً)

الثغرة الأكثر انتشاراً في تطبيقات الويب. تحدث عندما يمكن للمستخدمين التصرف خارج الأذونات المقصودة.

الأنماط الشائعة

النمط الوصف مثال
IDOR مرجع كائن مباشر غير آمن /api/user/123 متاح بدون تفويض
تصعيد الصلاحيات المستخدم يحصل على وظائف المسؤول تغيير الدور في حقل نموذج مخفي
اجتياز المسار الوصول لملفات مقيدة ../../etc/passwd
فقدان التحكم في الوصول على مستوى الوظيفة نقاط نهاية المسؤول مكشوفة /admin/deleteUser بدون فحص المصادقة

مراجعة كود المقابلة

# كود معرض للخطر - اعثر على المشاكل
@app.route('/api/documents/<doc_id>')
def get_document(doc_id):
    document = Document.query.get(doc_id)  # المشكلة 1: لا فحص تفويض
    return jsonify(document.to_dict())

# النسخة الآمنة
@app.route('/api/documents/<doc_id>')
@login_required
def get_document(doc_id):
    document = Document.query.get_or_404(doc_id)
    if document.owner_id != current_user.id:  # فحص التفويض
        abort(403)
    return jsonify(document.to_dict())

A02:2025 - سوء التكوين الأمني

الترتيب: #2 (صعد من #5 في 2021)

سوء التكوين أكثر انتشاراً من أي وقت مضى بسبب تعقيد السحابة.

سوء التكوين الشائع

  • بيانات الاعتماد الافتراضية لم تتغير
  • ميزات غير ضرورية مُفعّلة
  • رسائل الخطأ تكشف تتبعات المكدس
  • رؤوس الأمان مفقودة
  • حاويات S3 مضبوطة كعامة
  • سياسات CORS متساهلة جداً

سيناريو المقابلة

السؤال: "راجع هذه الاستجابة. ما رؤوس الأمان المفقودة؟"

HTTP/1.1 200 OK
Content-Type: text/html
Server: Apache/2.4.41

<html>...

الإجابة: رؤوس حرجة مفقودة:

  • Strict-Transport-Security (HSTS)
  • X-Content-Type-Options: nosniff
  • X-Frame-Options: DENY
  • Content-Security-Policy
  • X-XSS-Protection (قديم لكن متوقع)

A03:2025 - فشل سلسلة توريد البرمجيات

الترتيب: #3 (جديد - توسيع من المكونات المعرضة للخطر)

إضافة رئيسية في 2025 تعكس هجمات مثل SolarWinds وLog4Shell.

نواقل الهجوم

النوع الوصف مثال
ارتباك التبعيات أسماء الحزم الداخلية مختطفة حزمة npm خبيثة باسم داخلي
التقليد الإملائي أسماء حزم متشابهة lodash مقابل 1odash
المشرفون المخترقون حزمة شرعية مُحدّثة بشكل خبيث حادثة Event-stream
هجمات خط البناء نظام CI/CD مخترق اختراق Codecov

الدفاعات

# مثال: قفل التبعيات والتحقق من السلامة
# package-lock.json (npm) أو requirements.txt مع التجزئات
dependencies:
  lodash:
    version: "4.17.21"
    integrity: "sha512-v2kDE..."  # التحقق من التجزئة

الأدوات: Snyk، Dependabot، OWASP Dependency-Check، npm audit

A04:2025 - الفشل التشفيري

الترتيب: #4 (كان #2 في 2021)

فشل في التشفير يؤدي إلى كشف البيانات الحساسة.

حالات الفشل الشائعة

الفشل التأثير الإصلاح
خوارزميات ضعيفة MD5، SHA1 لكلمات المرور استخدم bcrypt، Argon2
الأسرار المشفرة المفاتيح في الكود المصدري استخدم مدير الأسرار
التشفير المفقود البيانات تُنقل بنص واضح TLS 1.3 في كل مكان
إدارة مفاتيح غير صحيحة المفاتيح مخزنة مع البيانات HSM، تخزين مفاتيح منفصل

سؤال المقابلة

س: "كيف ستخزن كلمات مرور المستخدمين بشكل آمن؟"

إجابة قوية:

import bcrypt

def hash_password(password: str) -> bytes:
    # توليد الملح والتجزئة في خطوة واحدة
    # bcrypt يتعامل تلقائياً مع تخزين الملح
    salt = bcrypt.gensalt(rounds=12)  # عامل التكلفة 12
    return bcrypt.hashpw(password.encode(), salt)

def verify_password(password: str, hashed: bytes) -> bool:
    return bcrypt.checkpw(password.encode(), hashed)

النقاط الرئيسية:

  • لا تستخدم أبداً MD5/SHA1 لكلمات المرور
  • استخدم خوارزميات تكيفية (bcrypt، Argon2، scrypt)
  • عامل التكلفة يجب أن يستغرق ~100 مللي ثانية للحساب

A05:2025 - الحقن

الترتيب: #5 (كان #3 في 2021)

بيانات غير موثوقة تُرسل إلى مفسر كجزء من أمر أو استعلام.

أنواع الحقن

النوع الهدف مثال
حقن SQL قاعدة البيانات ' OR '1'='1
حقن الأوامر صدفة نظام التشغيل ; rm -rf /
حقن LDAP خدمات الدليل `)(uid=))(
XSS المتصفح <script>alert(1)</script>

الدفاع: الاستعلامات المُعلمة

# معرض للخطر - تسلسل السلاسل
query = f"SELECT * FROM users WHERE id = {user_id}"

# آمن - استعلام مُعلم
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

واقع المقابلة: سيُطلب منك تحديد ثغرات الحقن في الكود. تدرب على التعرف على الأنماط حيث تتدفق مدخلات المستخدم إلى مصارف خطرة.

في الدرس التالي، سنغطي A06-A10 وOWASP LLM Top 10 لأدوار أمان الذكاء الاصطناعي. :::

اختبار

الوحدة 2: أساسيات الأمن وOWASP

خذ الاختبار