أمن API

كان أمان واجهة برمجة التطبيقات (API) مشكلة وقت التشغيل. ليس بالضرورة أن يكون كذلك.

كل ما pull request إن إضافة أو تغيير نقطة نهاية يُغيّر من نطاق تعرض واجهة برمجة التطبيقات (API) للهجمات. لا تكتشف معظم أدوات أمان واجهات برمجة التطبيقات هذه المشكلة إلا بعد تفعيل نقطة النهاية واستقبالها للبيانات. حينها، لا يقتصر الحل على تغيير سطر واحد في مراجعة الكود، بل يتطلب استجابة شاملة للحادث.

أمان واجهة برمجة التطبيقات هو ممارسة اكتشاف ومعالجة المخاطر في كيفية كشف التطبيق لنقاط النهاية الخاصة به: من يمكنه استدعاؤها، وما هي البيانات التي تعيدها، وما إذا كانت تفعل ما تقوله الوثائق.

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

أربع طرق لاختبار واجهة برمجة التطبيقات، وما الذي تجيب عنه كل طريقة؟

معظم البرامج الناضجة تشغل أكثر من واحد من هذه البرامج:

  • اختبار ثابت يقوم هذا التحليل بتحليل شفرة المصدر ومواصفات واجهة برمجة التطبيقات قبل النشر، ويجيب على سؤال "ما الذي كشفناه للتو؟". هذا هو النهج الذي تركز عليه هذه المقالة.
  • الاختبار الديناميكي (DAST) يرسل بيانات حقيقية إلى واجهة برمجة تطبيقات قيد التشغيل ويراقب كيفية استجابتها. ويجيب على سؤال "ما الذي يمكن الوصول إليه واستغلاله فعليًا في الوقت الحالي؟" 
  • التضبيب يُرسل النظام مدخلات غير صحيحة أو غير متوقعة إلى نقاط النهاية للكشف عن الأعطال وحالات الفشل الاستثنائية. ويجيب على سؤال "ما الذي يتعطل عند إدخال بيانات لم نتوقعها؟"
  • اختبار الاختراق اليدوي يُضيف هذا النظام حكماً بشرياً لاكتشاف الثغرات المنطقية التي تغفل عنها الأدوات الآلية، ويجيب على سؤال: "ما الذي قد يربطه مهاجم ذكي ببعضه؟"

لا يغني أيٌّ من هذه عن الآخر. فهي تجيب على أسئلة مختلفة في مراحل مختلفة من دورة حياة البرنامج، والفجوة التي تعاني منها معظم البرامج هي الأولى.

لماذا تكتشف معظم أدوات أمان واجهات برمجة التطبيقات المخاطر متأخرًا جدًا؟

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

ثمة ثغرة ثانية وراء مشكلة التوقيت هذه. لا تستطيع أدوات وقت التشغيل اختبار إلا ما هو موجود بالفعل. فإذا لم يتم توثيق نقطة نهاية، أو إذا أصبحت مواصفات OpenAPI قديمة بمجرد إضافة مسار جديد، فلن يتمكن الماسح الضوئي لوقت التشغيل من معرفة وجودها. فهو يختبر الخريطة، لا الموقع الفعلي.

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

ما الذي يعنيه أمان واجهة برمجة التطبيقات الثابتة فعليًا

يقوم Xygeni ببناء مخزون واجهة برمجة التطبيقات (API) الخاص بك من مصدرين: شفرة المصدر لتطبيقك ومواصفات واجهة برمجة التطبيقات الخاصة بك، بما في ذلك OpenAPI و Swagger.

يُظهر جرد المواصفات فقط نقاط النهاية التي تم توثيقها. أما جرد التعليمات البرمجية فقط فيُظهر ما هو موجود، ولكن ليس بالضرورة كيفية استخدامه. قراءة كلا النوعين من الجرد تُعطيك الصورة الكاملة: نقاط النهاية التي وثّقتها فرقك، وتلك التي لم يوثّقها أحد.

