
استغلال لثغرة Redis 8.2.1 للهروب من بيئة Lua المعزولة عبر واجهات برمجية قديمة وجداول وصفية قابلة للتعديل، مما يتيح تنفيذ أوامر عبر المستخدمين.
تجاوز الحماية عبر واجهات Lua المهجورة والجداول الوصفية القابلة للتعديل في Redis 8.2.1.
يُبقي Redis 8.2.1 واجهات Lua المهجورة (getfenv, setfenv, newproxy) مكشوفة للسكربتات ويفشل في قفل الجداول الوصفية للأنواع الأساسية. يمكن للمهاجم حقن دوال في الجداول الوصفية المشتركة، والتقاط البيئات المميزة، وتنفيذ أوامر بصلاحيات مستخدم آخر.
redis-cliCVE-2025-46818.lua – يتحقق من وجود الواجهات المهجورة، ويعدّل الجدول الوصفي للسلاسل النصية، ويكشف عن دالة مساعدة.# الإعداد
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# استدعاء الدالة المحقونة (بافتراض أن المستخدم الضحية لديه صلاحيات أعلى):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
النتيجة المتوقعة:
على الإصدار 8.2.1 يُبلغ السكربت الأولي عن الواجهات المهجورة بأنها true ويؤكد تعديل الجدول الوصفي. الاستدعاء اللاحق يُرجع مخرجات ACL WHOAMI (أو أي أمر مميز تستبدله). الإصدار 8.2.2 يزيل الواجهات افتراضيًا، ويجعل الجداول الوصفية الأساسية للقراءة فقط، ويسجّل محاولات الاستغلال.
قم بالترقية إلى Redis 8.2.2 أو أحدث، أو عطّل Lua للمستخدمين غير الموثوقين، أو شغّل مع lua-enable-deprecated-api no.