[하루한줄] CVE-2020-16602 : Remote File Execution on Razer Chroma SDK Server
URL
Target
Razer Chroma SDK Rest server <= 3.12.17
Explain
Razer Chroma는 Razer사의 게이밍용 컴퓨터 주변기기들의 RGB 효과를 제어하는 플러그인으로 Razer synapse 설치 시 자동으로 설치됩니다. SDK가 존재해서 third party가 Razer Chroma와 연동되는 기능을 만들 수 있습니다.
예 ) Razer 제품과 RGB효과를 동기화하는 케이스, 음악에 맞춰 Razer 제품의 RGB를 변화시키는 음악 스트리밍 서비스
Razer Chroma SDK Rest server는 Razer Chroma를 사용하는 컴퓨터에서 동작하고 있으며 모든 네트워크 인터페이스와 bind 해 54236번 포트로 listen 합니다. http://localhost:54235/razer/chromasdk
혹은https://chromasdk.io:54236/razer/chromasdk
URI로 App info를 담은 POST request를 받으면 그 App info에 따라 C:\ProgramData\Razer Chroma SDK\Apps\
에 실행파일을 생성하고 실행합니다.
몇 가지 이슈로 인해 race-condition을 이용한 arbitrary code execution이 가능합니다.
해커는 Razer Chroma SDK Rest server가 동작하는 컴퓨터(이하 victim)의 IP주소만 알면 원격으로 POST request를 보내 임의의 파일명을 갖는 실행파일을 victim에 생성할 수 있습니다.
http://192.123.456.789:54235/razer/chromasdk -> bad request Addit hosts.txt on Attacker's system --- 192.123.456.789 chromasdk.io --- http://chromasdk.io:54235/razer/chromasdk -> http://192.123.456.789:54235/razer/chromasdk
- POST request를 받아
C:\ProgramData\Razer Chroma SDK\Apps\
에 생성한 실행파일은 Admin권한이 있는 유저만 수정할 수 있습니다. 하지만C:\ProgramData\Razer Chroma SDK\Apps\
폴더는 Admin 권한이 없어도 수정이 가능합니다.
- POST request로 생성할 실행파일(test.exe)과 동일한 이름의 파일이 이미
C:\ProgramData\Razer Chroma SDK\Apps\
폴더 안에 존재하면 Razer Chroma SDK Rest server는 기존 파일의 내용을 덮어씁니다. 하지만 그 실행파일의 권한은 그 파일이 실행되기 전까진 수정하지 않으므로, 해커는 race-condition으로 test.exe의 내용을 수정해 arbitrary code execution을 할 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.