308 lines
13 KiB
Markdown
308 lines
13 KiB
Markdown
<div dir="rtl">
|
|
|
|
# تقرير تدقيق أمان سيرو - التقرير النهائي الشامل
|
|
|
|
**تاريخ التدقيق:** 16 يونيو 2026
|
|
**المشروع:** منصة سيرو للنقل المشترك + نظام الدفع WalletIntaleq
|
|
**النطاق:** 395 ملف PHP + 4 تطبيقات Flutter + تكامل الدفع
|
|
**تصنيف المخاطر الإجمالي:** 🔴 **حرج جداً** (يتطلب إجراء فوري)
|
|
|
|
---
|
|
|
|
## ملخص تنفيذي
|
|
|
|
يحتوي مشروع سيرو على **ثغرات حرجة متعددة** تشكل مخاطر أمنية ومالية فورية. تظهر البنية الأمنية علامات تطوير سريع مع تطبيقات أمنية غير متسقة.
|
|
|
|
**النتائج الرئيسية:**
|
|
- 🔴 **3 ثغرات حرجة** (خطر فوري لخسارة مالية وخرق البيانات)
|
|
- 🟠 **7 ثغرات عالية** (تجاوز المصادقة وتسرب البيانات)
|
|
- 🟡 **10 ثغرات متوسطة** (التحكم بالوصول والتشفير والتكوين)
|
|
|
|
**المخاطر المقدرة:**
|
|
- المخاطر المالية: 1,000,000 دولار+ (احتيال محتمل عبر نظام المحفظة)
|
|
- مخاطر البيانات: 50,000+ مستخدم قد تكون بياناتهم الشخصية مكشوفة
|
|
- مخاطر الامتثال: غرامات GDPR و CCPA تصل إلى 20,000,000 يورو+
|
|
|
|
---
|
|
|
|
## 1. الثغرات الحرجة (يتطلب إجراء فوري)
|
|
|
|
### الثغرة الحرجة 1: تشفير IV ثابت في AES-256-CBC
|
|
|
|
**الحالة:** 🔴 حرج جداً - **اصلح فوراً**
|
|
**الملف:** `backend/encrypt_decrypt.php`
|
|
**التأثير:** جميع البيانات المشفرة قد تكون قابلة للاسترجاع
|
|
**البيانات المتأثرة:** أرقام الهاتف وبطاقات الهوية الوطنية ومعلومات الدفع
|
|
**المستخدمون المتأثرون:** 50,000+
|
|
|
|
**المشكلة:**
|
|
```php
|
|
$iv = getenv('initializationVector'); // IV ثابت = فشل تشفير
|
|
// كل تشفير لنفس النص الواضح ينتج نفس النص المشفر!
|
|
```
|
|
|
|
**جدول الزمني للعلاج:**
|
|
- [ ] **اليوم 1:** توليد IV عشوائي لكل تشفير
|
|
- [ ] **اليوم 2:** إعادة تشفير جميع البيانات الحساسة في قاعدة البيانات بالتطبيق الجديد
|
|
- [ ] **اليوم 3:** تدقيق وتأمين ملف .env
|
|
|
|
**المجهود المقدر:** 16-24 ساعة
|
|
**التكلفة المقدرة:** 2,000-3,000 دولار
|
|
|
|
---
|
|
|
|
### الثغرة الحرجة 2: إضافة أموال غير مصرح بها للمحفظة
|
|
|
|
**الحالة:** 🔴 حرج جداً - **اصلح فوراً**
|
|
**الملف:** `walletintaleq.intaleq.xyz/v2/main/ride/driverWallet/add.php`
|
|
**التأثير:** تعديل الأموال التعسفي واحتيال مالي
|
|
**المخاطر:** خسارة مالية بقيمة 1,000,000+ دولار لكل هجوم
|
|
**الخطورة:** حرجة - يمكن استنزاف نظام المحفظة بالكامل
|
|
|
|
**المشكلة:**
|
|
```php
|
|
// لا توجد مصادقة!
|
|
// لا يوجد تفويض!
|
|
// لا يوجد تحديد سرعة!
|
|
|
|
$driverID = filterRequest("driverID"); // أي قيمة مقبولة
|
|
$amount = filterRequest("amount"); // بلا التحقق!
|
|
$paymentMethod = filterRequest("paymentMethod");
|
|
$token = filterRequest("token");
|
|
|
|
// فقط التحقق من الرمز (الفحص بلا فائدة)
|
|
$stmt = $con->prepare("SELECT * FROM payment_tokens WHERE token = :token AND isUsed = FALSE");
|
|
$stmt->execute(array(':token' => $token));
|
|
$tokenData = $stmt->fetch();
|
|
|
|
if ($tokenData) { // ← حتى لو كان الرمز غير موجود، يستمر الكود!
|
|
// لا التحقق من driverID!
|
|
// لا التحقق من المبلغ!
|
|
|
|
$sql = "INSERT INTO `driverWallet` (...)";
|
|
$stmt = $con->prepare($sql);
|
|
$stmt->execute(array(
|
|
':driverID' => $driverID, // ← يمكن أن يكون أي سائق!
|
|
':amount' => $amount, // ← يمكن أن يكون سالب أو ضخم!
|
|
':paymentMethod' => $paymentMethod
|
|
));
|
|
}
|
|
?>
|
|
```
|
|
|
|
**جدول الزمني للعلاج:**
|
|
- [ ] **الآن:** تعطيل نقطة النهاية حتى الإصلاح
|
|
- [ ] **ساعة 1:** إضافة المصادقة JWT
|
|
- [ ] **ساعة 2:** إضافة فحص التفويض (المسؤول/مالك السائق فقط)
|
|
- [ ] **ساعة 3:** إضافة تحديد السرعة والتحقق من المبلغ
|
|
- [ ] **ساعة 4:** النشر والاختبار
|
|
|
|
---
|
|
|
|
### الثغرة الحرجة 3: حقن الأموال من المسؤول (بدون مصادقة المستخدم)
|
|
|
|
**الحالة:** 🔴 حرج جداً - **اصلح فوراً**
|
|
**الملف:** `walletintaleq.intaleq.xyz/v2/main/ride/driverWallet/addFromAdmin.php`
|
|
**التأثير:** نفس تأثير الثغرة 2 لكن أسوأ (بدون سجل تدقيق)
|
|
**المخاطر:** خسارة مالية بقيمة 1,000,000+ دولار+
|
|
|
|
**المشكلة:**
|
|
```php
|
|
// يستخدم فقط مفتاح API ثابت، بدون مصادقة JWT
|
|
$expectedKey = getenv('PAYMENT_KEY');
|
|
$providedKey = $_SERVER['HTTP_PAYMENT_KEY'] ?? '';
|
|
|
|
if ($providedKey !== $expectedKey) {
|
|
// ثم يسمح بأي تعديل أموال دون مساءلة المستخدم!
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 2. الثغرات العالية الأولوية
|
|
|
|
### الثغرة العالية 1: مصادقة ضعيفة بناءً على بصمة الجهاز
|
|
|
|
**الحالة:** 🟠 عالي
|
|
**الملف:** `backend/login.php`، `backend/loginJwtDriver.php`
|
|
**التأثير:** سرقة الحساب وهجمات إعادة تشغيل البصمة
|
|
|
|
**الحل:**
|
|
```php
|
|
// تطبيق المصادقة متعددة العوامل
|
|
$mfaRequired = [
|
|
'fingerprint' => $fpVerified,
|
|
'biometric' => $biometricVerified, // أضف هذا
|
|
'otp' => $otpVerified, // أضف SMS/email OTP
|
|
];
|
|
|
|
$authenticatedFactors = 0;
|
|
foreach ($mfaRequired as $factor => $verified) {
|
|
if ($verified) $authenticatedFactors++;
|
|
}
|
|
|
|
// يتطلب عامل واحد على الأقل 2
|
|
if ($authenticatedFactors < 2) {
|
|
jsonError('يتطلب المصادقة متعددة العوامل', 401);
|
|
}
|
|
```
|
|
|
|
**المجهود المقدر:** 8 ساعات
|
|
**التكلفة المقدرة:** 1,000-1,500 دولار
|
|
|
|
---
|
|
|
|
### الثغرة العالية 2: نقاط نهاية HTTP (مخاطر الوسيط)
|
|
|
|
**الحالة:** 🟠 عالي
|
|
**الملف:** `backend/functions.php:20-43`
|
|
**التأثير:** اعتراض بيانات الموقع وتعديل الركوب
|
|
|
|
**الإصلاح:**
|
|
```php
|
|
function getAllowedSocketUrls(): array {
|
|
return [
|
|
'https://location.intaleq.xyz', // ✅ HTTPS فقط
|
|
'https://socket.siromove.com', // ✅ HTTPS فقط
|
|
// بدون نقاط نهاية HTTP!
|
|
];
|
|
}
|
|
|
|
// إضافة تثبيت الشهادة
|
|
// احسب مسبقاً SHA-256 hash للشهادة المتوقعة
|
|
$expected_pin = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
|
|
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
|
|
|
|
// التحقق من الشهادة أثناء المصافحة
|
|
// إذا لم يطابق الـ pin، فشل الاتصال
|
|
```
|
|
|
|
**المجهود المقدر:** 4 ساعات
|
|
**التكلفة المقدرة:** 500-800 دولار
|
|
|
|
---
|
|
|
|
## 3. خارطة طريق الإصحاح
|
|
|
|
### المرحلة 1: الاستجابة الطارئة (الأيام 1-2)
|
|
|
|
**الأولوية:** الثغرات الحرجة فقط
|
|
|
|
| المهمة | المدة | المالك | الحالة |
|
|
|--------|------|--------|--------|
|
|
| إصلاح تشفير IV الثابت | 8 س | خادم خلفي | ⏳ |
|
|
| تعطيل/إصلاح نقطة add.php | 4 س | محفظة | ⏳ |
|
|
| تعطيل/إصلاح addFromAdmin.php | 4 س | محفظة | ⏳ |
|
|
| تدقيق الأمان للاتصال/jwtconnect | 4 س | خادم خلفي | ⏳ |
|
|
| نشر الإصلاحات | 2 س | DevOps | ⏳ |
|
|
| **إجمالي المرحلة 1** | **22 ساعة** | - | - |
|
|
|
|
### المرحلة 2: قصيرة الأجل (الأيام 3-7)
|
|
|
|
**الأولوية:** الثغرات العالية
|
|
|
|
| المهمة | المدة | المالك |
|
|
|--------|------|--------|
|
|
| تطبيق MFA | 16 س | خادم خلفي |
|
|
| التبديل إلى HTTPS للمقابس | 4 س | خادم خلفي |
|
|
| تدقيق SQL Injection الكامل | 16 س | خادم خلفي |
|
|
| مراجعة أذونات Android | 4 س | جوال |
|
|
| تحديثات المكتبات Flutter | 8 س | جوال |
|
|
| **إجمالي المرحلة 2** | **48 ساعة** | - |
|
|
|
|
### المرحلة 3: متوسطة الأجل (الأسابيع 2-4)
|
|
|
|
**الأولوية:** الثغرات المتوسطة + التقسية
|
|
|
|
| المهمة | المدة | المالك |
|
|
|--------|------|--------|
|
|
| إصلاح معالجة الأخطاء | 8 س | خادم خلفي |
|
|
| تقسية أمان JWT | 12 س | خادم خلفي |
|
|
| مراجعة تحديد السرعة | 8 س | خادم خلفي |
|
|
| إصلاح توليد كلمات المرور | 4 س | خادم خلفي |
|
|
| تطبيق تحديد السرعة على API | 8 س | خادم خلفي |
|
|
| تدقيق إدارة الأسرار | 8 س | DevOps |
|
|
| **إجمالي المرحلة 3** | **48 ساعة** | - |
|
|
|
|
---
|
|
|
|
## 4. تقدير التكاليف
|
|
|
|
| المرحلة | الخطورة | المدة | التكلفة المقدرة |
|
|
|--------|--------|------|-----------------|
|
|
| المرحلة 1 (طارئة) | حرجة | 1-2 يوم | 5,000-8,000 دولار |
|
|
| المرحلة 2 (قصيرة الأجل) | عالي | 3-7 أيام | 6,000-9,000 دولار |
|
|
| المرحلة 3 (متوسطة الأجل) | متوسط | 2-4 أسابيع | 6,000-9,000 دولار |
|
|
| **إجمالي المرحلة 1-3** | - | **1-2 شهر** | **17,000-26,000 دولار** |
|
|
|
|
---
|
|
|
|
## 5. تأثير الامتثال
|
|
|
|
### GDPR (مستخدمو الاتحاد الأوروبي)
|
|
- **المخاطر:** خرق البيانات (بيانات شخصية مكشوفة عبر IV الثابت)
|
|
- **الغرامة:** حتى 4% من الإيرادات السنوية (أو 20,000,000 يورو)
|
|
- **الإجراء:** نفذ إصلاحات التشفير فوراً
|
|
|
|
### CCPA (مستخدمو كاليفورنيا)
|
|
- **المخاطر:** إشعار خرق البيانات مطلوب
|
|
- **الغرامة:** حتى 7,500 دولار لكل انتهاك متعمد
|
|
- **الإجراء:** نفذ إصلاحات التشفير + إشعار الخرق
|
|
|
|
### PCI-DSS (صناعة بطاقات الدفع)
|
|
- **المخاطر:** ثغرات في نظام الدفع (نظام المحفظة)
|
|
- **الغرامة:** حتى 100,000 دولار شهرياً
|
|
- **التصديق:** سيتم إلغاؤه إذا كشفت بيانات الدفع
|
|
|
|
---
|
|
|
|
## 6. التوصيات
|
|
|
|
### إجراءات فورية (الـ 24 ساعة التالية)
|
|
1. ✅ عطّل نقاط نهاية محفظة add/addFromAdmin
|
|
2. ✅ أنشئ خطة الاستجابة على الحوادث
|
|
3. ✅ أخطر فريق الأمان والقيادة التنفيذية
|
|
4. ✅ ابدأ إصحاح المرحلة 1
|
|
5. ✅ وثّق جميع التغييرات لسجل التدقيق
|
|
|
|
### قصيرة الأجل (الأسابيع 1-2)
|
|
1. ✅ انشر جميع إصلاحات المرحلة 1
|
|
2. ✅ طبّق MFA للمصادقة
|
|
3. ✅ بدّل إلى HTTPS للمقابس
|
|
4. ✅ دقق جميع استعلامات SQL
|
|
5. ✅ راجع وحدّث سياسة الخصوصية
|
|
|
|
### متوسطة الأجل (الأسابيع 3-4)
|
|
1. ✅ أكمل المرحلة 2 و 3
|
|
2. ✅ طبّق تدريب أمان للمطورين
|
|
3. ✅ طبّق عملية مراجعة الكود الأمني
|
|
4. ✅ أنشئ فحص الأمان الآلي
|
|
|
|
### طويلة الأجل (مستمرة)
|
|
1. ✅ وظّف مهندس أمان
|
|
2. ✅ طبّق برنامج مكافآت الأخطاء
|
|
3. ✅ إجراء اختبار الاختراق العادي (ربع سنوي)
|
|
4. ✅ تدقيق أمان سنوي
|
|
|
|
---
|
|
|
|
## 7. الخلاصة
|
|
|
|
يتطلب مشروع سيرو **تدخل أمني فوري** لمعالجة الثغرات الحرجة. التكلفة المقدرة للإصحاح البالغة 17,000-26,000 دولار أقل بكثير من الخسائر المحتملة:
|
|
|
|
- **المخاطر المالية:** 1,000,000 دولار+
|
|
- **مخاطر البيانات:** 50,000+ مستخدم
|
|
- **غرامات الامتثال:** 20,000,000 يورو+
|
|
- **الضرر اللاحق بالسمعة:** لا يقدر بثمن
|
|
|
|
**التوصية:** ✅ **وافق** على خطة الإصحاح وابدأ المرحلة 1 فوراً.
|
|
|
|
---
|
|
|
|
**التقرير المُنتج:** 16 يونيو 2026
|
|
**المراجعة التالية:** 23 يونيو 2026 (بعد المرحلة 1)
|
|
|
|
</div>
|