unpack 整数溢出(潜在 RCE)Redis Lua unpack 整数溢出 PoC,导致 8.2.1 版本堆栈膨胀并崩溃。
Redis 8.2.1 内置的 Lua 5.1 中,unpack 实现使用有符号整数计算结果数量。精心构造的 start/end 索引会使算术运算发生回绕,绕过 lua_checkstack,并强制 Lua 压入数十亿个结果。结合表索引回绕,这可能导致堆内存损坏并引发 RCE。
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 脚本功能。