# 🔒 تقرير التدقيق الأمني الشامل - 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: ```php $decodedToken = authenticateJWT(); $user_id = $decodedToken->user_id ?? null; ``` **HIGH-02: HTTP للاتصالات الداخلية** - الملف: `backend/functions.php` (سطر 48-49) - الأوامر المطلوبة على السيرفر: ```bash # إنشاء 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: مفتاح داخلي واحد** - إنشاء مفاتيح منفصلة لكل سيرفر: ```bash 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) --- ## 🔧 الأوامر اللازمة على السيرفر ```bash # 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) |