한눈에 보는 4가지 Lua Script 관련 CVE 요약
CVE ID | 취약점 | 연도 | CVSS 점수 |
CVE-2025-49844 (RediShell) | Lua Use-After-Free may lead to remote code execution | 2025 | 10.0 / 10 (Critical) |
CVE-2025-46817 | Lua library commands may lead to integer overflow and potential RCE | 2025 | 7.0 / 10 (High) |
CVE-2025-46818 | Running Lua function as a different user | 2025 | 6.0 / 10 (Moderate) |
CVE-2024-46981 | Lua library commands may lead to remote code execution | 2024 | 7.0 / 10 (High) |
•
CVE-2025-49844
◦
이 취약점은 Lua 스크립트를 사용하여 garbage collector를 조작해 샌드박스에서 탈출하고 Redis 호스트에서 원격 코드 실행(RCE)으로 이어질 수 있음. (일명 “RediShell” / Redis Lua use-after-free → RCE)
◦
이 문제는 Lua 스크립팅이 있는 모든 버전의 redis에 존재함
◦
Workarounds
▪
redis 해결 버전으로 패치 권고
▪
(임시조치) 사용자가 Lua 스크립트 실행을 제한하고 ACL을 사용하여 EVAL 및 EVALSHA 명령을 제한함
•
CVE-2025-46817
◦
이 취약점은 작성된 Lua 스크립트를 사용하여 정수 오버플로우가 발생해 잠재적인 원격 코드 실행(RCE)으로 이어질 수 있음
◦
이 문제는 Lua 스크립팅이 있는 모든 버전의 redis에 존재함
◦
Workarounds
▪
redis 해결 버전으로 패치 권고
▪
(임시조치) 사용자가 Lua 스크립트 실행을 제한하고 ACL을 사용하여 EVAL 및 FUNCTION command families를 모두 제한하여 스크립트를 차단
•
CVE-2025-46818
◦
이 취약점은 Lua 스크립트를 사용하여 다른 lua 객체를 조작하고 다른 사용자의 context에서 코드 실행으로 이어질 수 있음. (Running Lua function as a different user)
◦
이 문제는 Lua 스크립팅이 있는 모든 버전의 redis에 존재함
◦
Workarounds
▪
redis 해결 버전으로 패치 권고
▪
(임시조치) 사용자가 Lua 스크립트 실행을 제한하고 ACL을 사용하여 EVAL 및 FUNCTION command families를 모두 제한하여 스크립트를 차단
•
CVE-2024-46981
◦
이 취약점은 Lua 스크립트 처리 과정에서 garbage collector를 악용해 use-after-free가 발생 및 잠재적인 원격 코드 실행(RCE)으로 이어질 수 있음
◦
이 문제는 Lua 스크립팅이 있는 모든 버전의 redis에 존재함
◦
Workarounds
▪
redis 해결 버전으로 패치 권고
▪
(임시조치) 사용자가 Lua 스크립트 실행을 제한하고 ACL을 사용하여 EVAL 및 EVALSHA 명령을 제한함

왜 심각한가: 75% 이상의 클라우드 환경이 Redis를 사용
Redis가 클라우드 환경의 약 75%에서 사용된다는 점을 감안할 때 Redis의 취약점에 대한 잠재적인 영향은 광범위합니다. 주로 사용하는 캐시, 세션 관리, 메시지 큐, 실시간 데이터 처리 등 핵심 역할로 배치되어 있어 영향도의 범위는 인프라 전반으로 확장될 수 있습니다.
또한, 메모리 기반 저장 특성 때문에 민감정보 유출이나 데이터 변조가 가능하고 심각한 결과를 초래할 수 있으며, 관리형/멀티테넌시 환경에서는 한 테넌트의 침해가 다른 고객으로 확산될 위험이 큽니다.
주된 공격 루트로는 네트워크 노출, 약한 인증·암호화, 잘못된 구성, 그리고 UAF(Use-After-Free) 같은 메모리 취약점이 있습니다. 단기적으로는 네트워크 접근 제어를 통한 최소 권한 원칙 적용, 인증·암호화 보안 강화, 최신 패치로 신속한 적용을 우선해야 합니다.
왜 Lua에서 문제가 나오는가?
1.
메모리 lifecycle 관리의 복잡성
•
Lua 내부 객체의 할당/해제 타이밍과 Redis의 임베딩 방식이 섞이면서, 특정 입력, 스크립트 패턴으로 해제된 메모리에 접근(use-after-free)할 수 있습니다.
이로 인해 원격 코드 실행에 악용될 수 있습니다.
2.
정수 오버플로우/경계 검사 부족
•
unpack() 등 배열/버퍼 관련 함수에서 크기 계산이 부정확하면 정수 오버플로우가 발생하고, 그 결과 버퍼 할당보다 많은 데이터를 쓰는 상황이 만들어질 수 있습니다.
3.
Redis와 Lua의 결합 지점 취약
•
Redis는 Lua를 내장해 EVAL 등을 통해 스크립트를 실행합니다. 이때 Redis 서버 내부에서 Lua 객체가 샌드박스 외부의 경계가 생기는데, 이 경계에서 생기는 보안 이슈가 작용합니다.
Redis 서버에 공격 전제
•
Lua 실행 권한 : 공격자는 EVAL/EVALSHA 실행 권한을 가짐
◦
예방 : 이 권한은 기본적으로 사용자 계정 및 ACL로 관리해야 합니다.
•
인증 우회 또는 인증 미설정 : 많은 사례에서 Redis가 인증 없이(또는 쉬운 Password) 배포
◦
예방 : 공격자가 쉽게 접근하지 못하도록 인증 강화
•
네트워크 접근성 : Redis가 인터넷에 외부 노출
◦
예방 : 온프레미스 또는 클라우드 환경의 보안그룹 등 네트워크 차단 적용 및 Redis 포트를 내부망으로 제한
대응 방안
가장 먼저 해야 할 것 (긴급)
1.
“즉시 패치” : Redis OSS, Redis Enterprise는 권고된 해결 버전으로 패치하는 것을 권장드립니다.
2.
“임시 완화” : 패치가 불가능한 경우, ACL로 Lua 실행 제한(EVAL/EVALSHA 명령 차단) 및 Redis 인스턴스를 보호하기 위해 네트워크 액세스 및 인증/사용 권한을 제합니다.
Redis 버전 확인
# Redis 서버 버전 확인 방법 #1
redis-cli -p <port> -h <host>
127.0.0.1:6379> info server
# Server
redis_version:7.2.7
...
# Redis 서버 버전 확인 방법 #2
redis-cli -p <port> -h <host> info | grep redis_version
JavaScript
복사
ACL로 Lua 실행 제한 (임시)
네트워크· 배포 설정
•
bind를 내부 IP로 설정 및 Protected-mode yes 유지
•
클라우드 보안그룹 및 방화벽으로 Redis IP/Port 내부망으로 제한
•
Redis를 인터넷에 노출 금지 및 내부 전용 네트워크에 배치
마무리
Redis의 Lua 스크립트 기능은 강력하지만, 보안적 관점에서는 “양날의 검”입니다.
CVE-2024~2025의 흐름을 보면 대부분이 Redis에서 “내장된 Lua 인터프리터의 경계 문제”에서 비롯되었습니다.
Redis에서 Lua 관련 CVE 보안 취약점이 발견되면, 운영 환경에서는 다음 3가지를 꼭! 점검하세요.
참고 자료
김남욱 프로
클라우드와 오픈소스 SW 관련 연구 개발 프로젝트들을 진행해왔고, 지금은 OSS 기술서비스와 아키텍처를 담당하고 있어요 



