电脑装配网

Stack Overflow网站用户电子邮件地址泄露

 人阅读 | 作者xiaolin | 时间:2023-01-04 16:10

22.jpg

近期我正在为开源服务网站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

对应我的头像为:

33.png

这个服务于2007年一经推出就迅速发展,它也是WordPress网站上评论的默认头像。这其实是一个绝妙的主意:只要上传一次头像,它就可以在互联网上一直跟随你。一旦更新图片,所有网站上的头像都会更新。但不幸的是,他们选择的哈希算法似乎不是特别安全。

44.png

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所提供的服务。

 


文章标签:

本文链接:『转载请注明出处』