格式错误的长字符串分隔符导致 Redis 8.2.1 中 Lua 词法分析器发生越界读取。
Redis 8.2.1 中的 Lua 长字符串解析器错误处理了格式错误的 [=... 序列,返回哨兵值,导致缓冲区下溢或过度递归。攻击者可诱使 Redis 发生越界读取或 C 栈溢出。
redis-cliCVE-2025-46819.lua – 构造一个巨大的格式错误分隔符并将其提供给 loadstring。redis-cli -h localhost -p 6379 --eval CVE-2025-46819.lua
预期结果:
在受影响版本上,您通常会看到“ERR C stack overflow”或立即崩溃。Redis 8.2.2(提交 3a1624da2449ac3dbfc4bdaed43adf77a0b7bfba)会以“invalid long string delimiter”拒绝该脚本,而不会导致服务器不稳定。
升级到 Redis 8.2.2 或更高版本,或对不受信任的用户禁用 Lua。