أبحاث الثغرات · دراسة معمّقة

⁦Magical 2FA Bypass⁩: عاملان في واجهة المستخدم، وعامل واحد في واجهة API

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

الفئة
⁦CWE-287 · CWE-304⁩
درجة الخطورة
⁦CVSS 3.1⁩: 7.4 (عالية)
الشرط المسبق
كلمة مرور صالحة للضحية
الأثر
الاستيلاء الكامل على الحساب
في لمحة

لم يكن العامل الثاني موجودًا إلا في واجهة المستخدم

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

  • 01

    ما الذي يحدث

    تتحقق نقطة نهاية تسجيل الدخول من اسم المستخدم وكلمة المرور، وتُصدر فورًا رمز جلسة بصلاحيات كاملة. أما كون رمز TOTP لا يزال مفقودًا، فلا يرد إلا في صورة إشارة ضمن الاستجابة نفسها.

  • 02

    ما الذي يحتاجه المهاجم

    اسم المستخدم وكلمة المرور الخاصان بالضحية، مثلًا من التصيّد الاحتيالي أو تسريبات البيانات أو حشو بيانات الاعتماد (Credential Stuffing). أما الهاتف الذكي للضحية أو تطبيق المصادقة لديه فلا يحتاج إليهما.

  • 03

    ما الذي يحققه المهاجم

    جميع صلاحيات حساب الضحية. وفي الحالة المختبَرة كان للحساب الدور ⁦workspace_admin⁩: إذ كان بإمكان المهاجم تصدير بيانات المستأجر، وتغيير بيانات الفوترة، وتعديل بيانات الملف الشخصي، وإعادة توليد مفاتيح الأمان.

  • 04

    كيف يُصنَّف

    بوصفه ⁦Improper Authentication (CWE-287)⁩ و⁦Missing Critical Step in Authentication (CWE-304)⁩. ويُعرف النمط الكامن وراءه باسم ⁦Client-Side Enforcement of Server-Side Security (CWE-602)⁩.

درجة الخطورة وفق ⁦CVSS 3.1⁩

7.4عالية

المتجهCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N (يفتح موقعًا خارجيًا)

قُيّم تعقيد الهجوم (Attack Complexity) بأنه عالٍ، لأن على المهاجم أولًا الحصول على كلمة مرور الضحية؛ وتذكر مواصفة CVSS الحصول على مثل هذه الأسرار مثالًا على التعقيد العالي. ولا يحتاج المهاجم إلى أي صلاحيات خاصة به، لأن كلمة المرور وحدها لا ينبغي أن تفتح شيئًا من دون العامل الثاني. أما كل ما عدا ذلك فينجح عبر الشبكة، من دون أي تدخل من الضحية.

CWE-287 (يفتح موقعًا خارجيًا)CWE-304 (يفتح موقعًا خارجيًا)

99.22%

انخفاض في خطر الاختراق: هذا ما حققته المصادقة متعددة العوامل (MFA) في تحليل لحسابات في Microsoft Azure Active Directory. وتجاوزٌ كهذا يُعطّل هذه الحماية بالذات.

How effective is multifactor authentication at deterring cyberattacks? (مايو 2023) (يفتح موقعًا خارجيًا)

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

النمط

أين كان ينبغي أن يجري الفحص

تتواصل تطبيقات الصفحة الواحدة وتطبيقات الهاتف المحمول مع النظام الخلفي (Backend) عبر واجهات API من نوع REST أو GraphQL. ويصبح الأمر خطيرًا حين يُترك جزء من التحكم في الوصول لمنطق العميل.

النمط المرصود

  1. العميليرسل اسم المستخدم وكلمة المرور إلى نقطة نهاية تسجيل الدخول.
  2. الخادميردّ برمز الجلسة الكامل مع إشارة إلى أن العامل الثاني لا يزال مفقودًا.auth_token (scope: admin_access) + "two_factor_required": true
  3. واجهة الويبتقرأ الإشارة، وتعرض حقل إدخال رمز التحقق المكوّن من ستة أرقام، وتنتظر.
  4. المهاجميتجاهل حقل الإدخال ويستخدم رمز الجلسة مباشرةً ضد واجهة API.وصول من دون العامل الثاني