هذا المخزون هو الأساس الذي يبني عليه كل شيء آخر:

  • إجمالي واجهات برمجة التطبيقات المكتشفة، والأصول المعرضة للخطر مقارنةً بالخط الأساسي
  • نقاط النهاية مصنفة حسب طريقة HTTP
  • المشكلات مصنفة حسب الخدمة
  • كل نقطة نهاية مع طريقتها ومسارها وخدمتها ووحدتها وحالة المصادقة ودرجة المخاطر الخاصة بها

يستطيع قادة الهندسة لديك رؤية شكل واجهة برمجة التطبيقات الخاصة بك دون الحاجة إلى فتح تذكرة واحدة.

تم بناء كل نقطة نهاية وجدتها Xygeni، مع طريقتها وحالة المصادقة ودرجة المخاطر الخاصة بها، من التعليمات البرمجية والمواصفات معًا.

Production note قم باقتصاص لوحة الفرز الآلي من أي لقطة شاشة لأمان واجهة برمجة التطبيقات.

تمت مطابقتها مع قائمة OWASP لأهم 10 مخاطر أمنية في واجهات برمجة التطبيقات

تؤكد النتائج على الإطار الذي تستخدمه فرق الأمن ومدققو الحسابات لديك بالفعل. يكشف Xygeni عن المخاطر عبر معيار OWASP لأمن واجهات برمجة التطبيقات (API). أفضل 10 (2023):

OWASP المخاطرة المالية ما يعنيه ذلك عملياً
API1 تفويض مستوى الكائن المكسور تقوم نقطة النهاية بإرجاع أو تعديل البيانات التي تخص مستخدمًا أو مستأجرًا آخر
API2 نقاط نهاية غير موثقة يمكن الوصول إلى المسار بدون أي مصادقة على الإطلاق
API3 التعرض المفرط للبيانات تُعيد الاستجابة حقولاً أكثر مما يحتاجه المتصل أو ينبغي أن يراها
API3 مهمة جماعية تقبل نقطة النهاية وتطبق حقولًا لم يكن من المفترض أن تقبلها أبدًا
API3 / API10 البيانات الحساسة في الردود تصل معلومات التعريف الشخصية (PII) أو معلومات بطاقات الدفع (PCI) أو معلومات الصحة المحمية (PHI) إلى العميل من نقطة نهاية لا ينبغي لها إرسالها.
API4 حدود معدل غير موجودة لا توجد حماية لنقطة النهاية ضد إساءة الاستخدام أو هجمات القوة الغاشمة
API5 خلل في تفويض مستوى الوظيفة يقوم أحد نقاط النهاية بتنفيذ إجراء ذي امتيازات دون التحقق من أن المتصل مسموح له بذلك.
API7 SSRF يمكن خداع واجهة برمجة التطبيقات (API) لإرسال طلبات نيابة عن المهاجم.
API8 سوء تكوين JWT تم إعداد التحقق من صحة الرمز المميز أو توقيعه أو انتهاء صلاحيته بشكل غير صحيح.
API8 سوء تكوين CORS قواعد الوصول من مصادر مختلفة متساهلة بما يكفي لاستغلالها.
API9 نقاط نهاية الزومبي والأيتام الطرق المهملة أو المنسية التي لا تزال قابلة للوصول، والطرق التي لا يملكها أحد

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

ليست كل النتائج متساوية: حساسية البيانات والتركيبات السامة

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

يقوم Xygeni بتصنيف البيانات التي تتعامل معها كل نقطة نهاية، مع وضع علامات على PII و PCI و PHI في معلمات الطلب وفي الاستجابات، ويربط ذلك بحالة مصادقة نقطة النهاية.

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

نقاط النهاية الزومبي واليتيمة: الانحراف بين الكود والمواصفات

لأن برنامج Xygeni يقرأ الكود الخاص بك ومواصفات واجهة برمجة التطبيقات (API) جنبًا إلى جنب، فإنه يحدد مواطن الاختلاف بينهما. ويظهر هذا الاختلاف في ثلاثة أنماط واضحة:

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

