🔍 CVE-2025-29923

3.7
CVSS Score
LOW
2025-03-20
2026-09-03 13:04
✅ 완료

🇰🇷 한글 설명

Go 언어용 Redis 클라이언트 라이브러리인 go-redis에서 연결 설정 중 CLIENT SETINFO 명령이 타임아웃될 경우 응답 순서가 뒤바뀌는 문제가 발생합니다. 이로 인해 스티키 연결에서는 지속적인 응답 오류가 발생하며, 파이프라인 명령의 결과가 잘못 전달되거나 커넥션 풀의 연결이 비정상적으로 폐기될 수 있습니다.

💡 쉬운 설명

Redis와 통신할 때 명령을 보낸 순서와 다른 엉뚱한 답변을 받을 수 있는 오류입니다. 이로 인해 데이터가 잘못 처리되거나 연결이 끊어지는 문제가 발생할 수 있습니다.

🇺🇸 원문 (English)

go-redis is the official Redis client library for the Go programming language. Prior to 9.5.5, 9.6.3, and 9.7.2, go-redis potentially responds out of order when `CLIENT SETINFO` times out during connection establishment. This can happen when the client is configured to transmit its identity, there are network connectivity issues, or the client was configured with aggressive timeouts. The problem occurs for multiple use cases. For sticky connections, you receive persistent out-of-order responses for the lifetime of the connection. All commands in the pipeline receive incorrect responses. When used with the default ConnPool once a connection is returned after use with ConnPool#Put the read buffer will be checked and the connection will be marked as bad due to the unread data. This means that at most one out-of-order response before the connection is discarded. This issue is fixed in 9.5.5, 9.6.3, and 9.7.2; however, 9.7.2 has been yanked and 9.7.3 is the lowest available patched version on the 9.7.x branch. As a workaround, set the flag `DisableIndentity` to `true` when constructing the client instance.

📍 영향받는 시스템

go-redis versions prior to 9.5.5, 9.6.3, and 9.7.2

⚔️ 공격 벡터

네트워크 지연이나 타임아웃을 유발하여 클라이언트의 응답 순서를 교란하는 방식

🛡️ 대응 방법

go-redis를 9.5.5, 9.6.3 또는 9.7.3 이상의 버전으로 업데이트하거나, 클라이언트 설정에서 DisableIdentity를 true로 설정하십시오.

🔧 검증 코드

출력된 go-redis의 버전을 확인하여 취약한 버전 범위에 해당하는지 체크합니다.

Shell / Script
go list -m all | grep go-redis

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N

💻 영향받는 소프트웨어

Redis