لم يكن اشتراط العامل الثاني ساريًا إلا في طبقة العرض، لا في البروتوكول.

النمط الآمن

  1. العميليرسل اسم المستخدم وكلمة المرور إلى نقطة نهاية تسجيل الدخول.
  2. الخادميردّ برمز تحدٍّ قصير العمر فقط، لا يصلح إلا لفحص رمز التحقق.challenge_token (scope: auth:mfa_challenge, 300 s)
  3. العميليرسل رمز TOTP مع رمز التحدي.
  4. الخادميفحص رمز التحقق، ولا يُصدر رمز الجلسة بكامل نطاقه إلا عندئذٍ.auth_token (scope: user:authenticated)

من دون رمز تحقق صالح، لا يوجد أي رمز (Token) يمكن الاستفادة منه.

تصرّف المتصفح على النحو الصحيح: فقد احترم العلامة (Flag) ومنع التنقل. لكن لأن الخادم أصدر رمز الجلسة في الوقت نفسه، باتت فاعلية الحماية بأكملها متوقفة على أن يلتزم كل عميل بذلك طوعًا.

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

مسار الهجوم في أربع خطوات

الطلبات والاستجابات مُموَّهة، أما التدفق والمحتوى فمطابقان للنتيجة.

حساب مفعَّل فيه TOTP

كانت المصادقة الثنائية عبر TOTP مفعّلة في إعدادات الأمان للحساب المستهدف. وأكّدت محاولات تسجيل الدخول في المتصفح ذلك: فمن دون الرمز المكوّن من ستة أرقام لم تُتح واجهة المستخدم أي شيء.

لا تُعيدوا تنفيذ ذلك إلا على أنظمتكم الخاصة أو بتصريح كتابي من مشغّل النظام.

السبب الجذري

خطآن في التصميم، ونتيجة واحدة

لا يكمن الخلل في سطر شيفرة واحد، بل في طريقة تصميم تدفق تسجيل الدخول.

1

فخ الاعتماد على العميل

افترض النظام الخلفي (Backend) أن كل استدعاء يمرّ عبر واجهة المستخدم المخصّصة له، وأن هذه الواجهة توقف التدفق حالما تحمل ⁦two_factor_required⁩ القيمة true. أما المهاجم فيكتب ببساطة عميله الخاص.

2

غياب رمز تحدٍّ قصير العمر

لم تفصل خدمة المصادقة بين مرحلة «تم التحقق من كلمة المرور» ومرحلة «تم منح الجلسة». ولا يجوز أن ينشأ رمز جلسة صالح للاستخدام الفعلي إلا بعد فحص جميع العوامل.

لماذا لا يلفت الخلل الانتباه في الاستخدام اليومي

بالنسبة إلى المستخدمين يعمل كل شيء كما هو مقصود، وكل استجابة هي ⁦200 OK⁩ عادية لا تثير الريبة. ولا يظهر الخلل إلا عندما يستدعي أحدهم نقطة النهاية من دون واجهة المستخدم ويقرأ الاستجابة حقلًا حقلًا.

المعالجة

هكذا تسدّون الثغرة

