الاختبار الديناميكي وأمان وقت التشغيل

فهم DAST: اختبار الأمان أثناء التشغيل

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

اختبار أمان التطبيقات الديناميكي (DAST) يختبر تطبيقك أثناء تشغيله. على عكس SAST الذي يقرأ الكود، DAST يتفاعل مع تطبيقك كما يفعل المهاجم.

كيف يعمل DAST

┌─────────────┐     طلبات HTTP        ┌─────────────────┐
│ أداة DAST   │ ──────────────────▶  │ التطبيق قيد     │
│ (ZAP, etc)  │                       │ التشغيل         │
│             │ ◀──────────────────   │ (staging/test)  │
└─────────────┘     استجابات HTTP     └─────────────────┘
┌─────────────┐
│  التقرير:   │
│  - XSS      │
│  - SQLi     │
│  - CSRF     │
└─────────────┘

أدوات DAST:

  1. تزحف لتطبيقك لاكتشاف نقاط النهاية
  2. تحقن حمولات خبيثة في المدخلات
  3. تحلل الاستجابات لمؤشرات الثغرات
  4. تقدم تقريراً بالنتائج مع إثبات المفهوم

مقارنة 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 الخاص بك. :::

اختبار

اختبار الوحدة 4: الاختبار الديناميكي وأمان وقت التشغيل

خذ الاختبار