[하루한줄] CVE-2022-21893: Attacking RDP from inside

URL

Attacking RDP from Inside

Target

Windows Server 2012 R2 이후부터 최신버전까지

Explain

RDP를 통해 원격으로 시스템에 접속한 일반 유저가 연결된 다른 client의 file system에 대한 엑세스 권한을 얻을 수 있는 취약점이 발견되었습니다. 시스템에 접속 중인 다른 유저의 클립보드 밑 데이터에 접근하고 수정하여 권한 상승까지 가능합니다.

RDP는 하나의 연결을 virtual channel이라는 여러 개의 논리적 연결로 분리합니다. 이중 몇 개의 체널은 svchost.exe에 호스트되는 DLL로 구현되어 Remote Desktop Services(RDS)에서 처리하는 반면 clipboard 등 다른 프로세스에서 처리하는 체널도 존재합니다.

virtual channel의 data는 프로세스와 RDS service사이에서 TSVPIPE named pipe를 사용해 전달됩니다. 문제는 TSVCPIPE의 security descriptor는 모든 유저가 동일한 이름의 server instance를 생성하도록 허용하기 때문에 다음과 같은 공격이 가능합니다.

  1. 해커가 원격 시스템에 접속한 뒤 named pipe의 목록을 확인해 이미 존재하는 TSVCPIPE pipe와 동일한 이름의 pipe server instance를 생성합니다.

  2. 또다른 client가 연결을 시도하면 RDS는 session과 pipe client가 접속할 pipe server instance를 생성합니다.

  3. named pipe의 FIFO 특성 때문에 pipe client는 2번 과정에서 생성된 pipe server instance가 아니라 해커의 pipe server instance에 연결하게 됩니다.
  4. 해커가 2번 과정에서 생성된 pipe server instance에 접속하면 통신의 양 끝단을 모두 통제할 수 있게 되고 man-in-the-middle 공격을 할 수 있게 됩니다.


본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.