يعالج الإجراء الأول السبب الجذري. ويضمن الإجراءان الآخران ألّا يعود الخلل في أي موضع آخر.

  1. 01

    تسجيل دخول على مرحلتين مع رمز تحدٍّ قصير العمر

    عند تفعيل العامل الثاني، لا تُصدر نقطة نهاية تسجيل الدخول سوى رمز تحدٍّ: قصير العمر (نحو خمس دقائق)، وصالح للاستخدام مرة واحدة، ومرتبط بالحساب وبعملية تسجيل الدخول، ولا يصلح إلا لفحص رمز التحقق. ولا يُنشأ رمز الجلسة إلا في الخطوة الثانية.

    تدفق على مرحلتين
    POST /api/v5/login{ "username": "…", "password": "…" }→ 200 { "data": { "challenge_token": "ct_…", "scope": "auth:mfa_challenge", "expires_in": 300 } }POST /api/v5/login/verify-2fa{ "challenge_token": "ct_…", "totp_code": "123456" }→ 200 { "data": { "auth_token": "eyJ…", "scope": "user:authenticated" } }
  2. 02

    الفرض في البوابة والبرمجيات الوسيطة

    تتحقق بوابة API (API Gateway) أو البرمجيات الوسيطة (Middleware) عند كل نقطة دخول من مطالبات الرمز (Claims). ولا تقبل المسارات المحمية إلا الرموز ذات النطاق ⁦user:authenticated⁩، أما رمز التحدي (⁦auth:mfa_challenge⁩) فيتلقى فيها الرد 401 أو 403. وإذا سجّل رمز الجلسة أيضًا العوامل التي جرى فحصها، مثلًا في مطالبة amr، أمكن لكل خدمة التحقق من ذلك بنفسها.

    البرمجيات الوسيطة أمام المسارات المحمية
    if (!String(token.scope ?? '').split(' ').includes('user:authenticated')) {  return res.status(401).end()}const user = await users.findById(token.sub)if (user.mfaEnabled && !token.amr?.includes('otp')) {  return res.status(403).end()}
  3. 03

    اختبارات انحدار مؤتمتة

    تُجري الاختبارات الشاملة (⁦End-to-End⁩) تسجيل الدخول لحساب مفعَّل فيه العامل الثاني عبر عميل HTTP خام وعلى كل مسار لتسجيل الدخول، وتتحقق من أنه لا يمكن الوصول إلى أي نقطة نهاية محمية من دون رمز التحقق. وهكذا يُكتشف أي تراجع عند الإصدار التالي، لا عند المهاجم التالي.

    اختبار انحدار (pytest)
    LOGIN_PATHS = ["/api/v5/login", "/api/v4/login"]  # every login route, incl. legacy versions@pytest.mark.parametrize("path", LOGIN_PATHS)def test_login_without_second_factor_yields_no_session(client, mfa_user, path):    r = client.post(path, json=mfa_user.credentials)    assert r.status_code == 200    data = r.json()["data"]    assert set(data) <= {"challenge_token", "scope", "expires_in"}    assert data["scope"] == "auth:mfa_challenge"    p = client.get("/api/v5/users/me/profile", headers={"Authorization": "Token " + data["challenge_token"]})    assert p.status_code in (401, 403)

تحصين إضافي

  • معاملة جميع مسارات تسجيل الدخول بالطريقة نفسهاتحتاج إصدارات API الأقدم وتطبيقات الهاتف المحمول وSSO وتجديد الرموز وإعادة تعيين كلمة المرور إلى الفحص نفسه. وتذكر توصيات OWASP بشأن MFA صراحةً واجهات API المنفصلة التي يمكن للمستخدمين تسجيل الدخول عبرها.
  • تقييد محاولات إدخال رمز التحققتمنع الحدود الصارمة للمحاولات الفاشلة في فحص رمز التحقق تخمينَ رمز مكوّن من ستة أرقام بالقوة الغاشمة.
  • إحكام قيود رموز التحديإبطالها بعد فحص ناجح أو بعد محاولات فاشلة قليلة، وعدم قبولها أبدًا بديلًا عن رمز الجلسة.
  • تدوين التدفقات غير المعتادة في السجلاتإن نجاح التحقق من كلمة المرور من دون فحص لاحق لرمز التحقق، ثم الوصول بعد ذلك إلى نقاط نهاية حساسة، إشارة قوية للمراقبة ولمركز SOC.
  • اختبار نقاط النهاية بمعزل عن واجهة المستخدمينبغي لاختبارات الاختراق واختبارات أمن API فحص نقاط نهاية المصادقة من دون واجهة المستخدم، وتفحّص كل استجابة بحثًا عن رموز صدرت قبل أوانها.

المراجع: Multifactor Authentication Cheat Sheet (يفتح موقعًا خارجيًا) · SP 800-63B-4, Digital Identity Guidelines: Authentication and Authenticator Management (يوليو 2025) (يفتح موقعًا خارجيًا) · RFC 6238: TOTP: Time-Based One-Time Password Algorithm (مايو 2011) (يفتح موقعًا خارجيًا) · RFC 8176: Authentication Method Reference Values (يونيو 2017) (يفتح موقعًا خارجيًا)

الفحص الذاتي

