13 KiB
تقرير تدقيق أمان سيرو - التقرير النهائي الشامل
تاريخ التدقيق: 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+
المشكلة:
$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+ دولار لكل هجوم
الخطورة: حرجة - يمكن استنزاف نظام المحفظة بالكامل
المشكلة:
// لا توجد مصادقة!
// لا يوجد تفويض!
// لا يوجد تحديد سرعة!
$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+ دولار+
المشكلة:
// يستخدم فقط مفتاح API ثابت، بدون مصادقة JWT
$expectedKey = getenv('PAYMENT_KEY');
$providedKey = $_SERVER['HTTP_PAYMENT_KEY'] ?? '';
if ($providedKey !== $expectedKey) {
// ثم يسمح بأي تعديل أموال دون مساءلة المستخدم!
}
2. الثغرات العالية الأولوية
الثغرة العالية 1: مصادقة ضعيفة بناءً على بصمة الجهاز
الحالة: 🟠 عالي
الملف: backend/login.php، backend/loginJwtDriver.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
التأثير: اعتراض بيانات الموقع وتعديل الركوب
الإصلاح:
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 ساعة التالية)
- ✅ عطّل نقاط نهاية محفظة add/addFromAdmin
- ✅ أنشئ خطة الاستجابة على الحوادث
- ✅ أخطر فريق الأمان والقيادة التنفيذية
- ✅ ابدأ إصحاح المرحلة 1
- ✅ وثّق جميع التغييرات لسجل التدقيق
قصيرة الأجل (الأسابيع 1-2)
- ✅ انشر جميع إصلاحات المرحلة 1
- ✅ طبّق MFA للمصادقة
- ✅ بدّل إلى HTTPS للمقابس
- ✅ دقق جميع استعلامات SQL
- ✅ راجع وحدّث سياسة الخصوصية
متوسطة الأجل (الأسابيع 3-4)
- ✅ أكمل المرحلة 2 و 3
- ✅ طبّق تدريب أمان للمطورين
- ✅ طبّق عملية مراجعة الكود الأمني
- ✅ أنشئ فحص الأمان الآلي
طويلة الأجل (مستمرة)
- ✅ وظّف مهندس أمان
- ✅ طبّق برنامج مكافآت الأخطاء
- ✅ إجراء اختبار الاختراق العادي (ربع سنوي)
- ✅ تدقيق أمان سنوي
7. الخلاصة
يتطلب مشروع سيرو تدخل أمني فوري لمعالجة الثغرات الحرجة. التكلفة المقدرة للإصحاح البالغة 17,000-26,000 دولار أقل بكثير من الخسائر المحتملة:
- المخاطر المالية: 1,000,000 دولار+
- مخاطر البيانات: 50,000+ مستخدم
- غرامات الامتثال: 20,000,000 يورو+
- الضرر اللاحق بالسمعة: لا يقدر بثمن
التوصية: ✅ وافق على خطة الإصحاح وابدأ المرحلة 1 فوراً.
التقرير المُنتج: 16 يونيو 2026
المراجعة التالية: 23 يونيو 2026 (بعد المرحلة 1)