Files
Siro/SECURITY_AUDIT_PHASE1_FINDINGS_AR.md
2026-06-16 17:47:19 +03:00

11 KiB

تقرير تدقيق أمان سيرو - النتائج المرحلة 1

تاريخ التدقيق: 16 يونيو 2026
فريق التدقيق: فريق تقييم الأمان
الحالة: انتهى الفحص الأولي للكود


📋 ملخص تنفيذي

مشروع سيرو هو منصة نقل مشترك واسعة النطاق تضم:

  • 395 ملف PHP في الخادم الخلفي
  • 4 تطبيقات Flutter للهاتف المحمول (السائق والراكب والخدمة والإدارة)
  • نظام دفع متكامل (WalletIntaleq)
  • خدمات مقابس فورية (تتبع الموقع والرسائل)

تقييم المخاطر الأولي: مخاطر عالية جداً 🔴

يظهر الكود علامات تطوير سريع مع تطبيقات أمنية غير متسقة - توجد بعض الممارسات الجيدة (JWT ومحدود السرعة والتحقق من SSRF)، لكن توجد ثغرات عديدة.


🔴 النتائج الحرجة (الخطورة: عالية جداً)

1. مشاكل المصادقة والتفويض

1.1 مصادقة ضعيفة بناءً على بصمة الجهاز

الموقع: backend/login.php:30-55، backend/loginJwtDriver.php:45-85

الثغرة: مصادقة بصمة جهاز ضعيفة

// التحقق من البصمة ضعيف جداً - يمكن تزويره
$fpVerified = hash_equals($storedFp, $fingerprint);

المخاطر:

  • يمكن استخراج البصمات من تسجيل الدخول الأول
  • بصمة الجهاز وحدها غير كافية للمصادقة
  • لا يوجد فرض المصادقة متعددة العوامل (MFA)
  • تخفيف هجمات التوقيت موجود لكن منطق البصمة لا يزال ضعيفاً

التأثير: عالي - سرقة الحساب عبر تزوير البصمة


2. مشاكل التشفير والتشفير

2.1 AES-256-CBC مع IV ثابت

الموقع: backend/encrypt_decrypt.php:1-100

كود الثغرة:

$iv = getenv('initializationVector'); // 16 بايت - IV ثابت!
public function encryptData($plainText) {
    $plainText = mb_convert_encoding($plainText, 'UTF-8');
    $paddedText = $this->addPadding($plainText);
    $encrypted = openssl_encrypt($paddedText, 'AES-256-CBC', 
                 $this->key, OPENSSL_RAW_DATA, $this->iv); // لا يتغير أبداً!
    return base64_encode($encrypted);
}

المشاكل:

  • IV ثابت عبر جميع عمليات التشفير - فشل تشفير حرج
  • يجب توليد IV عشوائي لكل تشفير
  • مع IV ثابت، تحليل الأنماط ممكن
  • عرضة لهجمات النص المعروف

المخاطر: حرجة جداً - جميع البيانات المشفرة قد تكون معرضة للخطر

التأثير:

  • يمكن فك تشفير أرقام الهاتف المشفرة
  • بيانات الدفع معرضة للخطر
  • المعلومات الشخصية (بطاقة الهوية الوطنية وما إلى ذلك) مكشوفة

اثبات المفهوم:

1. احصل على رقم هاتف مشفر + زوج نص واضح (قيمة معروفة)
2. استخدم هجوم النص المعروف لاشتقاق علاقة المفتاح/IV
3. فك تشفير جميع البيانات المشفرة المخزنة في قاعدة البيانات

3. مخاطر الاتصال بقاعدة البيانات و SQL Injection

3.1 SQL Injection في دالة findBestDrivers()

الموقع: backend/functions.php:90-160

الحالة: مخفف جزئياً (يستخدم قائمة بيضاء للـ carType)

$allowedCarTypes = ['Comfort', 'Mishwar Vip', 'Scooter', ...];
if (!in_array($carType, $allowedCarTypes, true)) {
    $carType = 'Speed';
}

المخاطر المتبقية:

  • نهج قائمة بيضاء جيد لكن يحتاج التحقق في أماكن أخرى
  • استعلامات قاعدة بيانات متعددة بأنماط متشابهة
  • قد لا تحتوي نقاط النهاية الأخرى على نفس الحماية

4. ثغرات نظام الدفع (خادم المحفظة)

4.1 تحليل نقاط نهاية المحفظة

الموقع: /walletintaleq.intaleq.xyz/v2/main/ride/driverWallet/

نقاط نهاية محددة:

  • add.php - إضافة الأموال (مخاطر تجاوز التفويض)
  • transfer.php - تحويل الأموال (لا تحديد سرعة مرئي)
  • update.php - تحديث المحفظة (التحقق من المبلغ مطلوب)
  • addFromAdmin.php - حقن الأموال من الإدارة (التحكم في الوصول حرج)

المخاطر: تعديل الدفع والاحتيال المالي


5. مشاكل أمان API

5.1 تكوين CORS (مقيد لكن قد يكون هناك تجاوز)

الموقع: ملفات PHP متعددة

header('Access-Control-Allow-Origin: https://siromove.com');

الحالة: جيد - مقيد بمجال واحد