لا يظهر أي من هذه العناصر في قائمة الجرد الخاصة بالمواصفات فقط، لأن المواصفات هي بالضبط ما ينقصها.

دليل يمكنك اتخاذ إجراء بناءً عليه، وليس مجرد استدعاء للتحقيق.

تشير كل نتيجة إلى المعالج المسؤول تحديدًا: الملف، والفئة، والطريقة، والسطر المحدد الذي تسبب في الثغرة، مع عرض الكود المخالف بجانبه. ويُرفق بكل نتيجة مستوى خطورتها، وتصنيفها ضمن قائمة OWASP لأهم عشرة مخاطر أمنية في واجهات برمجة التطبيقات، ومؤشر CWE الخاص بها، وحالة مصادقة نقطة النهاية، وتصنيف حساسية البيانات المعنية.

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

يتم تصدير النتائج بصيغ JSON وCSV وMarkdown وSARIF 2.1.0، بحيث يتم تحميلها في tالأدوات التي تعمل بها فرقك بالفعل. 

المعالج، والسطر، والرمز البرمجي الذي تسبب في هذا الكشف. لا داعي للتحقيق في هذه المشكلة.

لماذا يقتصر هذا على منصة واحدة، وليس على جهاز ألعاب آخر؟

تتولى شركة Xygeni إدارة أمان واجهة برمجة التطبيقات (API) إلى جانب SAST, SCA, أسرار الأمن, IaC و دست داخل منصة واحدة، مرتبطة من خلال ASPMبدلاً من شحنها كأداة منفصلة بميزاتها الخاصة login وتراكم أعمالها الخاصة.

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

بتقسيم ذلك على منصتين، يصبح الخطر المرتبط قائمتين متراكمتين منفصلتين. لا أحد يوفق بينهما، ونقطة النهاية غير الموثقة وغير المصادق عليها لا تظهر في أي من القائمتين.

اطلع على نطاق هجوم واجهة برمجة التطبيقات (API) الحقيقية لديك. تتوفر خدمة أمان واجهة برمجة التطبيقات (API) كـ Enterprise إضافة إلى منصة Xygeni، ويتم إجراء فحص على مستودعاتك الخاصة داخل بنيتك التحتية الخاصة.

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

هل يمكنه تحديد نقاط النهاية التي تتعامل مع البيانات الحساسة؟

نعم. يقوم Xygeni بتحديد PII و PCI و PHI في معلمات نقطة النهاية والاستجابات، ويستخدم هذا التصنيف لترتيب النتائج حسب التعرض الحقيقي.

هل يمكن تشغيله على كل pull request?

نعم. يقوم المسح التدريجي بتحليل نقاط النهاية التي تغيرت فقط، ويمكن للبيان الذي ينتجه أن يركز عملية مسح DAST اللاحقة على نقاط النهاية نفسها، لذلك يظل الاختبار الثابت واختبار وقت التشغيل متوافقين مع ما تم نقله بالفعل.

هل يخرج الكود الخاص بي من بيئتي؟

لا. تتم عمليات الفحص في بنيتك التحتية الخاصة. يتم تحميل النتائج فقط، وهي محمية أثناء النقل وأثناء التخزين.

كيف أحصل على ميزة أمان واجهة برمجة التطبيقات (API)؟

تتوفر خدمة أمان واجهة برمجة التطبيقات (API) كـ Enterprise إضافة. اطلب نموذجًا أوليًا وسيتم تحديد نطاقه معك.

أدوات تحليل التركيبات البرمجية sca
إعطاء الأولوية للمخاطر التي تتعرض لها برامجك، ومعالجتها، وتأمينها
احصل على حسابك المجاني.
أي بطاقة ائتمان.

قم بتأمين تطوير البرامج الخاصة بك وتسليمها

مع مجموعة منتجات Xygeni