[하루한줄] CVE-2021-42835: Plex Media Server의 권한 상승 취약점

URL

https://ir-on.io/2021/12/02/local-privilege-plexcalation/

Target

  • Plex Media Server

Explain

Plex Media Server는 글로벌 스트리밍 미디어 서비스 및 클라이언트-서버 미디어 플레이어 플랫폼 입니다. Windows용 Plex Media Server에서 SYSTEM 권한으로 코드를 실행할 수 있는 권한 상승 취약점이 발견되었습니다.

취약점의 원인은 업데이트 파일의 유효성을 검사하는 CheckBundle() 함수와 업데이트 파일 실행이 각각 CreateFile() 함수를 호출하는 과정에서 발생하는 TOCTOU입니다.

CheckBundle() 함수는 업데이트 파일의 유효성을 검사하는 함수입니다. 해당 함수는 인자로 받은 파일을 CreateFile() 함수 호출을 통해 서명된 업데이트 파일인지 확인합니다. 업데이트 파일이 서명된 정상적인 파일이라면 Install() 함수에서 다시 CreateFile() 로 파일을 실행해 업데이트를 진행하는데, CheckBundle()의 유효성 검사를 통과한 이후 파일을 Install() 호출 전 임의 코드가 포함된 악성 파일로 교체하면 유효성 검사를 건너뛰고 임의 코드를 실행할 수있습니다. 이때 업데이트 과정은 RPC 인터페이스로 이루어지고, 업데이트 클라이언트의 RPC 호출이 유저 컨텍스트에서 실행되도록 하는 RPCImpersonateClient() 또는 CreateProcessAsUser() 호출이 없어 SYSTEM 권한으로 작동하기 때문에 해당 TOCTOU를 통한 임의 코드 실행이 SYSTEM 권한으로 작동합니다.

취약점 보고서에는 James Forshaw의 SetOpLock 툴을 사용해 업데이트 파일 접근 시도가 있으면 접근을 제한합니다. 그 뒤 타겟 업데이트 파일의 핸들을 사용해 파일의 내용을 해커의 악성 파일로 교체하고 접근 제한을 해제하면 Plex Media Server가 SYSTEM 권한으로 해커의 코드를 실행하도록 할 수 있습니다.