1. Redis (Remote Dictionary Server) [1]

- 오픈 소스 인메모리 비관계형 데이터베이스
- 데이터를 Key - Value 형태로 메모리에 하며, 빠른 읽기/쓰기 성능을 제공
- 특징
① 빠른 속도 : 모든 데이터를 저장하므로 읽기 및 쓰기 속도가 빠름
② 데이터 영속성 : 메모리 특성(휘발성)으로 데이터가 사라질 수 있어 RDB 또는 AOF 방식으로 백업 지원
 ⒜ RDB (Redis Database) : 메모리에 있는 데이터 전체에서 스냅샷을 작성하고, 이를 디스크로 저장하는 방식
   > 디스크 I/O를 줄이며 저장 효율이 높으나, 마지막 스냅샷 이후 변경된 데이터는 복구할 수 없음
 ⒝ AOF (Append Only File) : 데이터가 변경되는 이벤트가 발생하면 이를 모두 로그에 저장하는 방식
   > 데이터 손실 가능성을 최소화하나, 로그 파일 크기가 커지고 디스크 I/O 부하 증가
③ 다양한 데이터 타입 지원 : String, List, Set, Sorted Set, Hash, Stream 등 다양한 데이터 타입 지원

2. CVE-2024-31449

[사진 1] CVE-2024-31449 [2]

Lua 엔진이 포함된 모든 버전의 Redis에 존재하는 스택 버퍼 오버플로우 취약점
> Lua 엔진은 사용자 스크립트를 실행하도록 레디스에 내장된 도구로, 데이터를 더 편리하게 처리할 수 있도록 설계
악용에 성공 시 악의적인 코드를 실행하거나 데이터 탈취 및 서버를 제어할 수 있음

 

- Lua 엔진에서 특정 스크립트를 실행할 때 스택 버퍼 오버플로우가 발생 [3]
> 취약점은 Lua 엔진 내 bit.tohex 함수와 관련 (bit 모듈은 비트 연산을 수행하는데 사용됨)

 

- bit.tohex 함수는 정수를 16진수 문자열로 변환 [4]

> 정수(x)를 입력받아 16진수로 변환하여 지정된 자리수 n 만큼(생략 가능) 출력
> 지정된 자리를 채우기 위해 왼쪽에 0이 추가되어 결과 출력
> 음수 값도 처리가능하며, 2의 보수 표현에 따라 출력

사용법: bit.tohex(x [,n])

 

- 특정 인수로 bit.tohex 함수를 호출하는 Lua 스크립트 악용

자리수를 결정하는 두 번째 인자에 음수와 같은 비정상적인 값을 사용
잘못된 인자 값이 지나치게 큰 버퍼 크기를 요구하므로, 인접한 메모리가 덮어씌워지며 스택 버퍼 오버플로우가 발생

redis-cli eval "return bit.tohex(65535, -2147483648)" 0

// 마지막 0은 해당 Lua 스크립트에서 Redis 키를 참조하지 않음을 의미
// 스크립트가 순수히 계산 작업만 수행하거나, 외부 입력값으로만 동작하며 Redis 데이터베이스의 키를 읽거나 쓰지 않는 경우 사용

3. 대응방안

- 벤더사 제공 업데이트 적용 [5][6]

제품명 영향받는 버전 해결 버전
Redis 모든 Redis 소프트웨어 릴리스 7.4.2-169 이상
7.2.4-109 이상
6.4.2-110 이상
7.4.6 – 모든 빌드
7.6.0 – 모든 빌드(non-GA)
7.8.0 – 모든 빌드(non-GA)
모든 Redis OSS/CE/Stack 릴리스 (OSS/CE)7.4.1
(OSS/CE)7.2.6
(OSS/CE)6.2.16
(Stack)7.4.0-v1
(Stack)7.2.0-v13
(Stack)6.2.6-v17

4. 참고

[1] https://redis.io/
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-31449
[3] https://redrays.io/blog/redis-cve-2024-31449-how-to-reproduce-and-mitigate-the-vulnerability/
[4] https://bitop.luajit.org/api.html
[5] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71587&menuNo=205020
[6] https://redis.io/blog/security-advisory-cve-2024-31449-cve-2024-31227-cve-2024-31228/
[7] https://www.boannews.com/media/view.asp?idx=134444&page=7&kind=1

+ Recent posts