هل واجهة API لديكم متأثرة؟

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

  1. 01عند تفعيل العامل الثاني، هل تُعيد نقطة نهاية تسجيل الدخول لديكم رمز تحدٍّ قصير العمر حصرًا؟
  2. 02هل يرفض كل مسار محمي أي رمز صدر من دون إتمام العامل الثاني، بإرجاع 401 أو 403؟
  3. 03هل يسجّل رمز الجلسة، على نحو قابل للتحقق، العوامل التي جرى فحصها، مثلًا في مطالبة amr؟
  4. 04هل تسري القواعد نفسها على جميع مسارات تسجيل الدخول: إصدارات API الأقدم، وتطبيقات الهاتف المحمول، وSSO، وتجديد الرموز، وإعادة تعيين كلمة المرور؟
  5. 05هل رمز التحدي صالح للاستخدام مرة واحدة فقط، ومرتبط بالحساب وبعملية تسجيل الدخول، وتنتهي صلاحيته بعد دقائق قليلة؟
  6. 06هل تقيّدون المحاولات الفاشلة عند إدخال رمز التحقق؟
  7. 07هل توجد اختبارات مؤتمتة تُجري تسجيل الدخول عبر عميل HTTP خام من دون العامل الثاني؟
  8. 08هل سبق أن اختُبرت نقاط نهاية المصادقة لديكم بمعزل عن غيرها، أي من دون واجهة المستخدم؟

تمت الإجابة: 0/8

النتيجة للاسترشاد فقط، وليست دليل إثبات للتدقيق.

منظور GRC والتدقيق

حين لا تعمل MFA إلا على الورق

تشترط أطر تنظيمية كثيرة المصادقة متعددة العوامل أو ضوابط وصول قوية. وتجاوزٌ كهذا يعني أن الضابط موثَّق، لكنه غير فعّال.

⁦NIS2⁩ وقانون BSI الألماني

يذكر توجيه ⁦NIS2⁩ صراحةً حلول المصادقة متعددة العوامل ضمن تدابير إدارة مخاطر الأمن السيبراني، وينقل قانون BSI الألماني (BSIG) ذلك إلى القانون الألماني. وأي مصادقة متعددة العوامل يمكن تجاوزها عبر واجهة API لا تحقق هذا الغرض.

التوجيه ⁦(EU) 2022/2555⁩ (⁦NIS2⁩) (ديسمبر 2022) (يفتح موقعًا خارجيًا) · قانون BSI الألماني (BSIG)، تدابير إدارة المخاطر (يفتح موقعًا خارجيًا)

تطبيق ⁦NIS2⁩

⁦ISO/IEC 27001⁩

يشترط الضابط «المصادقة الآمنة» (Secure authentication) إجراءات مصادقة آمنة، ويجب على نظام ISMS أن يقيّم فعالية ضوابطه. لذلك ينبغي لعمليات التدقيق أن تتناول أيضًا تدفق تسجيل الدخول في واجهة API، لا إعدادات واجهة المستخدم فحسب.

ISMS وفق ⁦ISO 27001⁩

اللائحة العامة لحماية البيانات (DSGVO)

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

اللائحة ⁦(EU) 2016/679⁩ (DSGVO) (يفتح موقعًا خارجيًا)

نظام إدارة حماية البيانات

Cyber Resilience Act

اعتبارًا من 11 ديسمبر 2027 يجب على الشركات المصنِّعة للمنتجات ذات العناصر الرقمية حمايتها من الوصول غير المصرّح به عبر ضوابط مناسبة مثل المصادقة. أما التزامات الإبلاغ عن الثغرات الأمنية المستغَلّة بشكل نشط فتسري بالفعل منذ 11 سبتمبر 2026. ولا تندرج عروض SaaS البحتة ضمن نطاقه في الغالب، بخلاف التطبيقات والبرمجيات التي يجري تسليمها، بما في ذلك خدمات الواجهة الخلفية (Backend) التابعة للمصنِّع التي لا تستطيع من دونها أداء إحدى وظائفها.

اللائحة ⁦(EU) 2024/2847⁩ (Cyber Resilience Act) (يفتح موقعًا خارجيًا)

الامتثال لـ CRA

لا يُعدّ هذا العرض استشارة قانونية.

ورقة بيضاء · مجانًا

⁦Magical 2FA Bypass⁩ – مصادقة متعددة العوامل فعّالة لمسؤولي أمن المعلومات

