🇰🇷 한글 설명
Redis가 RESP 요청을 처리할 때 사용자 지정 값에 따라 메모리를 할당하는 과정에서 발생하는 취약점입니다. 공격자가 특수하게 조작된 요청을 여러 연결을 통해 보내면 서버에 과도한 메모리 할당을 유도하여 서비스 거부(DoS)를 일으킬 수 있습니다. 인증 과정에서도 동일한 메커니즘이 사용되므로 인증되지 않은 사용자도 공격이 가능합니다.
💡 쉬운 설명
해커가 가짜 요청을 계속 보내서 컴퓨터의 메모리를 순식간에 가득 채워 서버를 멈추게 만드는 공격입니다. 로그인을 하지 않은 외부인도 이 공격을 통해 서버를 마비시킬 수 있어 위험합니다.
🇺🇸 원문 (English)
Redis is an open source, in-memory database that persists on disk. When parsing an incoming Redis Standard Protocol (RESP) request, Redis allocates memory according to user-specified values which determine the number of elements (in the multi-bulk header) and size of each element (in the bulk header). An attacker delivering specially crafted requests over multiple connections can cause the server to allocate significant amount of memory. Because the same parsing mechanism is used to handle authentication requests, this vulnerability can also be exploited by unauthenticated users. The problem is fixed in Redis versions 6.2.6, 6.0.16 and 5.0.14. An additional workaround to mitigate this problem without patching the redis-server executable is to block access to prevent unauthenticated users from connecting to Redis. This can be done in different ways: Using network access control tools like firewalls, iptables, security groups, etc. or Enabling TLS and requiring users to authenticate using client side certificates.
📍 영향받는 시스템
Redis 6.2.5 미만, 6.0.15 미만, 5.0.13 미만 버전
⚔️ 공격 벡터
인증되지 않은 사용자가 조작된 RESP 요청을 다수의 연결을 통해 전송하여 메모리 고갈 유도
🛡️ 대응 방법
Redis를 6.2.6, 6.0.16, 5.0.14 이상 버전으로 업데이트하거나, 방화벽을 통해 인증되지 않은 접근을 차단함
🔧 검증 코드
출력된 버전이 취약점이 해결된 버전(6.2.6, 6.0.16, 5.0.14 이상)인지 확인합니다.