最新消息:

腾讯单点登陆

网络知识 admin 1879浏览 0评论

再谈QQ史上最大的“后门”

为什么是“再谈”,因为这个安全问题已存在多年,且变成“讳疾忌医”的历史安全问题了,到底有多少人会因此受害,不得而知,堪称QQ的这个史上最大的“后门”。

我们先来科普腾讯单点登陆的某个工作流程,然后再说问题:

 

1.腾讯单点登录中心的HOST是ptlogin2.qq.com,打开wireshark,设置一个filter, http.host==ptlogin2.qq.com

 

2.点击QQ菜单栏上的使用各个服务,比如微博,EMAIL,QZONE,paipai等,大家应该知道是不需要输密码的,这个就是所谓的一键登录。

3.抓包以后我们可以直接看到其实一键登录就是访问了一个URL

 

 

4.这个URL的关键就是我红条涂掉的第一行clientkey,同时服务端返回一个叫skey的cookie值,您这就算登录了。

5.该URL即是单点登录的认证URL,格式如下:

http://ptlogin2.qq.com/jump?ptlang=2052&clientuin=QQ号码&clientkey=64个字节的KEY&u1=需要登陆的QQ服务网站地址

 

 6.上面其实只是腾讯单点登录系统的基础部分,单点登录系统还包含一个IE插件即网页中的一键登录

 

点击快速登录后会产生如下格式的认证URL

http://ptlogin2.qq.com/jump?clientuin=QQ号&clientkey=192位字节的KEY&keyindex=9&u1=需要登陆的QQ服务网站地址

 

科普完毕后就可以解答之前关于clientkey的一些疑问:

 

这两日有朋友在微博上问起clientkey是什么,于是引发了各种爆料,clientkey到底是啥呢?

clientkey是串联腾讯所有在线服务的单点登录系统的关键密钥。

说得专业一点类似web程序中session机制中靠URL传递的session id的session url。

说得通俗一点就是你QQ的密码,是通过加密算法将你的QQ密码二次加密后会有时间限制的密码。

 

那这里到底有什么安全问题呢?

腾讯的这套单点登录系统直接就是HTTP明文通信的,如果您觉得某些服务不重要的话,确实可以用明文,但是如果N个服务,连带您的QB,您的隐私等等还不够重要的话,那也就是没什么安全问题了。

clientkey的时效性问题,clientkey的URL并不是一次性的,可重复使用。

clientkey的客户端验证问题,clientkey无法正确验证客户端。

 

还会产生什么高级安全问题?

我们知道局域网可以sniffer,你嗅探到了这个clientkey的话,就等于掌控了人家所有的QQ服务。

快 速登陆插件的安全问题,这个问题某牛09年就以安全公司的身份正式通报给腾讯了,似乎腾讯没有什么安全公告,值得庆幸的是10年该插件的漏洞才算基本修补 完毕,并给快速登陆插件生成的clientkey加入了IP限制,不过客户端第一种64位clientkey仍然无任何IP限制。

或许还有未知的0DAY,大牛们从未公布。

 

 如何修补这个安全问题?

非常简单,在腾讯3000亿市值中抽点钱将单点登陆服务的通信都加密,最少弄个HTTPS不。

clientkey的时效性问题,我的微博中有个腾讯的同学@我说这是个简单的问题,在不牺牲性能的情况下clientkey可以做成一次性的,用完了就失效,其实这也是我想说的,如果对于腾讯来说是简单问题,那就just do it吧。

clientkey无法正确验证客户端,仅仅靠IP是不够的,您在架构该系统的同时是否真正想过了验证QQ号的主人在使用 clientkey。

真正的解决方案 http://hi.baidu.com/rayh4c/blog/item/626b7f8bd3ad3809c9fc7a37.html

 

PS:

本文介于专业和非专业之间,腾讯在各个安全领域如账户安全,业务安全等都是国际领先的,但个人认为切不可在整个安全基础架构中最核心的一环掉链子。本文有些问题并未深入描叙,如有不妥或疑惑,可与本人私下讨论,谢谢。

今天更新了下本文,把本文的暗坑给挖出来,仅供腾讯的同学参考。

转载请注明:jinglingshu的博客 » 腾讯单点登陆

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址