2011年12月

CSDN网站600万用户密码泄露反映的问题

事件回顾

21日上午,网上开始有人议论说某网站数据库遭泄露。中午以后,陆续有人称已经下载到那份数据,有人证实其账户密码邮箱均准确无误地在那份数据中找到。同时网上多处提供此份数据的下载,下载地址也在一些专业论坛和QQ群被疯狂传播。

当晚20点41分,CSDN网站证实其部分用户数据泄露并致歉,称已向警方报案。

23日,CSDN发布更详细的账号处理办法,锁定存在安全隐患的账号,请用户找回并修改密码。

此次用户信息泄露事件在业内影响很大,本人当天下午在同事下载的那份数据中,试着查找自己的用户名,果然发现自己的用户名、密码、邮箱均准确。当时很震惊,这份200多兆的数据表明,超过600万用户信息被公开。于是,我立马通知朋友、同事,去各大网站改密码。

下面本人简单谈一下此次事件暴露出来的问题

0×01 加密

让人哭笑不得的是,这份数据中的密码竟然是明文存储的,没有经过任何处理。任何下载到这份数据的人,都可以直接看到账号和密码。我认为,这是非常不符合安全规范的做法。这样做,即使你的数据库在你们公司存储得非常妥当,绝对不可能泄露;那如果是公司内部员工,尤其是接触密码等敏感信息数据的技术人员,是不是可以容易看到密码。你能保证他不外漏吗!所以说,对密码这种敏感信息至少要进行加密处理,让任何人都无法直接看到密码原文。

0×02 传播

平常我们听到某某系统数据泄露,都很难得到被泄露的数据,只知道在黑客那里。这次不一样,在听问数据泄露的同时,已经可以轻易地下载到这份数据,几乎是人手一份。当时,我在微博上看到业界一人士谴责CSDN事后处理不当,说CSDN不应该光道歉,应该去截堵下载源,让数据的传播降到最低。据了解,当时金山某员工在微博上分享了一个下载源,事后他承认自己做了件错事。据说,迅雷全面屏蔽CSDN泄露数据,这是好事。

0×03 教训

这次密码泄露的600余万用户,绝大多数都是技术人员。各种IT系统,也是出自他们之手。这次,他们的账号和密码也暴露无遗,简直是个笑话。有网友发微博称,“这次CSDN账号密码泄露事件,算是给广大程序员上一堂生动的课吧。自己尝尝密码被泄露的苦果,以后做网站,得好好做账号系统,好好做安全。”

0×04 OpenID

这次密码泄露事件影响之大的另一个原因是,大多数人在多家网站采用同一个账号和密码。这样记忆方便,但问题也很突出,一家网站数据泄露,就都泄露了。据说,当时有些人拿那份数据的密码去套支付宝的密码。倘若你得支付宝密码也与CSDN的密码一致,那别人就可以登录你得支付宝;如果你的支付密码和登录密码刚好一样,且账户有余额,那就杯具了。

网上也有提供密码管理的工具,就是为了解决要记很多账号密码的烦恼。不过,我还是认为OpenID是更好的解决办法。维基百科对OpenID的解释是,OpenID 是一个去中心化的网上身份认证系统。对于支持OpenID的网站,用户不需要记住像用户名和密码这样的传统验证标记。取而代之的是,他们只需要预先在一个作为OpenID身份提供者(identity provider, IdP)的网站上注册。登录一个支持OpenID的网站非常简单,该网站会引导用户到OpenID服务网站去验证身份,验证成功后会回到要登录的网站且已经登录成功。这样,我们只需要记住一个账号、密码就可以全网通行了,当然这个前提条件是,其他网站都支持你使用的OpenID。

Update 20140427: 对于网站,浏览器端也可以将用户输入的密码加密,然后提交,确保传输的不是明文密码,参见《浏览器端实现MD5加密》。