Stack Overflow网站用户电子邮件地址泄露
近期我正在为开源服务网站GitSpo开发一个“Google Alerts”,因此经常访问该网站。虽然我还没彻底搞清楚这个网站的所有特性,但它发展很快,很多人都很喜欢它。而GitSpo的一大特性是聚合了来自很多不同社交网络的数据,如Twitter、LinkedIn和Stack Overflow。而就在此时,我注意到一个奇怪的现象:Stack Overflow默认的用户配置文件使用了Gravatar上的文件。
可能有些人还不是很熟悉Gravatar,它是一项帮助你将头像与电子邮件关联起来的服务。其他网站(例如Stack Overflow)可使用Gravatar用户的图像作为帐户头像。而用户的头像是通过电子邮件的哈希值标识的,例如我的电子邮件是gajus@gajus.com
,则相关头像的URL为:
https://www.gravatar.com/avatar/74a5bd659b3a8af09a336a932eebe3b1
对应我的头像为:
这个服务于2007年一经推出就迅速发展,它也是WordPress网站上评论的默认头像。这其实是一个绝妙的主意:只要上传一次头像,它就可以在互联网上一直跟随你。一旦更新图片,所有网站上的头像都会更新。但不幸的是,他们选择的哈希算法似乎不是特别安全。
Gravatar图像是由MD5哈希值决定的,即md5('gajus@gajus.com') === '74a5bd659b3a8af09a336a932eebe3b1'
。这是一个非常简单的哈希计算,从任何角度看,这都是一个糟糕的选择。目前,某个著名MD5数据库已经包含超过90万亿个哈希值。此外,大多数电子邮件地址前半部分通常只使用了非常普通的字符(/^[a-z@\-.]+$/
),而后缀往往是@gmail.com
这样的流行域名,因此破解难度并不高。
为了证明我的猜测,我选择了1000个Stack Overflow配置文件的哈希,并使用了某个MD5“解密”服务,最后我得到了721封电子邮件(成功率72%)。
不过,有趣的不是得到电子邮件地址。许多开发人员的电子邮件地址都是半公开的,例如GitHub用户的电子邮件可以从他们的公开资料、提交日志、许可文件甚至代码中的注释找到。而GitSpo有一个所有公开GitHub用户和存储库的索引,所以我能够找出相关的电子邮件地址,对它们进行哈希计算,然后与Stack Overflow的数据进行匹配。
值得一提的是,Stack Overflow并不是唯一使用Gravatar服务(WordPress、HootSuite、TechDirt、Disqus等)的网站。而我之所以提到Stack Overflow,是因为它是一个开发人员网站,本应比其他网站更安全。
也许现在Stack Overflow很难对此进行补救——Stack Overflow网站的众多资源都在互联网上传播。请从现在开始不要过度依赖Gravatar所提供的服务。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/@gajus/stack-overflow-is-leaking-user-emails-58c83513b5d
最新评论