
Technical analysis and proof of concept for CVE-2026-59827, a critical unsafe Java deserialization vulnerability in Metabase leading to remote code execution.
الخطورة: حرجة (CVSS 9.9)
CVE: CVE-2026-59827
الإعلان الأمني: GHSA-w95f-x9v9-wv36
المُبلِّغ: Matheus Gutierre (@Gutierre0x80)
تاريخ النشر: 30 يونيو 2026
يمكن لمستخدم مُصادَق يملك صلاحية الوصول إلى استعلامات SQL الأصلية على قاعدة بيانات H2 تنفيذ أكواد Java عشوائية على خادم Metabase عبر إلغاء تسلسل غير آمن لكائنات Java التي يتم إرجاعها من استعلامات SELECT CAST(X'...' AS OTHER).
يتضمن تثبيت Metabase الافتراضي قاعدة بيانات H2 نموذجية، مما يجعل هذه الثغرة قابلة للاستغلال في جميع النشرات الافتراضية.
pip install requestsexploit.py:تأكد من تثبيت جميع المتطلبات الأساسية وتوفرها في PATH:
# تثبيت مكتبة requests الخاصة بـ Python
pip install requests
# التحقق من توفر Java (OpenJDK 11+)
java -version
# التحقق من Python 3.7+
python3 --version
ثم قم بتشغيل الاستغلال من مجلد poc/:
cd poc/
python3 exploit.py <target_url> <username> <password> <command>
يتحقق السكربت من وجود clojure-1.12.3.jar و VarChainPayload.class في مجلد العمل قبل التنفيذ.
python3 exploit.py <target_url> <username> <password> <command>
python3 exploit.py http://127.0.0.1:3000 [email protected] Admin1234! "id > /tmp/pwned.txt"
يتم تنفيذ الأمر في سياق عملية Metabase (عادةً مستخدم metabase في Docker).
يقوم نوع العمود OTHER في H2 بإلغاء تسلسل كائنات Java باستخدام ObjectInputStream مكشوف دون أي تصفية JEP-290. وهذا يسمح بإنشاء أي صنف (class) بشكل تعسفي.
تستخدم الحمولة سلسلة أدوات (gadget chain) مبنية على أصناف Clojure القابلة للتسلسل (clojure.core$apply، clojure.lang.Var$Serialized، و PersistentList) مدمجة مع PriorityQueue في Java لتفعيل تنفيذ الأكواد عبر clojure.core/eval.
انظر writeup/analysis.md للتحليل التقني الكامل.
| الوسيط | الوصف | مثال |
|---|
target_url | عنوان URL لمثيل Metabase | http://127.0.0.1:3000 |
username | مستخدم مُصادَق (مسؤول أو لديه صلاحية وصول إلى الاستعلامات الأصلية) | [email protected] |
password | كلمة مرور المستخدم | SecurePassword123! |
command | أمر الصدفة المراد تنفيذه | id أو whoami |