Redis 블로킹 리스트 순회가 힙 해제 후 사용을 유발해 원격 코드 실행에 이름
이 취약점은 블록된 클라이언트를 깨우는 하위 로직에 있습니다. 여러 클라이언트가 같은 키를 기다리며 블록 상태에 들어갔을 때, 서버는 블록 리스트를 순회하며 클라이언트 명령 실행을 차례로 재개합니다. 이 과정에서 메모리 축출 메커니즘이 발동하면 후속 클라이언트의 연결 자원이 강제로 해제되는 반면 순회자는 해제된 리스트 노드에 대한 참조를 그대로 보유해, 힙 해제 후 사용 결함이 발생합니다. 공격자는 특수 제작한 블로킹 명령과 메모리 임계값 설정을 조합해 네트워크로 경쟁 조건을 만들고, 인증 없이 이 메모리 손상을 이용해 프로그램 제어 흐름을 탈취할 수 있습니다. 영향을 받는 시스템은 임의 코드 실행과 프로세스 종료 위험에 놓이며 업무 연속성이 심각하게 훼손됩니다.
- 스마트 포인터나 참조 계수 메커니즘으로 동적 메모리 수명주기를 자동 관리할 것을 권장합니다. 컨테이너 구조를 순회할 때는 스냅샷 사본이나 지연된 안전 삭제 전략을 사용해 순회자 무효화를 피하고, 아울러 객체 상태 표식을 엄격히 검증해 접근 전에 널 포인터와 유효성 단언을 수행하며, 정적 분석 도구로 포인터 역참조 경로를 정기적으로 점검해 매달린 참조의 소지를 제거하십시오.


