
Redis 8.2.1 Lua 샌드박스 탈출 취약점을 악용하는 익스플로잇으로, 더 이상 사용되지 않는 API와 변경 가능한 메타테이블을 통해 교차 사용자 명령 실행을 가능하게 합니다.
Redis 8.2.1에서 더 이상 사용되지 않는 Lua API와 변경 가능한 메타테이블을 통한 샌드박스 탈출.
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로 실행하십시오.