结论:疑似攻击者通过利用错误MIME type实现客户端欺骗。

涉及Telegram中的两个API功能——sendVideoInputFile

sendVideo中的video字段支持两种输入方式,“InputFile or String”,

- (String)传递一个文件 ID(以字符串形式)来发送存储在 Telegram 服务器上的视频(推荐做法)
- (String/InputFile)传递一个 HTTP URL(以字符串形式)以便 Telegram 从互联网获取视频
- (InputFile)使用 multipart/form-data 上传一个新视频。

问题出在第二种,InputFile - Sending by URL时,目标资源可以拥有一个自定义的MIME标签,以指示其他Telegram客户端应该以什么方式加载这个资源。

而这些不怀好意的.pyzw文件,(可能由于漏洞)在这里都被指定为了video/mp4,导致其他Telegram客户端将以播放器模式展示这个文件。



响应标头:>图1<
请求方json:
{
  "dcId": number,
  "location": {
    "_": "inputDocumentFileLocation",
    "id": "*",
    "access_hash": "*",
    "file_reference": [
      *, *, *, *
    ]
  },
  "size": 42,
  "mimeType": "video/mp4",
  "fileName": "***.pyzw"
}


另外,Telegram Desktop的影片播放方式决定了Telegram Desktop将会把这些较小的视讯资源放置在本地下载目录,然后通过“执行”的方式来加载本地影片至内嵌播放器,这也就是为什么在用户点击这些“假影片”后会自动执行攻击者编写的代码。