Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-25604-PoC — PoC لإثبات CVE-2026-25604 | Kitploit
أدوات/GitHubGitHub/john-jung/cve-2026-25604-poc
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقأمن السحابةالتعلم والتعليم
GitHubjohn-jung/cve-2026-25604-poc

CVE-2026-25604-PoC

PoC لإثبات CVE-2026-25604

عرض المستودع
منذ 4 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-25604 إثبات المفهوم

حقن ترويسة المضيف (Host Header Injection) يؤدي إلى تجاوز مصادقة SAML في AWS Auth Manager الخاص بـ Apache Airflow

يمكن للمهاجم حقن ترويسة Host خبيثة في تدفق تسجيل الدخول عبر SAML، مما يجعل عنوان Assertion Consumer Service (ACS) يشير إلى خادم يتحكم فيه المهاجم. يتيح ذلك للمهاجم التقاط استجابات SAML صالحة وإعادة تشغيلها للحصول على وصول غير مصرح به إلى مثيل Airflow الخاص بالضحية — أو إعادة استخدام الرموز عبر مثيلات Airflow مختلفة ذات ضوابط وصول مختلفة.

الإصدارات المتأثرة

الحزمةالإصدار المتأثرالإصدار المُصلَح
apache-airflow-providers-amazon8.0.0 – 9.21.x9.22.0

الوصف الرسمي

CVE-2026-25604: خطأ في التحقق من الأصل في AWS Auth Manager (CWE-346)

في AWS Auth Manager، تم استخدام أصل مصادقة SAML كما يوفره العميل دون التحقق منه مقابل عنوان URL الفعلي للمثيل. وقد سمح ذلك بالوصول إلى مثيلات مختلفة ربما تحتوي على ضوابط وصول مختلفة عن طريق إعادة استخدام استجابة SAML من مثيلات أخرى.

— NVD

المراجع

المصدرالرابط
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-25604
PR الإصلاحhttps://github.com/apache/airflow/pull/61368

ملخص الثغرة

يستخدم AWS Auth Manager في Apache Airflow معيار SAML 2.0 عبر AWS IAM Identity Center للمصادقة. عند إنشاء طلب مصادقة SAML، تقرأ الدالة _prepare_flask_request() ترويسة Host مباشرةً من طلب HTTP الوارد لبناء عنوان URL الخاص بـ ACS callback:

root@kitploit:~
# Vulnerable code in aws_auth_manager.py
def _prepare_flask_request(req):
    host = req.headers.get("Host", req.host)  # <-- Attacker-controlled
    
    if ":" in host:
        hostname, port = host.rsplit(":", 1)
    else:
        hostname = host
        port = "443" if req.scheme == "https" else "80"
    
    return {
        "http_host": hostname,    # Used to build ACS URL
        "server_port": port,
        ...
    }

يُستخدم http_host وserver_port الناتجان لبناء عنوان AssertionConsumerService الخاص بـ SAML. ولأن مزود الهوية (IdP) يثق في هذا العنوان، فإنه يعيد توجيه المستخدم المصادَق — إلى جانب استجابة SAML الموقعة — إلى أي مكان تشير إليه ترويسة Host.

سير الهجوم

root@kitploit:~
┌──────────┐         ┌──────────────┐         ┌─────────────┐
│ Attacker │         │ Victim       │         │ AWS IAM     │
│          │         │ Airflow      │         │ Identity    │
│          │         │ Instance     │         │ Center      │
└────┬─────┘         └──────┬───────┘         └──────┬──────┘
     │                      │                        │
     │ 1. GET /login        │                        │
     │ Host: evil.com:8080  │                        │
     │─────────────────────>│                        │
     │                      │                        │
     │                      │ 2. SAML AuthnRequest   │
     │                      │    ACS URL =           │
     │                      │    evil.com:8080/       │
     │                      │    login_callback       │
     │                      │───────────────────────>│
     │                      │                        │
     │                      │ 3. User authenticates  │
     │                      │    at IdP login page   │
     │                      │                        │
     │ 4. IdP redirects     │                        │
     │    SAMLResponse to   │<───────────────────────│
     │    evil.com:8080     │                        │
     │<─────────────────────│                        │
     │                      │                        │
     │ 5. Attacker captures │                        │
     │    valid SAMLResponse│                        │
     │                      │                        │
     │ 6. Replay to victim  │                        │
     │    POST /login_callback                       │
     │    with captured     │                        │
     │    SAMLResponse      │                        │
     │─────────────────────>│                        │
     │                      │                        │
     │ 7. Authenticated!    │                        │
     │<─────────────────────│                        │
     └──────────────────────┴────────────────────────┘

سيناريوهان للاستغلال

السيناريو أ — سرقة الرموز عبر التصيد: يرسل المهاجم رابط تسجيل دخول مخصصًا (مع ترويسة Host مزوّرة عبر وكيل عكسي) إلى مستخدم شرعي. بعد مصادقة المستخدم عبر IAM Identity Center، تُعاد توجيه استجابة SAML إلى خادم المهاجم. يعيد المهاجم تشغيلها ضد مثيل Airflow الحقيقي.

