التقييم الأمني واختبار الاختراق لـ API

باستخدام OWASP API Security Top 10، نحدّد ونقيّم ثغرات REST API وGraphQL بما في ذلك BOLA/IDOR، والمصادقة المكسورة، وكشف البيانات، وعيوب تحديد المعدّل.

OWASP API Top 10OWASP ASVSREST & GraphQLCVSS Scoring
OpenAPI
مراجعة المواصفات
10 من 10
مخاطر OWASP API Top 10
286
ضوابط OWASP ASVS
4
منهجيات مرجعية

تغطية كاملة لـ OWASP API Security Top 10 (2023)

تغطّي اختباراتنا جميع مخاطر OWASP الأمنية العشرة الكبرى لواجهات API

API1

التخويل المكسور على مستوى الكائن

API2

المصادقة المكسورة

API3

التخويل المكسور على مستوى خاصية الكائن

API4

الاستهلاك غير المقيَّد للموارد

API5

التخويل المكسور على مستوى الوظائف

API6

الوصول غير المقيَّد إلى تدفّقات العمل الحسّاسة

API7

تزوير الطلبات من جهة الخادم

API8

سوء الإعداد الأمني

API9

الإدارة غير السليمة للجرد

API10

الاستهلاك غير الآمن لواجهات API

لماذا يهمّ أمن API؟

واجهات API قلب التطبيقات الحديثة وتوفّر وصولاً مباشراً إلى البيانات الحساسة

واجهات API في كل مكان

تعتمد التطبيقات الحديثة اعتماداً كبيراً على واجهات API. فتطبيقات الجوال، وتطبيقات الصفحة الواحدة، والخدمات المصغّرة، وأجهزة إنترنت الأشياء تتواصل جميعها عبر API، ما يجعلها أهدافاً حرجة للهجوم.

وصول مباشر إلى البيانات

توفّر واجهات API وصولاً مباشراً إلى بيانات الخلفية ومنطق العمل. ويمكن لثغرة واحدة أن تكشف ملايين السجلّات أو تتيح إجراءات غير مصرَّح بها.

مخاطر BOLA/IDOR

التخويل المكسور على مستوى الكائن (BOLA) هو المخاطرة الأولى في API. ويستطيع المهاجمون الوصول إلى بيانات مستخدمين آخرين بالتلاعب بمعرّفات الكائنات في طلبات API.

سطح هجوم خفيّ

كثيراً ما تكشف واجهات API نقاط نهاية غير موثَّقة، أو ميزات تصحيح، أو إصدارات قديمة. وهذه النقاط الخفية تُستهدَف من المهاجمين كثيراً.

تغطية أنواع API

اختبارات متخصّصة لـ REST API وGraphQL

REST API
  • المصادقة والتخويل
  • اختبار BOLA/IDOR
  • Rate Limiting وThrottling
  • Input Validation
  • Mass Assignment
  • تسرّب البيانات الحساسة
  • HTTP Method Tampering
  • CORS Configuration
GraphQL
  • Introspection Security
  • Query Depth Limiting
  • Query Complexity Analysis
  • Field-level Authorization
  • Batching Attacks
  • Alias-based DoS
  • الحقن في Queries
  • Schema Exposure

ما الذي نختبره؟

تغطية شاملة لكل جوانب أمن API بناءً على OWASP API Security Top 10

المصادقة
كيف يُثبِت المُستدعي هويته، وماذا يحدث حين يكون ذلك الإثبات قديماً أو منسوخاً أو مزوَّراً.
  • JWT Security
  • OAuth 2.0 Flows
  • API Keys
  • Token Expiration
  • Refresh Token Security
التخويل على مستوى الكائن
الأول في OWASP API Top 10. يُختبَر بحسابين في المستوى نفسه، لأن حساباً واحداً لا يُظهِر ما إذا كان يصل إلى بيانات حساب آخر.
  • BOLA / IDOR
  • Predictable identifiers
  • Ownership checks
  • Nested resources
التخويل على مستوى الوظائف والخصائص
هل يستطيع مُستدعٍ منخفض الامتياز الوصول إلى عملية إدارية، وهل يستطيع كتابة حقل ينبغي أن يقرأه فقط.
  • Admin endpoints
  • HTTP method tampering
  • Mass assignment
  • Read-only field writes
التحقق من المدخلات
كل موضع تصل فيه قيمة من الطلب إلى مفسّر أو مُحلِّل أو مسار ملف.
  • SQL / NoSQL injection
  • Command injection
  • XXE
  • Deserialization
  • Parameter pollution
