🇰🇷 한글 설명
Redis의 BIT 명령어를 사용할 때 발생하는 정수 오버플로 및 경계 외 읽기 취약점입니다. 32비트 시스템에서 특정 설정값을 조작하여 힙 메모리를 손상시키거나 임의의 코드를 실행할 수 있습니다.
💡 쉬운 설명
데이터베이스가 숫자를 계산하는 과정에서 오류가 발생하여 메모리의 중요한 정보를 훔쳐보거나 해커가 명령을 내릴 수 있는 문제입니다. 주로 32비트 환경의 Redis에서 발생합니다.
🇺🇸 원문 (English)
Redis is an in-memory database that persists on disk. A vulnerability involving out-of-bounds read and integer overflow to buffer overflow exists starting with version 2.2 and prior to versions 5.0.13, 6.0.15, and 6.2.5. On 32-bit systems, Redis `*BIT*` command are vulnerable to integer overflow that can potentially be exploited to corrupt the heap, leak arbitrary heap contents or trigger remote code execution. The vulnerability involves changing the default `proto-max-bulk-len` configuration parameter to a very large value and constructing specially crafted commands bit commands. This problem only affects Redis on 32-bit platforms, or compiled as a 32-bit binary. Redis versions 5.0.`3m 6.0.15, and 6.2.5 contain patches for this issue. An additional workaround to mitigate the problem without patching the `redis-server` executable is to prevent users from modifying the `proto-max-bulk-len` configuration parameter. This can be done using ACL to restrict unprivileged users from using the CONFIG SET command.
📍 영향받는 시스템
Redis 2.2 ~ 5.0.12, 6.0.14 이하, 6.2.4 이하 (32-bit 시스템 한정)
⚔️ 공격 벡터
proto-max-bulk-len 설정을 매우 크게 변경한 후 특수하게 제작된 BIT 명령어를 전송
🛡️ 대응 방법
Redis를 5.0.13, 6.0.15, 6.2.5 이상 버전으로 업데이트하거나 ACL을 통해 CONFIG SET 명령어를 제한
🔧 검증 코드
출력된 redis_version이 취약한 버전 범위에 해당하는지 확인
redis-cli INFO server | grep redis_version