
إثبات مفهوم لاستغلال ثغرة استخدام الذاكرة بعد تحريرها (use-after-free) في محلل Lua الخاص بـ Redis 8.2.1، عبر استباق جمع القمامة باستدعاءات loadstring مصممة بعناية لتحقيق تنفيذ تعليمات برمجية عن بُعد.
سباق جمع القمامة (GC) على اسم كتلة Lua يؤدي إلى استخدام بعد التحرير في Redis 8.2.1 وتنفيذ كود عن بُعد.
يضمّن Redis لغة Lua 5.1 للبرمجة النصية. في الإصدارات حتى 8.2.1، لا تثبّت الدالة luaY_parser سلسلة اسم الكتلة على مكدس Lua قبل استدعاء المحلّل المعجمي. يمكن لنص برمجي مصمم بعناية أن يطلق آلية جمع القمامة بينما لا يزال المحلّل يشير إلى السلسلة المحرَّرة، مما ينتج ثغرة استخدام بعد التحرير (UAF) تؤدي إلى تنفيذ كود أصلي.
redis-cliCVE-2025-49844.lua – يقوم بقصف المحلّل بآلاف استدعاءات loadstring مع اسم كتلة مُمكّن لجمع القمامة للفوز بالسباق.while redis-cli -h localhost -p 6379 --eval CVE-2025-49844.lua >/dev/null; do
printf '.'
done
النتيجة المتوقعة:
في البنيات المعرّضة للثغرة، تنهار عملية Redis في النهاية أو تُسقط الاتصال. الإصدار المصحّح 8.2.2 (commit d5728cb5795c966c5b5b1e0f0ac576a7e69af539) يثبّت اسم الكتلة ويعمل النص البرمجي دون ضرر.
قم بالترقية إلى Redis 8.2.2 أو أحدث، أو عطّل كتابة نصوص Lua للمستخدمين غير الموثوقين.