北京赛克艾威科技有限公司 2025-11-04
Redis是一个开源的内存数据库,在8.2版本开始支持XACKDEL命令用于从 Streams 中删除已确认的消息,支持批量操作(多个 ID)。 受影响版本中,XACKDEL默认用长度为 STREAMID\_STATIC\_VECTOR\_LEN(8)的栈数组缓存 IDs;当传入 ID 超过该长度时未切换为堆分配,导致栈缓冲区越界写入,存在潜在远程代码执行风险。 修复版本中通过在 \`xackdelCommand\` 中检测 \`args.numids \> STREAMID\_STATIC\_VECTOR\_LEN\` 时改用堆分配,避免栈越界;并新增测试验证大于静态长度时能安全处理。
1. 将组件 redis 升级至 8.2.3 及以上版本
https://www.oscs1024.com/hd/MPS-1kni-azvo
https://github.com/redis/redis/security/advisories/GHSA-jhjx-x4cf-4vm8
https://github.com/redis/redis/commit/5f83972188f6e5b1d6f1940218c650a9cbdf7741