Stack Overflow 泄露用户电子邮件

2025-06-08

Stack Overflow 泄露用户电子邮件

我正在开发一个面向开发者的“Google Alerts”服务GitSpo。我还没搞清楚它到底是什么,但它发展迅速,而且人们都很喜欢它。GitSpo 的很大一部分功能是聚合来自不同社交网络的数据,例如 Twitter、LinkedIn 和 Stack Overflow。这时我注意到一个奇怪的现象:Stack Overflow 默认的用户资料使用的是 Gravatar。

对于不熟悉 Gravatar 的人来说,它是一项服务,允许你将一张图片(头像)与你的邮箱地址关联起来。其他网站(例如 Stack Overflow)可以使用该图片,为在其网站上注册的用户显示头像。用户的头像可以通过对邮箱地址进行哈希处理来找到,例如,我的邮箱地址是gajus@gajus.com。任何知道我邮箱地址的人都可以生成一个 Gravatar 网址:

https://www.gravatar.com/avatar/74a5bd659b3a8af09a336a932eebe3b1

这将加载我的头像:

加尤斯·库伊齐纳斯

这项服务于 2007 年推出,并迅速发展,部分原因在于它是 WordPress 网站评论的默认头像。这是一个巧妙的想法:只需上传一次头像,它就会在互联网上跟随你。更新你的 Gravatar,你的头像就会在所有网站上更新。可惜的是,他们选择的哈希算法并不特别安全。

命令5

Gravatar 头像是通过 MD5 哈希算法生成的,该算法会对您的电子邮件(例如 )进行修剪后的小写表示md5('gajus@gajus.com') === '74a5bd659b3a8af09a336a932eebe3b1'。这是一种快速哈希算法。即使在当时,使用 MD5 哈希算法来哈希私人数据也是一个糟糕的选择。如今,MD5 数据库已包含超过 90 万亿个哈希值。此外,由于大多数电子邮件只包含一小部分字符(/^[a-z@\-.]+$/),并且您可以假设它们的结尾(例如 等热门电子邮件域名@gmail.com),因此有很多排列需要预先进行哈希处理。

作为一项实验,我选择了 1000 个 Stack Overflow 配置文件的哈希值,并使用了其中一种 MD5“解密”服务,这给了我 721 封电子邮件(成功率为 72%)。

然而,有趣的用例并非获取电子邮件。许多开发者的电子邮件已经是半公开的,例如,GitHub 用户的电子邮件地址可以通过他们的公开个人资料、提交日志、许可证文件,甚至代码中的注释获取。由于GitSpo拥有所有公开 GitHub 用户和代码库的索引,因此我能够提取相关的电子邮件地址,对其进行哈希处理,然后将其与 Stack Overflow 进行匹配。所有 1000 个用户都参与了。

值得注意的是,Stack Overflow 并非唯一一家使用 Gravatar 的服务(WordPress、HootSuite、TechDirt、Disqus 等等)。Stack Overflow 之所以脱颖而出,仅仅是因为它是一个开发者资源平台,而这一点竟然被忽略了,这让我很惊讶。

Stack Overflow 目前对此束手无策——互联网上流传着许多 Stack Overflow 网站的复制品。不过,对于新加入 Stack Overflow 的用户来说,最好还是停止依赖 Gravatar 服务。

鏂囩珷鏉ユ簮锛�https://dev.to/gajus/stack-overflow-is-leaking-user-emails-512n
PREV
升级你的终端/命令行导航
NEXT
我的开发工具上个月的销售额为 16,285 美元