ما يعلّمه ⁦Magical 2FA Bypass⁩ عن مصادقة واجهات API، معدًّا لصنّاع القرار: النمط ومسارات تسجيل الدخول، وتسجيل الدخول على مرحلتين وفحص الرموز، والاختبارات والأدلة، وأسئلة للموردين، والإطار التنظيمي، وخطة ⁦30-60-90⁩ يومًا. متاحة بالإنجليزية والألمانية.

غلاف الورقة البيضاء ⁦Magical 2FA Bypass – Effective MFA for CISOs⁩
PDF · 22 صفحةالإنجليزية والألمانيةالمؤلف: Uzair Kaaf
  • عشر رسائل أساسية لمجلس الإدارة والتدقيق الداخلي
  • متطلبات رمز التحدي والبوابة وفحص amr
  • قائمة اختبارات لكل مسار لتسجيل الدخول وأسئلة لمزوّدي SaaS
  • الإطار التنظيمي: ⁦NIS2⁩ و⁦ISO 27001⁩ وDSGVO وCRA
تنزيل مجاني

اطلبوا الورقة البيضاء

Magical 2FA Bypass – Effective MFA for CISOs

النسخة اللغوية *
الدعم

من المعرفة إلى واجهة API مُختبَرة

نفحص تدفقات تسجيل الدخول كما يراها المهاجمون: من دون واجهة المستخدم، وبطلبات خام، ومع الانتباه إلى كل رمز (Token).

Uzair Kaaf
المؤلف

Uzair Kaaf

باحث أمني، Vami Research

Uzair Kaaf باحث أمني وصائد ثغرات في برامج Bug Bounty. ويفحص لصالح Vami Research تطبيقات الويب وواجهات API بحثًا عن الثغرات الأمنية.

استفسار حول هذه النتيجة
مواصلة البحث

أبحاث ذات صلة

دراسات معمّقة 6

اختبار الاختراقكيف يعمل اختبار الاختراق، وما الذي يميزه عن فحص الثغرات الأمنية ومحاكاة الهجمات (Red Teaming) – وما المنهجيات والإجراءات والمتطلبات التنظيمية ذات الصلة عند التعاقد عليه.OWASP لفرق التطويرTop 10 وASVS وCheat Sheet Series وDeveloper Guide وWSTG وSAMM وأدوات مثل Dependency-Track وZAP: ما يقدّمه كل مشروع – وكيف تترابط هذه الركائز في العمل اليومي للتطوير لتشكّل عملية متكاملة.البرمجة الآمنةكيف تتجنّبون الثغرات الأمنية بشكل منهجي: الخريطة الحالية من CWE Top 25 وOWASP Top 10:2025، وASVS 5.0 كإطار للمتطلبات، والممارسات التي تُحدث الفرق في العمل اليومي للتطوير.نمذجة التهديداتكيف تحدّدون المخاطر الأمنية منذ مرحلة التصميم باستخدام إطار الأسئلة الأربعة وSTRIDE وPASTA وأشجار الهجوم – وترسّخون نمذجة التهديدات بشكل دائم في SDLC والفرق الرشيقة (Agile).انعدام الثقة (Zero Trust) لوكلاء الذكاء الاصطناعيتتصرف وكلاء الذكاء الاصطناعي المستقلة بصلاحيات ممنوحة بشكل مشروع وبسرعة الآلة. ينقل Zero Trust مبادئ مجرَّبة — التحقق بدلًا من الثقة، الحد الأدنى من الصلاحيات، افتراض الاختراق (Assume Breach) — إلى الأنظمة الوكيلية.MCP وOAuth 2.1منذ مراجعة المواصفة في يونيو 2025، أصبح خادم MCP المحمي خادم موارد (Resource Server) وفق OAuth 2.1 بأدوار منفصلة بوضوح. تشرح هذه الدراسة المعمّقة سلسلة الاكتشاف وتسجيل العملاء وقواعد الرموز وربط الجمهور (Audience) – وتبيّن أين تفشل التطبيقات عمليًا.

المصادر

