Tight VNC 힙 버퍼 오버 플로우 취약점
2022. 9. 16. 18:08
Tight VNC는 원격 데스크톱 소프트웨어 응용 프로그램입니다. 다른 컴퓨터에 접속하여 마우스나 키보드로 원격 컴퓨터를 제어할 수 있습니다. Tight VNC는 바로 사용할 수 있도록 설계되어 시스템 관리자 및 지원 서비스뿐만 아니라 Tight VNC의 이점을 필요로 하는 모든 사용자에게 매우 편리할 수 있습니다. 이 시스템은 다른 VNC 시스템과 마찬가지로, 실행 중인 시스템의 화면을 공유하는 Server와 서버에서 수신한 원격 화면을 보여주는 Viewer 두 부분으로 구성됩니다.
그중, Tight VNC vncviewer에서 힙 버퍼 오버 플로우 취약점이 확인되었습니다.
이 취약점은 rfbproto.c의 InitialiseRFBConnection에서 누락된 정수 값 유효성 검사로 인해 발생합니다.
원격 공격자는 Tight VNC vncviewer를 사용하여 악의적으로 조작된 메시지를 대상 사용자에게 전송하여 이 취약점을 이용할 수 있습니다.
취약점의 식별자는 CVE-2022-23967이며 CVSS(v3) 9.4점으로 평가되었습니다.
기술 개요:
VNC는 RFB(Remote Framebuffer) 프로토콜을 사용합니다. 이 프로토콜은 클라이언트가 다른 컴퓨터의 윈도우 시스템을 보고 제어할 수 있도록 하는 그래픽 사용자 인터페이스에 대한 원격 액세스를 위한 간단한 프로토콜입니다.
Tight VNC에 힙 버퍼 오버 플로우가 있습니다. InitialiseRFBConnection()의 ServerInit 메세지에서 데스크톱 이름을 수집하는 동안 문제가 발생하게 되며, 이 함수는 가변 크기 name-string필드를 제외한 ServerInit 메시지 필드를 읽기 위해 ReadFromRFBServer()를 호출합니다.
si.nameLength에 저장된 name-length 필드를 사용하여 malloc()를 호출하고 null 종료를 포함하기 위해 바이트를 추가합니다. 최대 32비트 값(0xFFFFFF)의 name-length 값이 송신되면 부호 없는 정수 오버 플로우가 발생하여 malloc()가 사이즈 0으로 호출되고, 제로 사이즈 버퍼를 사용하여 최대 0xFFFFFF 바이트를 힙에 복사합니다.
원격 공격자는 Tight VNC vncviewer를 사용하여 악의적으로 조작된 메시지를 대상 사용자에게 전송하여 이 취약점을 악용할 수 있습니다. 공격에 성공하면 클라이언트 프로세스의 보안 컨텍스트에서 원격 코드가 실행될 수 있지만, 공격에 실패하면 서비스 거부 상태가 발생할 수 있습니다.
문제의 트리거:
- 대상 시스템에는 취약한 제품이 설치되어 있어야 합니다.
- 타깃은 공격자 포트에 대한 네트워크 연결이 있어야 합니다.
트리거 조건:
타깃은 공격자 서버에 접속하여 프로토콜 및 보안 핸드쉐이크를 실행하고 ClientInit 메시지를 전송하며 악의적인 ServerInit 메시지를 수신합니다. 이 취약점은 영향을 받는 제품이 ServerInit 메시지를 처리할 때 트리거 됩니다.
공격 전달:
다음 응용 프로그램 프로토콜을 사용하여 이 취약점을 악용하는 공격을 전달할 수 있습니다.
- RFB
해결 방안:
이 취약점으로 인한 위험은 다음을 통해 완화하거나 제거할 수 있습니다.
- 신뢰할 수 없는 호스트에 대한 VNC 연결 트래픽 차단.
- Linux 시스템에서 Tight VNC 클라이언트를 사용하지 마십시오.
Tight VNC에서는 이 취약점에 대한 패치를 아직 릴리즈 하지 않았습니다.