أساسيات الأمن وOWASP
OWASP Top 10 2025: A06-A10 وLLM Top 10
إكمال تغطية OWASP بالثغرات الخمس المتبقية للويب بالإضافة إلى مخاطر LLM المحددة التي يتم اختبارها بشكل متزايد في أدوار أمان الذكاء الاصطناعي.
A06:2025 - التصميم غير الآمن
الترتيب: #6 (كان #4 في 2021)
عيوب في مرحلة التصميم لا يمكن إصلاحها بالتنفيذ المثالي.
عيوب التصميم مقابل أخطاء التنفيذ
| الفئة | مثال | الإصلاح |
|---|---|---|
| التصميم غير الآمن | لا تحديد معدل مُصمم | إعادة التصميم مع تحديد المعدل |
| خطأ التنفيذ | تجاوز محدد المعدل | إصلاح الكود |
سيناريو المقابلة
س: "صمم تدفق إعادة تعيين كلمة المرور. ما الاعتبارات الأمنية المهمة؟"
إجابة قوية:
- توليد الرمز: عشوائي تشفيرياً، 32+ بايت
- انتهاء صلاحية الرمز: قصير العمر (15-60 دقيقة)
- استخدام واحد: إبطال بعد الاستخدام
- تحديد المعدل: منع التعداد
- لا معلومات مستخدم في URL: الرمز فقط
- التسليم الآمن: البريد الإلكتروني، ليس SMS
- قفل الحساب: بعد N محاولات فاشلة
A07:2025 - فشل المصادقة والتعريف
الترتيب: #7 (بدون تغيير)
نقاط ضعف في آليات المصادقة وإدارة الجلسات.
حالات الفشل الشائعة
| الفشل | المخاطر | التخفيف |
|---|---|---|
| كلمات مرور ضعيفة | حشو بيانات الاعتماد | سياسات كلمات المرور، فحوصات الاختراق |
| MFA مفقود | استيلاء على الحساب | طلب MFA للإجراءات الحساسة |
| تثبيت الجلسة | اختطاف الجلسة | تجديد الجلسة عند المصادقة |
| كشف بيانات الاعتماد | اختراق جماعي | التخزين الآمن، التدوير |
مراجعة كود المقابلة
# اعثر على الثغرات
def login(username, password):
user = db.query(f"SELECT * FROM users WHERE username='{username}'")
if user and user.password == password: # المشكلة 1: حقن SQL
session['user_id'] = user.id # المشكلة 2: مقارنة نص واضح
return redirect('/dashboard') # المشكلة 3: لا تجديد جلسة
return "Invalid credentials" # المشكلة 4: الخطأ العام جيد
A08:2025 - فشل سلامة البرمجيات والبيانات
الترتيب: #8
فشل في التحقق من سلامة الكود أو البيانات أو التكوينات.
سيناريوهات الهجوم
| السيناريو | الوصف | الدفاع |
|---|---|---|
| تحديثات غير موقعة | تحديث خبيث مدفوع | توقيع الكود، التحقق |
| إلغاء التسلسل غير الآمن | RCE عبر حقن الكائن | تجنب إلغاء تسلسل البيانات غير الموثوقة |
| التلاعب بـ CI/CD | اختراق خط البناء | التزامات موقعة، أدوات غير قابلة للتغيير |
# إلغاء تسلسل معرض للخطر
import pickle
def process_data(serialized):
return pickle.loads(serialized) # RCE إذا تحكم المهاجم بالمدخل
# بديل أكثر أماناً
import json
def process_data(serialized):
return json.loads(serialized) # بيانات فقط، لا تنفيذ كود
A09:2025 - فشل التسجيل والتنبيه الأمني
الترتيب: #9 (موسع من "التسجيل غير الكافي")
السجلات بدون تنبيه وإجراء توفر قيمة محدودة.
ما يجب تسجيله
| الحدث | الأولوية | الاحتفاظ |
|---|---|---|
| محاولات تسجيل الدخول (نجاح/فشل) | عالية | 90 يوم |
| فشل التحكم في الوصول | عالية | 90 يوم |
| فشل التحقق من المدخلات | متوسطة | 30 يوم |
| أخطاء النظام | متوسطة | 30 يوم |
سؤال المقابلة
س: "ماذا ستسجل لـ API معاملات مالية؟"
الإجابة:
{
"timestamp": "2026-01-05T10:30:00Z",
"event_type": "TRANSACTION",
"user_id": "hashed_user_123",
"action": "TRANSFER",
"amount": 1000.00,
"source_ip": "192.168.1.1",
"user_agent": "Mozilla/5.0...",
"request_id": "uuid-xxx",
"result": "SUCCESS",
"latency_ms": 45
}
المفتاح: سجل بما يكفي للتحقيق لكن لا تسجل أبداً البيانات الحساسة (كلمات المرور، أرقام البطاقات الكاملة، PII).
A10:2025 - سوء التعامل مع الحالات الاستثنائية
الترتيب: #10 (جديد)
عندما لا تتعامل التطبيقات بشكل صحيح مع المواقف غير المتوقعة.
المشاكل الشائعة
| المشكلة | مثال | التأثير |
|---|---|---|
| استثناءات غير معالجة | تتبع المكدس في الاستجابة | كشف المعلومات |
| استنفاد الموارد | لا مهلة على العمليات | DoS |
| حالات السباق | ثغرات TOCTOU | تصعيد الصلاحيات |
| تصاميم الفشل المفتوح | السماح عند الخطأ | تجاوز الأمان |
# فشل مفتوح (خطأ)
def check_authorization(user, resource):
try:
return authorization_service.check(user, resource)
except Exception:
return True # خطر: فشل مفتوح
# فشل مغلق (صحيح)
def check_authorization(user, resource):
try:
return authorization_service.check(user, resource)
except Exception as e:
log.error(f"AuthZ check failed: {e}")
return False # الفشل المغلق آمن
OWASP LLM Top 10 2025
لأدوار أمان الذكاء الاصطناعي، اعرف الثغرات الخاصة بـ LLM:
| الترتيب | الثغرة | الوصف |
|---|---|---|
| LLM01 | حقن الموجه | موجهات خبيثة تتلاعب بسلوك LLM |
| LLM02 | كشف المعلومات الحساسة | LLM يكشف بيانات التدريب أو الأسرار |
| LLM03 | سلسلة التوريد | نماذج أو إضافات أو بيانات تدريب مخترقة |
| LLM05 | التعامل غير السليم مع المخرجات | XSS/حقن عبر مخرجات LLM |
| LLM06 | الصلاحيات المفرطة | LLM بأذونات كثيرة جداً |
| LLM07 | تسريب موجه النظام | كشف تعليمات النظام |
| LLM08 | نقاط ضعف المتجهات والتضمين | هجمات تسميم RAG |
سؤال المقابلة (دور أمان AI)
س: "كيف ستمنع هجمات حقن الموجه؟"
الإجابة:
- تنظيف وتصفية المدخلات
- ترميز المخرجات قبل العرض
- فصل الصلاحيات (LLM لا يمكنه تنفيذ الكود مباشرة)
- فصل الموجه/الإكمال
- تحديد المعدل والمراقبة
- الإنسان في الحلقة للإجراءات الحساسة
لأدوار أمان AI: LLM Top 10 الآن مادة مقابلة قياسية. توقع أسئلة مفصلة حول حقن الموجه وأمان RAG.
في الدرس التالي، سنغطي أساسيات التشفير لمقابلات الأمن. :::