
PoC تعليمي لـ CVE-2026-8838، ثغرة RCE حرجة في برنامج تشغيل Python لـ Amazon Redshift عبر eval() غير آمن في vector_in(). يتضمن تحليلًا فنيًا وناقل هجوم وإرشادات تخفيف.
eval()
مشروع بحث وعرض توضيحي في الأمن السيبراني الهجومي أُنجز حصريًا لأغراض تعليمية ولرفع الوعي.
أي استخدام على أنظمة دون إذن صريح يعد غير قانوني.
يجب استخدام هذا المستودع فقط في:
سيناريو الثغرة المعروض هنا مخصص لأغراض العرض التعليمي فقط.
CVE-2026-8838 هي ثغرة حرجة في حقن التعليمات البرمجية (Remote Code Execution) اكتُشفت في الموصل الرسمي للغة Python الخاص بـ Amazon Redshift (amazon-redshift-python-driver).
تنبع الثغرة من الاستخدام غير الآمن للدالة الأصلية في Python eval() على بيانات يتم استلامها مباشرةً من الخادم، داخل الدالة vector_in(). يمكن لخادم خبيث أو مهاجم في موقع Man-in-the-Middle (MitM) إرسال حمولة مُصمَّمة خصيصًا سيتم تقييمها وتنفيذها في جهة العميل دون أي تحقق.
| الحقل | القيمة |
|---|---|
| CVE ID | CVE-2026-8838 |
| CVSS Score | 9.8 (Critical) |
| CWE | CWE-94 — Improper Control of Generation of Code |
| متجه CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المكوّن الهش | amazon-redshift-python-driver < 2.1.14 |
| الدالة الهشة | vector_in() |
| نوع الهجوم | خادم مارق / رجل في المنتصف |
| المصادقة المطلوبة | لا |
| تفاعل المستخدم | لا |
الدالة vector_in() مسؤولة عن إلغاء تسلسل البيانات المتجهة المستلمة من خادم Redshift. في الإصدارات الهشة، تستخدم eval() مباشرةً على المحتوى الخام الذي يعيده الخادم:
# Code vulnérable (simplifié) — versions < 2.1.14
def vector_in(data, offset, length):
raw = data[offset:offset+length].decode("utf-8")
# FAILLE : eval() sur une donnée contrôlée par le serveur
return eval(raw)
يمكن لخادم خبيث إرجاع أي تعبير Python صالح بدلاً من متجه شرعي. عندها سيقيّمه Python ككود أصلي.
Client (victime) Serveur (malveillant / MitM)
| |
|---------- Connexion Redshift ----------->|
| |
|<--------- Réponse forgée ---------------|
| "[__import__('os').system('cmd')]" |
| |
| eval() exécute le payload côté client |
| => RCE sur la machine du client |
انظر
poc_server.pyللخادم المُحاكى وpoc/poc_client.pyلعميل العرض التوضيحي.
يحاكي إثبات المفهوم خادم Redshift يعيد استجابة مزوّرة. لأغراض العرض التوضيحي فقط، الحمولة المستخدمة غير ضارة (whoami).
التشغيل:
# Terminal 1 — démarrer le faux serveur
python poc/poc_server.py
# Terminal 2 — simuler le client vulnérable
python poc/poc_client.py
الاستغلال الناجح يمكّن المهاجم من:
| الحزمة | الإصدار الهش | الإصدار المُصحَّح |
|---|---|---|
amazon-redshift-python-driver | < 2.1.14 | ≥ 2.1.14 |
تحقق من الإصدار المثبّت لديك:
pip show amazon-redshift-python-driver
pip install --upgrade amazon-redshift-python-driver
# Vérification
pip show amazon-redshift-python-driver | grep Version
# Attendu : Version: 2.1.14 ou supérieure
راجع ملف MITIGATION.md للتوصيات المفصّلة:
Maxime288 — github.com/Maxime288
تم إجراء البحث لأغراض تعليمية في إطار دراسة الأمن الهجومي.