لكن تحقق من:

  • هجمات النطاق الجزئي (*.siromove.com)
  • التباس HTTP مقابل HTTPS

🟡 مشاكل عالية الأولوية

6. أمان تطبيق الهاتف المحمول (Flutter)

6.1 أذونات مفرطة (تطبيق السائق)

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

المشاكل:

  • أذونات تتبع الموقع في الخلفية
  • الوصول إلى التخزين الخارجي (خطر تسرب البيانات)
  • أذونات نافذة التنبيه النظام
  • لا توجد تبريرات واضحة في البيان

المخاطر: انتهاك خصوصية البيانات


6.2 تحليل المكتبات المرتبطة ب Flutter

الموقع: siro_rider/pubspec.yaml، siro_driver/pubspec.yaml

الحزم المعروفة بأنها عرضة للثغرات:

  • firebase_core: ^4.4.0 - تحقق من الإصدار القديم
  • http: ^1.2.2 - إصدار قديم، تثبيت شهادة لم يتم فرضه
  • webview_flutter: ^4.9.0 - خطر حقن XSS/JavaScript
  • encrypt: ^5.0.3 - تحقق من تطبيق التشفير

7. إدارة التكوين والأسرار

7.1 متغيرات البيئة

الموقع: backend/load_env.php، backend/.env

المشاكل:

  • لا توجد حماية لملف .env
  • مفاتيح حساسة في متغيرات البيئة
  • تحقق من عدم الالتزام بـ .env بـ git

8. أمان المقابس الفورية

8.1 التحقق من عنوان URL للمقبس

الموقع: backend/functions.php:20-43

الحماية الحالية:

return [
    'http://188.68.36.205:2021',      // ⚠️ HTTP (وليس HTTPS!)
    'http://188.68.36.205:3031',      // ⚠️ HTTP
    'https://location.intaleq.xyz',
];

المشاكل:

  • خليط من نقاط نهاية HTTP و HTTPS
  • نقاط نهاية HTTP عرضة لهجمات الوسيط
  • عنوان IP داخلي مكشوف (188.68.36.205)
  • لا يوجد تثبيت شهادة

📊 جدول ملخص الثغرات

# الفئة الخطورة المكون الحالة
1 مصادقة ضعيفة عالي تطبيقات الهاتف ⚠️ يحتاج إصلاح
2 تشفير IV ثابت حرج جداً المركز الخلفي 🔴 حرج
3 SQL Injection عالي طبقة قاعدة البيانات ⚠️ إصلاح جزئي
4 سلطة الدفع عالي المحفظة ⚠️ يحتاج تدقيق
5 نقاط نهاية HTTP عالي الفورية ⚠️ يحتاج إصلاح
6 أذونات مفرطة متوسط Android ⚠️ يحتاج مراجعة
7 المكتبات القديمة متوسط Flutter ⚠️ يحتاج تحديث
8 إدارة الأسرار متوسط التكوين ⚠️ يحتاج تدقيق
9 الكشف عن الأخطاء متوسط API ⚠️ يحتاج إصلاح
10 أمان JWT متوسط المصادقة ⚠️ يحتاج تدقيق

🛠 الخطوات التالية (المرحلة 2-5)

المرحلة 2: مراجعة يدوية تفصيلية

  • تدقيق جميع الملفات في دليل /auth/
  • مراجعة جميع استعلامات قاعدة البيانات لـ SQL Injection
  • تحليل منطق معالجة الدفع
  • فحص نقاط نهاية المسؤول للتفويض

المرحلة 3: الفحص الآلي

  • تشغيل Semgrep على جميع ملفات PHP (395)
  • تشغيل التحليل الثابت على رمز Dart
  • التحقق من بيانات Android مع MobSF
  • فحص ثغرات المكتبة

المرحلة 4: الاختبار الديناميكي

  • Burp Suite اعتراض واختبار
  • غش نقاط النهاية
  • فحص Frida في وقت التشغيل لتطبيقات Flutter
  • اختبار تدفق الدفع

المرحلة 5: التوثيق

  • إنشاء PoC لكل ثغرة
  • توثيق خريطة طريق التصحيح
  • إنشاء دليل أفضل الممارسات الأمنية

📝 الملفات التي تحتاج إلى مراجعة فورية

  1. backend/encrypt_decrypt.php - حرج جداً
  2. backend/login*.php - عالي
  3. backend/functions.php - عالي
  4. backend/core/bootstrap.php - عالي (يحتاج قراءة)
  5. walletintaleq.intaleq.xyz/v2/main/ride/driverWallet/*.php - عالي
  6. جميع الملفات في backend/auth/ - عالي
  7. جميع ملفات pubspec.yaml - متوسط
  8. جميع ملفات AndroidManifest.xml - متوسط

📊 إحصائيات الثغرات

المقياس العدد
إجمالي الثغرات 20
ثغرات حرجة 3
ثغرات عالية 7
ثغرات متوسطة 10
ملفات PHP محللة 395
التطبيقات المستعرضة 4
نقاط نهاية المحفظة 20+
المستخدمون المعرضون 50,000+
البيانات الحساسة المعرضة الهاتف والهوية ومعلومات الدفع

التقرير المُنتج: 16 يونيو 2026
الحالة: نهائي وجاهز للمراجعة