السيناريو ب — إعادة استخدام الرموز عبر المثيلات: في بيئات Airflow متعددة المستأجرين أو متعددة المثيلات، يمكن إعادة استخدام استجابة SAML صالحة من المثيل "أ" ضد المثيل "ب". ولأن الأصل لا يُتحقق منه أبدًا مقابل عنوان URL الفعلي للمثيل، يتم تجاوز ضوابط الوصول المختلفة على المثيل "ب".

بنية المستودع

root@kitploit:~
CVE-2026-25604-PoC/
├── README.md           # This file
└── mock_airflow.py     # Mock vulnerable Airflow server

المتطلبات الأساسية

  • Python 3.8+
  • AWS IAM Identity Center (المعروف سابقًا باسم AWS SSO) مع تطبيق SAML 2.0 مُهيأ
  • مثيل EC2 أو بيئة محلية يمكنها الوصول إلى عنوان URL الخاص بـ SAML metadata في IAM Identity Center

التبعيات

root@kitploit:~
pip install flask python3-saml

خطوات إعادة الإنتاج

1. إعداد AWS IAM Identity Center

قم بإعداد تطبيق SAML 2.0 في AWS IAM Identity Center باتباع توثيق AWS Auth Manager الخاص بـ Airflow:

  • عنوان ACS للتطبيق: http://<airflow-host>:<port>/login_callback
  • جمهور SAML للتطبيق: aws-auth-manager-saml-client
  • انسخ عنوان URL الخاص بـ SAML metadata من وحدة تحكم Identity Center.

2. تشغيل خادم Airflow الوهمي الضعيف

root@kitploit:~
python mock_airflow.py <SAML_METADATA_URL> [PORT]

على سبيل المثال:

root@kitploit:~
python mock_airflow.py https://portal.sso.us-east-1.amazonaws.com/saml/metadata/XXXX 8080

3. إرسال طلب تسجيل دخول مع ترويسة Host مزوّرة

في طرفية منفصلة، ابدأ تسجيل دخول SAML مع ترويسة Host معدّلة:

root@kitploit:~
curl -v -H "Host: attacker.com:9090" http://127.0.0.1:8080/login

4. ملاحظة إعادة التوجيه

يستجيب الخادم بإعادة توجيه 302 Redirect إلى صفحة تسجيل الدخول الخاصة بـ AWS IAM Identity Center. افحص طلب SAML AuthnRequest — سيشير عنوان AssertionConsumerService إلى attacker.com:9090/login_callback بدلاً من الخادم الشرعي.

5. المخرجات المتوقعة

على وحدة تحكم خادم Airflow الوهمي:

root@kitploit:~
[LOGIN] Host header: attacker.com:9090
[DEBUG] http_host=attacker.com, server_port=9090

سيوجه طلب AuthnRequest الصادر عن SAML الآن مزود الهوية (IdP) إلى تسليم استجابة SAML المصادَق عليها إلى attacker.com:9090، مما يمنح المهاجم رمزًا صالحًا لإعادة تشغيله.

الكود الضعيف

airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py — الدالة _prepare_flask_request():

root@kitploit:~
host = request.headers.get("Host", request.host)

يثق هذا السطر في ترويسة Host المقدمة من العميل دون التحقق منها مقابل عنوان Airflow الأساسي المُهيأ (AIRFLOW__API__BASE_URL).

التصحيح

يستبدل الإصلاح (PR #61368، الذي تم دمجه في 3 فبراير 2026) المضيف المشتق من الطلب بالقيمة المستخرجة من إعدادات Airflow:

root@kitploit:~
- host = request.headers.get("Host", request.host)
+ host = conf.get("api", "base_url")

يضمن ذلك أن يتطابق عنوان ACS دائمًا مع عنوان URL الفعلي للمثيل الذي يهيئه المسؤول، بغض النظر عن ترويسة Host التي يرسلها العميل.

الأثر

  • السرية: يحصل المهاجم على وصول مصادَق إلى Airflow، والذي قد يحتوي على إعدادات DAG حساسة، واتصالات ببيانات اعتماد، وبيانات وصفية لخطوط معالجة البيانات.
  • السلامة: يمكن للمستخدمين غير المصرح لهم تشغيل أو تعديل أو حذف DAGs، مما قد يعطل سير عمل البيانات الحرجة.
  • تصعيد عبر المثيلات: في البيئات متعددة المستأجرين، يمكن إعادة استخدام رموز SAML عبر مثيلات ذات إعدادات RBAC مختلفة.

الاعتمادات

  • اكتُشفت بواسطة: Sungwuk Jung
  • أُصلحت بواسطة: Vincent Beck (@vincbeck)، فريق أمان Apache Airflow

إخلاء مسؤولية

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

تنزيل الأداة
Commit الإصلاح1a86aec