Telegram RCE
오타로 인한 RCE 취약점
올해 4월, X(트위터)에 Windows용 텔레그램에서 RCE 취약점이 발견되었다는 영상이 게시되었다. 해당 영상은 Windows용 텔레그램 채팅 창에서 동영상을 클릭했을 때, 계산기가 실행되는 모습을 담고 있었다.
이 영상이 화제가 되어 사용자들 사이에서 우려가 커지자 텔레그램 측은 이에 대해 그런 취약점이 존재한다는 것을 확인할 수 없다고 답변하며 영상이 조작되었거나 거짓일 가능성이 높다고 반박했다.
PoC
논란이 일어난 다음 날, XSS 해킹 포럼에 해당 취약점의 PoC가 공개되었다.
이 PoC는 텔레그램 소스 코드 상의 오타로 인해 .pyzw 파일을 전송할 때 보안 경고 창을 우회할 수 있는 취약점을 이용하였다. .pyzw 파일의 MIME 타입을 video/mp4로 설정하여, 수신자가 동영상 파일로 착각하도록 위장할 수 있었고 피해자가 의심없이 파일을 클릭할 경우, 실제로는 동영상 대신 Python 코드가 실행되었던 것이다.
페이로드는 아래와 같다.
1
__import__("subprocess").call(["cmd.exe"])
자세한 PoC는 여기에서 찾아볼 수 있다.
Exploit Requirements
- 4.16.6 이전의 Windows용 Telegram 앱
- Python이 설치되어 있어야 함
- 사용자가 .pyzw 파일을 클릭해야 함
Action taken by Telegram
텔레그램은 위험한 파일 확장자 목록을 확인하는 코드의 오타를 수정하였다. 오픈 소스이므로 GitHub 페이지에서 커밋을 확인할 수 있다.
또한, 추가적인 보안 조치로 사용자가 pyzw 파일을 받을 때마다 파일 이름 끝에 “.untrusted” 확장자가 추가되어 사용자에게 전송되도록 하였다. 이로 인해 파일이 Python에서 자동으로 실행되지 않도록 방지 할 수 있었으며 사용자가 파일을 열 때 어느 프로그램을 사용할지 확인하는 절차가 추가되어 의도치 않은 코드 실행을 막을 수 있었다.
Reference
https://github.com/telegramdesktop/tdesktop/commit/11b57ff7d3b61684daf03b350d90e5f8d68c24b1