
Redis Lua unpack整数オーバーフロー(CVE-2025-46817)の概念実証で、Redis 8.2.1におけるスタックの肥大化と潜在的なRCEを実証します。
unpack 整数オーバーフロー(潜在的なRCE)Redis Lua unpack 整数オーバーフローのPoC。8.2.1でスタックの肥大化とクラッシュを引き起こします。
Redis 8.2.1には、符号付き整数を使用して結果数を計算する unpack 実装を備えたLua 5.1が同梱されています。慎重に選択された開始/終了インデックスが算術演算をラップさせ、lua_checkstack をバイパスし、Luaに数十億の結果をプッシュさせます。テーブルインデックスのラップと組み合わせることで、ヒープメモリを破損させ、RCEにつながる可能性があります。
redis-cliCVE-2025-46817.lua – 符号付き算術演算をオーバーフローさせる範囲で を呼び出します。unpackredis-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)" というエラーで呼び出しを拒否します。
luaB_unpack と luaH_getnum を強化したRedis 8.2.2以降にアップグレードするか、信頼できないユーザーに対してLuaスクリプティングを無効にしてください。