
إثبات المفهوم لتفوّض عدد صحيح في unpack بلغة Lua في Redis (CVE-2025-46817) يوضح انفجار المكدس واحتمالية تنفيذ التعليمات البرمجية عن بُعد (RCE) على Redis 8.2.1.
unpack في Redis (احتمال تنفيذ تعليمات برمجية عن بُعد)إثبات مفهوم لتجاوز عدد صحيح في unpack الخاص بـ Lua في Redis مما يسبب تضخم المكدس وتعطل الخادم على الإصدار 8.2.1.
يأتي Redis 8.2.1 مع Lua 5.1 يتضمن تنفيذًا لـ unpack يحسب عدد النتائج باستخدام أعداد صحيحة موقعة. تؤدي مؤشرات البداية/النهاية المختارة بعناية إلى التفاف الحساب، وتجاوز lua_checkstack، وإجبار Lua على دفع مليارات النتائج. وبالاقتران مع التفاف فهارس الجداول، يمكن أن يؤدي ذلك إلى إفساد ذاكرة الكومة والوصول إلى تنفيذ تعليمات برمجية عن بُعد.
redis-cliCVE-2025-46817.lua – يستدعي unpack بنطاق يتجاوز الحساب الصحيح الموقّع.redis-cli -h localhost -p 6379 --eval CVE-2025-46817.lua
النتيجة المتوقعة:
على الإصدار 8.2.1، عادةً ما ينهي الخادم الاتصال أو يتعطل بسبب النمو المفرط للمكدس. يرفض Redis 8.2.2 (الالتزام fc9abc775e308374f667fdf3e723ef4b7eb0e3ca) الاستدعاء برسالة "ERR Error running script (too many results to unpack)".
قم بالترقية إلى Redis 8.2.2 أو أحدث، الذي يعزز luaB_unpack وluaH_getnum، أو قم بتعطيل البرمجة النصية Lua للمستخدمين غير الموثوقين.