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
- 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
'취약점 > BoF' 카테고리의 다른 글
DrayTek BoF 취약점 (CVE-2024-41592, CVE-2024-41585) (0) | 2024.11.11 |
---|---|
Citrix Bleed (CVE-2023-4966) (1) | 2023.11.28 |
GNU C 라이브러리 Dynamic Loader BoF_Looney Tunables (CVE-2023-4911) (1) | 2023.10.10 |
드림시큐리티 MagicLine4NX BoF 취약점 (0) | 2023.03.31 |