استهلاك الموارد
ما الذي يمكن لمُستدعٍ واحد أن يجعل الخدمة تنفقه: المعالج، والذاكرة، وتكلفة الأطراف الثالثة، والرسائل التي تُرسَل نيابةً عنكم.
  • Rate limit bypass
  • Oversized payloads
  • Expensive queries
  • Costly third-party calls
تدفّقات العمل الحسّاسة
قد تكون العملية صحيحة تماماً ومع ذلك قابلة للإساءة حين تُؤتمَت: الشراء بالجملة، والحجز بالجملة، والتسجيل بالجملة.
  • Automation abuse
  • Workflow step skipping
  • Race conditions
  • Business limits
تزوير الطلبات من جهة الخادم
حيث تجلب API عنواناً قدّمه المُستدعي، وما الذي يمكن أن تصل إليه من داخل شبكتكم حين تفعل ذلك.
  • URL parameters
  • Webhooks
  • Import from link
  • Cloud metadata endpoints
كشف البيانات
ما الذي تحمله الاستجابة بما يتجاوز ما تُظهِره الشاشة، وما الذي تكشفه الأخطاء عن داخل النظام.
  • Excessive data in responses
  • Error and stack traces
  • Debug endpoints
  • Sensitive headers
الإعداد
الإعدادات المحيطة بـ API لا كوده: من يجوز له استدعاؤها، ومن أين، وعبر ماذا، وبأي طرق.
  • CORS policy
  • TLS configuration
  • HTTP headers
  • Verb tampering
  • Documentation exposure
الجرد وواجهات API من أطراف ثالثة
الإصدارات القديمة التي لا تزال تستجيب، ومضيفات الاختبار المتاحة من الخارج، وواجهات API التي تثق بها واجهتكم دون تحقّق.
  • Deprecated versions
  • Undocumented endpoints
  • Non-production hosts
  • Unvalidated upstream responses

بمَ يبدأ الاختبار؟

كلما عرف الفريق أبكر ما هو موجود، ذهب وقت أكثر إلى اختباره.

دون مواصفات
اكتشاف نقاط النهاية من الخارج

الأقرب إلى مهاجم خارجي، والسبيل الوحيد لمعرفة ما يمكن الوصول إليه دون أن يكون موثَّقاً. ويُنفَق فيه وقت على الاكتشاف كان يمكن أن يذهب إلى الاختبار.

المواصفات وبيانات الاعتماد
OpenAPI أو مجموعة طلبات، مع حساب لكل دور

الخيار المعتاد. التغطية أوسع بكثير في الوقت نفسه، ويمكن اختبار التخويل كما يجب لأن هناك عدة مُستدعِين للمقارنة.

المواصفات وبيانات الاعتماد والكود
كل ما سبق، إضافةً إلى الكود

للمنطق الذي لا يمكن استنتاجه من الخارج، ولتأكيد ما إذا كان فحص التخويل موجوداً أصلاً بدلاً من التخمين من الاستجابات.

نطاق التقييم وما نحتاجه منكم

تعتمد جودة النتيجة أكثر من أي شيء على جاهزية هذه الأمور القليلة.

مواصفات، أو الطلبات نفسها

ملف OpenAPI أو Swagger، أو مجموعة Postman، أو عيّنة من حركة الطلبات الحقيقية. وبدون إحداها تذهب الأيام الأولى إلى اكتشاف ما هو موجود.

حسابان في كل مستوى

التخويل على مستوى الكائن هو الأول في OWASP API Top 10 ولا يمكن اختباره بحساب واحد. حسابان متناظران لكل دور، وحساب واحد لكل مستوى امتياز.

بيئة تحتمل الحِمل

اختبار حدود الموارد يعني إرسال حركة طلبات تبدو مُسيئة. وعلى بيئة الإنتاج يحتاج ذلك إلى ساعات متَّفق عليها؛ وعلى بيئة الاختبار يحتاج إلى بيانات تشبه الحقيقية.

بوّابة تسمح لنا بالمرور

حيث تحدّ بوّابة API أو WAF من المعدّل حسب العنوان، تُسمَح عناويننا بالمرور لجزء من الاختبار، بحيث يكون المقيس هو API لا البوّابة.

جهة لإرسال نتيجة حرجة

