Files
Siro/security_audit_comprehensive_report.md
2026-06-16 02:52:06 +03:00

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) |