
非推奨のLua APIと変更可能なメタテーブルを介した、Redis 8.2.1におけるサンドボックスエスケープ。
Redis 8.2.1は、非推奨のLua組み込み関数(getfenv、setfenv、newproxy)をスクリプトに公開したままにしており、基本型のメタテーブルをロックできていません。攻撃者は共有メタテーブルにメソッドを注入し、特権環境を取得して、別のユーザーの権限でコマンドを実行できます。
redis-cliCVE-2025-46818.lua – 非推奨の組み込み関数が存在することを検証し、文字列メタテーブルにパッチを適用し、ヘルパーを公開します。# セットアップ
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# 注入したヘルパーを呼び出す(被害者ユーザーがより高い権限を持つと仮定):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
期待される結果:
8.2.1では、初期スクリプトが非推奨APIをtrueとして報告し、メタテーブルの変更を確認します。後続の呼び出しは、ACL WHOAMI(または差し替えた任意の特権コマンド)の出力を返します。Redis 8.2.2では、これらのAPIがデフォルトで削除され、基本メタテーブルが読み取り専用になり、試行がログに記録されます。
Redis 8.2.2以降にアップグレードするか、信頼できないユーザーに対してLuaを無効化するか、lua-enable-deprecated-api noで実行してください。