[하루한줄] CVE-2020-8437: uTorrent vulnerability, misparse to RCE
URL
CVE-2020-8437 Vulnerability And Exploit Overview
Target
uTorrent <= 3.5.5
Explain
CVE-2020-8437은 uTorrent의 peer끼리 주고받는 BitTorrent protocol에서 발견된 취약점입니다. BitTorrent protocol을 시작하는 Handshake 페킷에는 bencoded dictionary를 담고 있는 M field
가 존재합니다.
bencoded dictionary는 python dictionary와 매우 유사하며 Key와 Value를 갖습니다. 여기서 중요한 점은 nested(중첩된) dictionary의 존재인데, 즉 Value가 또 다른 하나의 dictionary가 될 수 있습니다. 중첩된 dictionary를 파싱하는 과정에서 발생하는 취약점입니다.
d
4:keyA 6:valueA
4:keyB
d
5:apple 3:pie
6:orange 5:juice
e
e
충접된 dictionary를 파싱 할 때 몇 번째 layer에서 파싱하고 있는지를 32bit 크기의 bit field
에 기록합니다. layer를 하나 들어갈 때마다 이 bit field에 한 비트씩 플래그를 설정합니다( ex. 2번째 layer 파싱 중 : 0000 0000 0000 0011 ). 만약 layer가 32보다 많이 중첩된 dictionary를 파싱하게 된다면 Crash가 발생합니다.
malicious bencoded dictionary를 담은 .torrent
를 받는 peer의 uTorrent는 nested dictionary를 파싱하는 과정에서 Crash가 발생하고 RCE까지 이어질 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.