جهة اتصال مسمّاة في كلا الطرفين. ونقطة نهاية إدارية مكشوفة يُبلَّغ عنها في يوم اكتشافها، لا في التقرير النهائي.

كيف تُحدَّد خطورة كل نتيجة

رقم لا منهجية وراءه لا يساعد أحداً على تقرير ما يُصلَح أولاً.

CVSS v3.1 هو نقطة البداية

تُسجَّل كل نتيجة بـ CVSS v3.1، فتوجد لغة مشتركة مع مهندسيكم ومع الأدوات التي تستخدمونها أصلاً.

ثم ما تصل إليه نقطة النهاية

نقطة الضعف نفسها على نقطة نهاية للبحث وعلى أخرى تنقل الأموال ليستا النتيجة ذاتها. تُعدَّل الدرجة الأساسية بحسب البيانات والإجراء وراءها.

مُثبَت لا مفترَض

تأتي كل نتيجة مع الطلب والاستجابة اللذين يُظهِرانها. وما لا يمكن إعادة إنتاجه لا يُبلَّغ عنه بوصفه نتيجة مؤكَّدة.

ترتيب للإصلاح

يقترح التقرير تسلسلاً: ما يُصلَح قبل الإصدار التالي، وما يمكن أن ينتظر الإصدار الذي يليه.

عمليتنا

نهجنا المنظَّم لتقييم أمن API

1
اكتشاف API

نرسم خريطة جميع نقاط نهاية API باستخدام الوثائق وتحليل حركة الطلبات والـ fuzzing. ونحدّد نقاط النهاية الخفية، والإصدارات المهمَلة، والميزات غير الموثَّقة.

2
المسح الآلي

باستخدام أدوات متخصّصة لأمن API، نجري اختباراً آلياً للثغرات الشائعة وتحديد المعدّل ومشكلات المصادقة.

3
الاختبار اليدوي

اختبار يدوي خبير لعيوب منطق العمل، وBOLA/IDOR، وتجاوز التخويل، وسلاسل الهجوم المعقّدة التي تفوت الأدوات الآلية.

4
إعداد التقارير وإعادة الاختبار

تقرير مفصّل بدرجات CVSS، ومعالجة خاصة بـ API، ومجموعات Postman/Swagger، وإعادة اختبار مجانية بعد الإصلاحات.

مخرجات المشروع

تقارير شاملة وقابلة للتنفيذ للفرق التقنية والإدارية

الملخّص التنفيذي

ما الذي اختُبر، وما الذي وُجد، وماذا يعني ذلك للعمل، بلغة يستطيع قارئ غير تقني التصرّف بناءً عليها.

التقرير التقني

كل نتيجة مع درجة CVSS v3.1، والطلب والاستجابة بالضبط اللذين يُظهِرانها، ونقطة النهاية والطريقة المتأثّرة.

مجموعة API

مجموعة Postman من الطلبات التي تعيد إنتاج كل نتيجة، حتى يتمكّن مهندسوكم من تأكيد الإصلاح دون انتظارنا.

إعادة اختبار مجانية

بعد الإصلاح، تُعاد اختبار كل نتيجة فإمّا يُؤكَّد إغلاقها أو تُعاد فتحها مع بيان ما لا يزال يعمل، ويُحدَّث التقرير.

الأسئلة الشائعة

ما أنواع واجهات API التي تختبرونها؟
ما هو BOLA ولماذا هو المخاطرة الأولى في API؟
بمَ يختلف اختبار أمن GraphQL عن اختبار REST API؟
هل تحتاجون إلى وثائق API لإجراء الاختبار؟
كم يستغرق تقييم أمن API؟
ما الأدوات التي تستخدمونها لاختبار أمن API؟
هل يمكنكم اختبار واجهات API ذات مصادقة معقّدة مثل OAuth 2.0؟
ما المخرجات التي سنتسلّمها بعد تقييم API؟
هل تختبرون واجهات API الداخلية/المصغّرة؟
كم تبلغ تكلفة اختبار اختراق API؟
هل تحتاجون إلى مواصفة OpenAPI لدينا؟
لماذا تطلبون حسابين في المستوى نفسه؟
لدينا بوّابة API مع تحديد للمعدّل. هل يكفي ذلك؟
هل يمكن تشغيل هذا على بيئة الإنتاج؟
هل واجهات API لديكم آمنة؟
تواصلوا مع فريقنا المتخصّص لإجراء تقييم أمني شامل لواجهات API لديكم