오픈소스 인사이트
home
오픈소스 기술 동향
home
🚀

Redis 보안 클리닉: CVE-2024~2025 Lua 이슈 정리

7 more properties

한눈에 보는 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 실행 제한 (임시)
-EVAL -EVALSHA 명령어 금지
네트워크· 배포 설정
bind를 내부 IP로 설정 및 Protected-mode yes 유지
클라우드 보안그룹 및 방화벽으로 Redis IP/Port 내부망으로 제한
Redis를 인터넷에 노출 금지 및 내부 전용 네트워크에 배치

마무리

Redis의 Lua 스크립트 기능은 강력하지만, 보안적 관점에서는 “양날의 검”입니다.
CVE-2024~2025의 흐름을 보면 대부분이 Redis에서 “내장된 Lua 인터프리터의 경계 문제”에서 비롯되었습니다.
Redis에서 Lua 관련 CVE 보안 취약점이 발견되면, 운영 환경에서는 다음 3가지를 꼭! 점검하세요.
EVAL / EVALSHA 명령 비활성화
Redis 최신 취약점 패치 버전으로 업데이트
네트워크 접근 제한

참고 자료

김남욱 프로
클라우드와 오픈소스 SW 관련 연구 개발 프로젝트들을 진행해왔고, 지금은 OSS 기술서비스와 아키텍처를 담당하고 있어요