🇰🇷 한글 설명
Redis 3.2.7 이전 버전의 networking.c에서 HTTP 프로토콜 검증이 부재하여, HTTP 요청(POST, Host 헤더)이 Redis TCP 포트로 전송될 때 이를 거부하지 않음. 이를 통해 공격자가 크로스 프로토콜 스크립팅 공격으로 Redis 명령을 실행할 수 있습니다.
💡 쉬운 설명
Redis 서버가 HTTP 요청과 Redis 요청을 구분하지 못해서, 공격자가 웹 브라우저나 HTTP 클라이언트를 통해 Redis 명령을 실행할 수 있습니다. Redis 포트가 인터넷에 노출되어 있으면 누구나 공격 가능합니다.
🇺🇸 원문 (English)
networking.c in Redis before 3.2.7 allows "Cross Protocol Scripting" because it lacks a check for POST and Host: strings, which are not valid in the Redis protocol (but commonly occur when an attack triggers an HTTP request to the Redis TCP port).
📍 영향받는 시스템
Redis 3.2.7 이전 모든 버전 (3.0.x, 3.2.0~3.2.6 등)
⚔️ 공격 벡터
HTTP 요청을 Redis TCP 포트(기본값 6379)로 전송하여 Redis 명령어 실행
🛡️ 대응 방법
Redis를 3.2.7 이상으로 업그레이드 또는 방화벽으로 Redis 포트를 내부 네트워크만 접근 허용하도록 제한
🔧 검증 코드
출력된 버전이 3.2.7 미만이면 취약함. 3.2.7 이상이면 안전하고, 명령어 실패면 Redis 미설치 또는 경로 설정 필요
redis-server --version 2>/dev/null | awk '{print $NF}'