为什么是“再谈”,因为这个安全问题已存在多年,且变成“讳疾忌医”的历史安全问题了,到底有多少人会因此受害,不得而知,堪称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的一些疑问:
如何修补这个安全问题?
非常简单,在腾讯3000亿市值中抽点钱将单点登陆服务的通信都加密,最少弄个HTTPS不。
clientkey的时效性问题,我的微博中有个腾讯的同学@我说这是个简单的问题,在不牺牲性能的情况下clientkey可以做成一次性的,用完了就失效,其实这也是我想说的,如果对于腾讯来说是简单问题,那就just do it吧。
这两日有朋友在微博上问起clientkey是什么,于是引发了各种爆料,clientkey到底是啥呢?
clientkey是串联腾讯所有在线服务的单点登录系统的关键密钥。
说得专业一点类似web程序中session机制中靠URL传递的session id的session url。
说得通俗一点就是你QQ的密码,是通过加密算法将你的QQ密码二次加密后会有时间限制的密码。
那这里到底有什么安全问题呢?
腾讯的这套单点登录系统直接就是HTTP明文通信的,如果您觉得某些服务不重要的话,确实可以用明文,但是如果N个服务,连带您的QB,您的隐私等等还不够重要的话,那也就是没什么安全问题了。
还会产生什么高级安全问题?
我们知道局域网可以sniffer,你嗅探到了这个clientkey的话,就等于掌控了人家所有的QQ服务。
快速登陆插件的安全问题,这个问题某牛09年就以安全公司的身份正式通报给腾讯了,似乎腾讯没有什么安全公告,值得庆幸的是10年该插件的漏洞才算基本修补完毕,并给快速登陆插件生成的clientkey加入了IP限制,不过客户端第一种64位clientkey仍然无任何IP限制。
或许还有未知的0DAY,大牛们从未公布。
|