المعايير والمواصفات والنصوص القانونية والدراسات التي تستند إليها هذه الدراسة المعمّقة.

  1. MITRE CWECWE-287: Improper Authentication (يفتح موقعًا خارجيًا)
  2. MITRE CWECWE-304: Missing Critical Step in Authentication (يفتح موقعًا خارجيًا)
  3. MITRE CWECWE-602: Client-Side Enforcement of Server-Side Security (يفتح موقعًا خارجيًا)
  4. OWASP API Security Top 10API2:2023 Broken Authentication (يفتح موقعًا خارجيًا)
  5. OWASP Cheat Sheet SeriesMultifactor Authentication Cheat Sheet (يفتح موقعًا خارجيًا)
  6. NISTSP 800-63B-4, Digital Identity Guidelines: Authentication and Authenticator Managementيوليو 2025 (يفتح موقعًا خارجيًا)
  7. IETFRFC 6238: TOTP: Time-Based One-Time Password Algorithmمايو 2011 (يفتح موقعًا خارجيًا)
  8. IETFRFC 8176: Authentication Method Reference Valuesيونيو 2017 (يفتح موقعًا خارجيًا)
  9. FIRSTCommon Vulnerability Scoring System v3.1: Specification Document (يفتح موقعًا خارجيًا)
  10. Meyer et al., arXivHow effective is multifactor authentication at deterring cyberattacks?مايو 2023 (يفتح موقعًا خارجيًا)
  11. EUR-Lexالتوجيه ⁦(EU) 2022/2555⁩ (⁦NIS2⁩)ديسمبر 2022 (يفتح موقعًا خارجيًا)
  12. gesetze-im-internet.deقانون BSI الألماني (BSIG)، تدابير إدارة المخاطر (يفتح موقعًا خارجيًا)
  13. EUR-Lexاللائحة ⁦(EU) 2024/2847⁩ (Cyber Resilience Act) (يفتح موقعًا خارجيًا)
  14. EUR-Lexاللائحة ⁦(EU) 2016/679⁩ (DSGVO) (يفتح موقعًا خارجيًا)

أسئلة شائعة

إجابات موجزة

ما المقصود بتجاوز المصادقة الثنائية (⁦2FA Bypass⁩)؟

هو طريقة لاستخدام حساب محمي بالمصادقة الثنائية من دون تقديم العامل الثاني. وفي حالة ⁦Magical 2FA Bypass⁩ أصدرت واجهة API لتسجيل الدخول رمز الجلسة بعد التحقق من كلمة المرور مباشرةً.

هل يحتاج المهاجم إلى الهاتف الذكي للضحية؟

لا. يكفيه اسم المستخدم وكلمة المرور، وهذا تحديدًا ما يُفترض أن يحمي منه العامل الثاني في الأصل.

كيف أتحقق مما إذا كان تطبيقي متأثرًا؟

سجّلوا الدخول بحساب اختبار مفعَّل فيه العامل الثاني إلى نقطة نهاية تسجيل الدخول عبر عميل HTTP خام، واقرؤوا الاستجابة كاملةً. فإذا تضمّنت رمزًا (Token) يفتح نقاط نهاية محمية من دون رمز التحقق، فالتطبيق متأثر. ولا تُجروا الفحص إلا على أنظمتكم الخاصة أو على الأنظمة التي لديكم تصريح كتابي بفحصها.

هل يكفي حذف الرمز (Token) من استجابة تسجيل الدخول؟

لا. يجب إضافةً إلى ذلك أن ترفض كل نقطة نهاية محمية الرموز التي صدرت من دون إتمام العامل الثاني. وإلا عاد الخلل عبر مسار آخر، مثل إصدار أقدم من API أو تجديد الرمز (Token Refresh).

ما المنصة التي كانت متأثرة؟

لا ننشر ذلك. وجميع أسماء المضيفين والمعرّفات والرموز في هذه الصفحة مُموَّهة.

ما علاقة هذه النتيجة بقائمة ⁦OWASP API Security Top 10⁩؟

تندرج ضمن ⁦API2:2023 Broken Authentication⁩. وتذكر توصيات OWASP بشأن MFA صراحةً واجهات API المنفصلة لتسجيل الدخول بوصفها موضعًا ينبغي أن تُطبَّق فيه MFA أيضًا أو أن تتوفر فيه وسائل حماية أخرى.

ما مدى أمان تدفق تسجيل الدخول لديكم؟

نختبر نقاط نهاية المصادقة كما يفعل المهاجمون، ونُريكم أين يُنشأ رمز (Token) قبل أوانه.