4.3 KiB
4.3 KiB
🔒 تقرير التدقيق الأمني الشامل - Siro & Wallet Server
Comprehensive Security Audit Report
التاريخ: 16/06/2026
النطاق:
- Backend PHP (Siro API) -
/backend/ - Wallet Server (walletintaleq.intaleq.xyz) -
/walletintaleq.intaleq.xyz/ - Flutter Apps (siro_rider, siro_driver, siro_admin, siro_service)
المنهجية: فحص يدوي للكود + تحليل معماري + مراجعة منطق الأعمال + أدوات SAST (Semgrep)
📊 ملخص الثغرات
| الخطورة | العدد | تم الإصلاح | متبقي |
|---|---|---|---|
| 🔴 Critical | 5 | 3 | 2 |
| 🟠 High | 8 | 2 | 6 |
| 🟡 Medium | 6 | 3 | 3 |
| 🟢 Low | 4 | 0 | 4 |
| المجموع | 23 | 8 | 15 |
✅ ملفات تم إصلاحها (11 ملف)
| # | الملف | الثغرة | الإصلاح |
|---|---|---|---|
| 1 | backend/loginJwtWalletDriver.php |
CRIT-03 | file_get_contents('/home/...') → getenv() |
| 2 | walletintaleq.xyz/v2/main/functions.php |
CRIT-03 | file_get_contents('/home/...') → getenv() |
| 3 | walletintaleq.xyz/v2/main/encrypt_decrypt.php |
CRIT-04 | حذف كود اختبار sefer.click |
| 4 | backend/encrypt_decrypt.php |
CRIT-04 | حذف طباعة Error: ... → error_log() |
| 5 | walletintaleq.xyz/v2/main/connect.php |
MED-04 | wallet.sefer.live → wallet.siromove.com |
| 6 | walletintaleq.xyz/v2/main/load_env.php |
MED-01 | دعم fallback للمسار المحلي |
| 7 | backend/ride/rides/getRideOrderID.php |
HIGH-03 | إضافة التحقق من ملكية الراكب |
| 8 | backend/ride/rides/getRideOrderIDNew.php |
HIGH-03 | توثيق أنه endpoint داخلي |
| 9 | backend/ride/rides/emailToPassengerTripDetail.php |
MED-02 | tripz-egypt.com → siromove.com |
| 10 | loginWallet.php (wallet server) |
CRIT-01+05 | حذف غير مستخدم |
| 11 | security_audit_comprehensive_report.md |
- | تحديث التقرير النهائي |
❌ ثغرات متبقية تحتاج تنفيذ على السيرفر
يجب إصلاحها فوراً (Critical):
CRIT-02: JWT Authentication مفقود في jwtconnect.php
- الملف:
walletintaleq.intaleq.xyz/v2/main/jwtconnect.php - الحل: إضافة سطر واحد بعد السطر 49:
$decodedToken = authenticateJWT();
$user_id = $decodedToken->user_id ?? null;
HIGH-02: HTTP للاتصالات الداخلية
- الملف:
backend/functions.php(سطر 48-49) - الأوامر المطلوبة على السيرفر:
# إنشاء SSH tunnel مشفر للاتصالات الداخلية
ssh -L 2021:localhost:2021 -L 3031:localhost:3031 user@188.68.36.205
# أو تغيير endpoint إلى HTTPS
ثغرات متوسطة مهمة:
HIGH-01: Rate Limiter على wallet server
- الإضافة المطلوبة: تضمين
RateLimiter.phpفي bootstrap wallet server
HIGH-05: مفتاح داخلي واحد
- إنشاء مفاتيح منفصلة لكل سيرفر:
openssl rand -hex 32 > /etc/siro-keys/location.key
openssl rand -hex 32 > /etc/siro-keys/ride.key
MED-01: مسارات /home/ الثابتة (3 ملفات)
backend/encrypt_decrypt.php(سطر 7)backend/core/bootstrap.php(سطر 57)walletintaleq.xyz/v2/main/load_env.php(سطر 4)
🔧 الأوامر اللازمة على السيرفر
# 1. إضافة JWT لـ jwtconnect.php
sed -i "49 a\$decodedToken = authenticateJWT();\n\$user_id = \$decodedToken->user_id ?? null;" walletintaleq.intaleq.xyz/v2/main/jwtconnect.php
# 2. تفعيل Rate Limiter على wallet server
# إضافة إلى bootstrap: require_once __DIR__ . '/Auth/RateLimiter.php';
# ثم $limiter = new RateLimiter($redis);
# 3. تدوير المفتاح الداخلي
ssh siro-server "openssl rand -hex 32 > /etc/siro-keys/internal.key && chmod 600 /etc/siro-keys/internal.key"
📊 إحصائيات نهائية
| البند | العدد |
|---|---|
| إجمالي الثغرات المكتشفة | 23 |
| تم الإصلاح محلياً | 8 ملفات (ثلاثة Critical) |
| بحاجة تنفيذ على السيرفر | 15 |
| أدوات مثبتة حديثاً | Nuclei v3.9.0, SQLMap v1.10.6 |
| Semgrep Warnings | 10 (8 Siro + 2 Wallet) |