الاختبار الديناميكي وأمان وقت التشغيل
فهم DAST: اختبار الأمان أثناء التشغيل
3 دقيقة للقراءة
اختبار أمان التطبيقات الديناميكي (DAST) يختبر تطبيقك أثناء تشغيله. على عكس SAST الذي يقرأ الكود، DAST يتفاعل مع تطبيقك كما يفعل المهاجم.
كيف يعمل DAST
┌─────────────┐ طلبات HTTP ┌─────────────────┐
│ أداة DAST │ ──────────────────▶ │ التطبيق قيد │
│ (ZAP, etc) │ │ التشغيل │
│ │ ◀────────────────── │ (staging/test) │
└─────────────┘ استجابات HTTP └─────────────────┘
│
▼
┌─────────────┐
│ التقرير: │
│ - XSS │
│ - SQLi │
│ - CSRF │
└─────────────┘
أدوات DAST:
- تزحف لتطبيقك لاكتشاف نقاط النهاية
- تحقن حمولات خبيثة في المدخلات
- تحلل الاستجابات لمؤشرات الثغرات
- تقدم تقريراً بالنتائج مع إثبات المفهوم
مقارنة DAST مع SAST
| الجانب | SAST | DAST |
|---|---|---|
| متى | وقت البناء | وقت التشغيل |
| المدخلات | الكود المصدري | التطبيق قيد التشغيل |
| التغطية | جميع مسارات الكود | فقط المسارات القابلة للوصول |
| الإيجابيات الخاطئة | أعلى | أقل |
| يعتمد على اللغة | نعم | لا |
| يجد مشاكل وقت التشغيل | لا | نعم |
| مشاكل التكوين | محدود | نعم |
| أخطاء المصادقة | محدود | نعم |
ما يجده DAST
| الثغرة | كيف يكتشفها DAST |
|---|---|
| SQL Injection | يرسل ' OR 1=1-- ويتحقق من أخطاء قاعدة البيانات |
| XSS | يحقن <script>alert(1)</script> ويتحقق إذا نُفذ |
| CSRF | يتحقق من رموز CSRF المفقودة في النماذج |
| إعادة التوجيه المفتوح | يختبر معلمات التوجيه مع URLs خارجية |
| رؤوس الأمان | يتحقق من CSP، HSTS، X-Frame-Options المفقودة |
| كشف المعلومات | يبحث عن تتبعات المكدس، معلومات الإصدار في الأخطاء |
أنواع اختبار DAST
1. الفحص السلبي
يراقب حركة المرور دون تعديل الطلبات:
- يتحقق من رؤوس الأمان
- يحدد تعرض البيانات الحساسة
- يجد تسرب المعلومات
2. الفحص النشط
يرسل حمولات هجوم للعثور على الثغرات:
- محاولات SQL injection
- حقن حمولات XSS
- هجمات اجتياز المسار
3. فحص API
يختبر REST/GraphQL APIs:
- تجاوز المصادقة
- عيوب التفويض
- الحقن في معلمات API
متى تشغل DAST
التطوير ─────▶ التجهيز ─────▶ الإنتاج
│
▼
┌─────────────┐
│ فحص DAST │
│ (ليلي أو │
│ لكل نشر) │
└─────────────┘
أفضل الممارسات:
- شغّل ضد التجهيز، ليس الإنتاج (إلا إذا كان سلبياً فقط)
- جدول فحوصات ليلية للاختبار الشامل
- شغّل فحوصات سريعة على كل نشر
- استخدم فحوصات مصادق عليها لاختبار المناطق المحمية
DAST في CI/CD
# GitHub Actions - DAST بعد النشر
dast:
needs: deploy-staging
runs-on: ubuntu-latest
steps:
- name: Wait for deployment
run: sleep 30
- name: DAST Scan
uses: zaproxy/action-baseline@v0.10.0
with:
target: ${{ secrets.STAGING_URL }}
fail_action: true # فشل خط الأنابيب على النتائج العالية
قيود DAST
كن على دراية بما لا يستطيع DAST فعله:
- مشاكل مستوى الكود: لا يمكنه رؤية أنماط الكود الضعيف
- الكود الميت: لا يمكنه اختبار مسارات الكود غير القابلة للوصول
- المنطق المعقد: صعب اختبار منطق الأعمال متعدد الخطوات
- بطيء: الفحوصات الكاملة تستغرق ساعات مقابل دقائق لـ SAST
- إعداد البيئة: يتطلب تطبيق قيد التشغيل
اختيار نهج DAST
| السيناريو | النهج |
|---|---|
| فحوصات PR سريعة | فحص أساسي (سريع، ثغرات شائعة) |
| بناءات ليلية | فحص نشط كامل |
| اختبار API | فحص خاص بـ API (Nuclei) |
| الامتثال | مصادق عليه + غير مصادق عليه |
بعد ذلك، سنقوم بأتمتة OWASP ZAP في خط أنابيب CI/CD الخاص بك. :::