Scroll to top

اختبار اختراق منصة تداول — من واجهة برمجة بلا مصادقة إلى مسؤول مارق

  • Home
  • المشاريع
Penetration testing a trading platform
Network and infrastructure testing

نظرة عامة على المشروع

طلب مني عميل في التقنية المالية (سري) اختبار منصة تداول قبل أن تحمل أموالًا حقيقية: واجهة برمجة GraphQL أساسية، وخدمات .NET التي توجّه الأوامر وتطابقها، والوحدات الداخلية التي يعتمدها المشغّلون لاعتماد المستخدمين وتحريك المراكز. أجريته كاختبار اختراق بالصندوق الرمادي على نسخة إنتاج كاملة. ولم تكن النتيجة قائمة مسائل نظافة — بل سلسلة. فقد كانت استعلامات GraphQL المميزة تُجاب دون أي رمز إطلاقًا. ومسار إنشاء الحساب كان يثق بحقل دور يقدّمه العميل، فينتج تسجيل عادي مسؤولًا فعّالًا. وكانت الحسابات المزروعة تتشارك كلمة مرور واحدة عبر البيئات، وكانت مفاتيح التوقيع وبيانات اعتماد قاعدة البيانات مودَعة في المستودع وما تزال مقروءة داخل صور الحاويات المنشورة، وكانت خدمة استقبال الأوامر تعيد بناء أنواع يتأثر بها المهاجم من جسم رسالة. وأُثبتت كل خطوة بلا إتلاف، وصُنّفت وفق CVSS، ووُثّقت بخطوات إعادة إنتاج دقيقة، وأُعيد اختبارها بعد شحن الإصلاحات.

التحديات

  1. اختبار مسار أوامر بأموال حية دون تنفيذ أي صفقة حقيقية أو تعديلها أو إلغائها إطلاقًا.
  2. تغطية ثلاث بيئات مختلفة تمامًا في نافذة واحدة — واجهة برمجة GraphQL أساسية، وخدمات أوامر بـ.NET، ووحدات المشغّلين.
  3. إثبات تصعيد الصلاحيات من البداية إلى النهاية بدل تسجيل ملاحظة نظرية عن الإسناد الجماعي.
  4. التمييز بين مصادقة غائبة فعلًا وضوابط مفروضة في موضع آخر من سلسلة الطلب.
  5. منح فريق يعمل تحت موعد تنظيمي ترتيبًا للمعالجة يستطيع تنفيذه فعلًا.

المنهج

  1. رسم خريطة مخطط GraphQL عبر الاستبطان وحصر كل محلّل يمكن الوصول إليه دون رمز حامل.
  2. بناء سلسلة التصعيد على نسخة الإنتاج، والتوقف عند الإثبات دون مسّ تدفق الأوامر الحي أبدًا.
  3. تدقيق سجل git وصور الحاويات المنشورة بحثًا عن مفاتيح وبيانات اعتماد وإعدادات متروكة.
  4. تصنيف كل نتيجة وفق CVSS، وإرفاق خطوات إعادة الإنتاج، وتجميع الإصلاحات في ثلاث موجات قابلة للنشر.
  5. إعادة الاختبار بعد المعالجة وتأكيد كسر كل سلسلة كسرًا تامًا، لا مجرد حجبها عند قفزة واحدة.

ما الذي كشفه الاختبار

ما الذي أصلحها

انتقلت المصادقة إلى بوابة واحدة مفروضة بدل إعادة تنفيذها في كل محلّل، وعُطّل الاستبطان خارج بيئة التطوير. وصار إسناد الأدوار من جانب الخادم حصرًا، مع معاملة حمولة التسجيل كمدخلات غير موثوقة. ودُوِّرت كل بيانات اعتماد مزروعة، وأُلغيت المفاتيح المكشوفة وأُعيد إصدارها، وأُعيد بناء صور الحاويات من طبقة نظيفة كي تتوقف القيم القديمة عن الشحن. واستُبدل بمنفذ إلغاء التسلسل قائمة سماح صريحة بالأنواع. وأكدت إعادة الاختبار أن السلسلة لم تعد موجودة عند أي قفزة — واحتفظ الفريق بنمط البوابة في الخدمات التي بناها لاحقًا، وهو ما كان أهم من أي إصلاح منفرد.

النطاق في لمحة