الاختبار الديناميكي وأمان وقت التشغيل
الحماية الذاتية للتطبيقات أثناء التشغيل (RASP)
3 دقيقة للقراءة
RASP يحمي التطبيقات من الداخل أثناء التشغيل. على عكس WAFs التي تجلس أمام تطبيقك، RASP يجهز التطبيق نفسه لاكتشاف الهجمات وحظرها.
كيف يعمل RASP
WAF التقليدي:
┌─────────┐ ┌─────────┐ ┌─────────────┐
│ الطلب │ ──▶ │ WAF │ ──▶ │ التطبيق │
└─────────┘ └─────────┘ └─────────────┘
│
(مطابقة الأنماط)
RASP:
┌─────────┐ ┌───────────────────────────────┐
│ الطلب │ ──▶ │ التطبيق │
└─────────┘ │ ┌─────────────────────────┐ │
│ │ وكيل RASP (مدمج) │ │
│ │ • يراقب التنفيذ │ │
│ │ • يحظر الهجمات │ │
│ │ • لديه سياق وقت التشغيل │ │
│ └─────────────────────────┘ │
└───────────────────────────────┘
RASP مقابل WAF
| الجانب | WAF | RASP |
|---|---|---|
| الموضع | محيط الشبكة | داخل التطبيق |
| السياق | طبقة HTTP فقط | سياق وقت التشغيل الكامل |
| الإيجابيات الخاطئة | أعلى | أقل |
| مقاومة التجاوز | أقل | أعلى |
| تأثير الأداء | منخفض | متوسط |
| النشر | تكوين الشبكة | تكامل الكود/الوكيل |
| الرؤية | محدودة | كاملة |
ما يحمي منه RASP
| نوع الهجوم | كيف يكتشفه RASP |
|---|---|
| SQL Injection | يراقب استدعاءات برنامج تشغيل قاعدة البيانات للـ SQL المحقون |
| Command Injection | يعترض استدعاءات exec النظام مع مدخلات ملوثة |
| اجتياز المسار | يتتبع عمليات الملفات مع مسارات يتحكم فيها المستخدم |
| XXE | يراقب محلل XML لتحميل الكيانات الخارجية |
| إلغاء التسلسل | يحظر إنشاء الفئات الخطرة |
| SSRF | يتحقق من استدعاءات عميل HTTP ضد القائمة البيضاء |
حلول RASP
مفتوح المصدر
| الأداة | اللغة | النوع |
|---|---|---|
| OpenRASP (Baidu) | Java، PHP، Node.js | قائم على الوكيل |
| Sqreen (مستحوذ) | Python، Node.js، Ruby | SaaS + وكيل |
| ModSecurity (مع CRS) | أي (reverse proxy) | هجين WAF/RASP |
تجاري
| الأداة | اللغات | الميزات |
|---|---|---|
| Contrast Security | Java، .NET، Node، Python، Go، Ruby | RASP كامل + IAST |
| Imperva RASP | Java، .NET | مقياس المؤسسات |
| Signal Sciences (Fastly) | أي (وحدة) | WAF + RASP |
| Dynatrace AppSec | Java، .NET، Node، PHP، Go | APM + الأمان |
تنفيذ RASP: مثال OpenRASP
تثبيت وكيل Java
# تنزيل OpenRASP
wget https://github.com/baidu/openrasp/releases/download/v1.3.7/rasp-java.tar.gz
tar -xzf rasp-java.tar.gz
# التثبيت لتطبيق Java
java -jar RaspInstall.jar -install /path/to/tomcat
التكوين
# openrasp/conf/openrasp.yml
security:
sql:
# مراقبة جميع استعلامات SQL
policy: log # log, block
command:
# حظر حقن الأوامر
policy: block
file:
# مراقبة عمليات الملفات
policy: log
xxe:
# حظر هجمات XXE
policy: block
# القائمة البيضاء للعمليات الموثوقة
whitelist:
sql:
- "SELECT * FROM users WHERE id = ?"
RASP في بيئات الحاويات
نمط Sidecar في Kubernetes
# deployment.yaml مع sidecar RASP
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: app
image: my-app:latest
env:
- name: JAVA_TOOL_OPTIONS
value: "-javaagent:/rasp/rasp.jar"
volumeMounts:
- name: rasp-agent
mountPath: /rasp
initContainers:
- name: rasp-init
image: rasp-agent:latest
command: ['cp', '/agent/rasp.jar', '/rasp/']
volumeMounts:
- name: rasp-agent
mountPath: /rasp
volumes:
- name: rasp-agent
emptyDir: {}
مراقبة وتنبيهات RASP
# التنبيه على حظر RASP
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: rasp-alerts
spec:
groups:
- name: rasp
rules:
- alert: RASPAttackBlocked
expr: increase(rasp_attacks_blocked_total[5m]) > 10
for: 1m
labels:
severity: warning
annotations:
summary: "عدد كبير من الهجمات المحظورة بواسطة RASP"
متى تستخدم RASP
| السيناريو | التوصية |
|---|---|
| تطبيقات عالية القيمة | استخدم RASP + WAF |
| الامتثال التنظيمي | RASP يوفر رؤية عميقة |
| التطبيقات القديمة | WAF قد يكون أسهل |
| الخدمات المصغرة | فكر في service mesh + RASP |
| التطوير/التجهيز | استخدم في وضع المراقبة |
| الإنتاج | ابدأ بالتسجيل، تدرج إلى الحظر |
أفضل الممارسات
- ابدأ في وضع المراقبة: سجل الهجمات قبل الحظر
- اضبط لتطبيقك: أضف الأنماط الشرعية للقائمة البيضاء
- راقب الأداء: RASP يضيف حمل (~2-5% CPU)
- ادمج مع SIEM: غذِّ سجلات RASP لمراقبة الأمان
- طبق دفاعات متعددة: استخدم RASP جنباً إلى جنب مع WAF، ليس بدلاً منه
في الوحدة التالية، سنتناول إدارة الأسرار وأمان البنية التحتية. :::