108 lines
4.3 KiB
Markdown
108 lines
4.3 KiB
Markdown
# 🔒 تقرير التدقيق الأمني الشامل - 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) | |