CSDN明文口令泄露的启示
2011年12月21日晚,某计算机专业的大学生寝室,某同学大叫到:“兄弟们,最新的日本XX女星的AV片已经下好,大家快过来看啊,相当精彩啊~~~”,然而,这个寝室里的其它同学似乎没有听到这哥们的呼喊,于是,这哥们又叫了三次,没有人理他,因为大家都在眉飞色舞地谈论着CSDN的明文密码和用户帐号泄露的事情,并在网上查找着下载CSDN那600万的用户数据……上面这个故事是我编的,只是想描述一下昨晚的情形。
其实,CSDN明文密码并不是什么稀奇的事情,我是2000年注册CSDN的吧,当时找回口令的机制就是把口令直接传回来了,这一定是明文了。去年去CSDN参加移动互联网沙龙的时候,范凯和蒋涛说过明文密码的事,不过他们说的是很早以前的事了,而且一笔带过了。1年后的今天,事情又暴了,可见,“出来混的,迟早是要还的”这句话是几近真理的。
我在以前的BLOG里就提到过CSDN的明文密码(在“如何设计用户登录功能”一文)和 帐号泄露(“如何设计自己的口令”) 的事(由此可见,酷壳里的很多文章里的事都应验了,因为我知道“出来混的,迟早是要还的”)
(可悲吧?还是程序员的网站呢,明文口令和用户信息泄露有悖于一个程序员网站的称号)
泄露的密码分析
我昨晚下载了www.csdn.net.sql文件,并分析了一下这个文件,经过各种awk, grep, sort, uniq, sed后,下面是我看到的东西:
- 有近45万的用户使用 123456789 和 12345678 做口令。
- 有近40万的用户使用自己的生日做口令。
- 有近15万的用户使用自己的手机号做口令。
- 有近25万的用户使用自己的QQ号做口令。
- 设置成弱口令的用户占了590万,也就是那种就算你用MD5或是SHA散列的也能很快就被暴力破解出来的口令。
- 只有8000多个用户的口令里在8个长度以上,并有大写字母,小写字母,数字,并不在字典表里。
(很好,这回泄露的还不单单只是明文用户密码和用户邮件,还有用户的手机号,生日和QQ号。挺好的)
下面,我们来看一下top 100的口令是什么?(第一列是采用这个密码个数,第二列是密码,我擦 dearbook是什么啊)简单地看了一下,top 一万的口令都很SB。比如什么woshishui, 123abc, aaa123456,01010101,haohaoxuexi,msconfig 相当的2B,还有P@ssw0rd,q1w2e3r4t5,看似文艺,实际很2的口令…. (可悲吧?还是程序员的网站呢,自己设的口令有悖于一个程序员的称号)
235033 123456789
212751 12345678
76346 11111111
45902 dearbook
34953 00000000
19986 123123123
17791 1234567890
15033 88888888
6995 111111111
5966 147258369
5553 987654321
5459 aaaaaaaa
5145 1111111111
5025 66666666
4435 a123456789
4096 11223344
3667 1qaz2wsx
3649 xiazhili
3610 789456123
3497 password
3281 87654321
3277 qqqqqqqq
3175 000000000
3143 qwertyuiop
3094 qq123456
3077 iloveyou
3061 31415926
2985 12344321
2886 0000000000
2826 asdfghjkl
2797 1q2w3e4r
2580 123456abc
2578 0123456789
2573 123654789
2540 12121212
2515 qazwsxedc
2396 abcd1234
2380 12341234
2348 110110110
2298 asdasdasd
2243 22222222
2166 123321123
2160 abc123456
2145 123456
2138 a12345678
2113 123456123
2106 a1234567
2100 1234qwer
1989 qwertyui
1986 123456789a
1971 aa123456
1918 asdfasdf
1891 99999999
1859 999999999
1859 123456aa
1854 123456123456
1699 520520520
1656 963852741
1652 741852963
1652 55555555
1589 33333333
1480 qwer1234
1384 asd123456
1339 77777777
1316 qweasdzxc
1285 code8925
1273 11112222
1268 ms0083jxj
1245 zzzzzzzz
1214 111222333
1206 qweqweqwe
1200 3.1415926
1183 123456qq
1148 147852369
1136 521521521
1121 asdf1234
1111 123698745
1109 1123581321
1058 asdfghjk
1054 q1w2e3r4
1038 12345678a
1003 woaini1314
991 1234abcd
988 123qweasd
975 1qazxsw2
967 woaiwojia
920 321321321
910 05962514787
894 123456987
892 kingcom5
882 zxcvbnm123
882 5845201314
853 0987654321
847 wwwwwwww
835 11111111111111111111
805 12345600
783 11235813
777 1q2w3e4r5t
772 10101010
770 123456asd
老生长谈安全问题
从酷壳出现开始我就在老生长谈用户安全的东西了,今天借着这个事,大家再去重温一下酷壳的文章吧:
- Twitter禁用的口令。看看去吧,一个好的网站应该如何引导用户设置强口令。Apple ID也是这样,需要你输入的口令有大小写,数字,非数字和字母,等等。今天CSDN的这个列表应该成为各大网站“口令禁用列表”。
- 有朋友说,明文口令是巨2的一件事,是的。我可以告诉你,这个明文口令有可能存在于所有国内的网站上,比如:QQ,新浪,人人,开心,天涯……。对于安全问题,你要做最坏的假设,鲁迅先生说过:“不惮以最坏的恶意来推测中国人”,所以,对于中国的网站你要做如下最坏假设:1)其以明文存我的口令,2)其内部不良员工会把我的信息泄露出去。不信你可以看看下面的某QQ群里的截图:(看看多玩网明文口令的消息吧,再看看这个消息吧 QQ邮箱和QQ号的)
- 你可能会说用MD5和SHA散列口令就好了,这个只比明文好一点点,因为有rainbow table,国外的号称达到99%覆盖,国内的达到93%覆盖。你加salt也没有用。就算我只能拿得到你的被散列的密码,没有rainbow和salt,我一样可以使用暴力破解,甚至就是尝试一下字典里的密码就可以了。这会非常快的,你可以看看本站的这篇文章“破解你的口令”,现在暴力破解MD5和SHA的口令很快的,因为MD5和SHA性能太好了。所以,你需要看看“如何防范密码被破解”,其会告诉你加密口令要用一个性能差的算法——bcrypt。(也可以参看Web开发中需要了解的东西中的如何安全保存口令一文)
- 所以,你有必要地读一读我的这篇“如何管理和设计自己的口令”,不要在同一网站上使用相同的口令,把口令的级别分好的组。自己管理好自己的口令。
- 对于Web用户的安全问题,程序员们一定要看一下 这两篇文章,你要是不看的话,你没有资格开发Web项目。
- 当你看过 如何设计用户登录功能 一文后,你一定会头晕的,所以,我想告诉你,这种事情最好不要自己干,使用OpenID 和 OAuth吧,人家把这事干到了极致了。而且这样会带来两个好处:
- 用户不需要自己维护和管理一套新的帐号。
- 用户的资料放在国外,从政治上来说是安全的。(八卦一下:Google总部要求中国谷歌所有开发团队不得在本地保存用户的信息)
- 再说一点,再说说如何让自己内部的用户数据不会被不良员工外泄。所有的开发团队都不允许直接操作用户的数据库,只允许通过安全的接口来验证用户,用户信息的数据库中需要对操作者有审计功能,永远不允许不受信的人或操作进行全库扫描。当然,我相信,国内的开发团队绝对达不到这一步(包括某些银行)。
- 再说一下,真正的安全系统是协同整个社会的安全系统做出来的一道安全长城,而不是什么都要自己搞。比如:通过很多方法“耦合”和银行和电信其是别的第三方的安全策略,比如,让用户绑定邮箱,绑定手机,绑定信用卡等。
最后说一下,CSDN在这次事件的表现看上去还是很不错的,道歉也很诚恳,但是,我还是希望CSDN反思一下为什么数据库会泄露了?内部有不良员工?还是系统不安全被黑?不要只是诚恳道歉,还要找自己的原因。其它的网站可能就很恶劣了。包括新浪,人人,开心等,最恶心的就是腾讯,你说他的安全有问题,他还找一堆人来骂你。
祝大家新年快乐!
(全文完)
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《CSDN明文口令泄露的启示》的相关评论
禁止明文保存密码,实质上就相当于防火隔离带一样。
如果CSDN的密码是MD5散列过的,不用说,仍然很傻;但至少那8000个用户是相对安全的,想用彩虹表攻击这些人并不容易,MD5还没那么弱。
而如果CSDN的密码是MD5+盐,甚至像我一样直接上sha512的,那么,哪怕是使用简单密码的小白,也不会遭受更大损失。
但现在,一切都暴露了;而这种暴露,肯定正在威胁着淘宝乃至网银系统。
甚至,也许黑客本身并未找到攻破淘宝、网银的途径,而且永远找不到;但说不定哪个“头脑灵活”的员工趁这股子乱劲儿监守自盗——让外界对“神通广大的黑客”疑神疑鬼去吧,他一定会很安全,至少是比平常安全。
invalid :
如果是这样的话,就只能祈祷了。
由于本身是搞互联网的,所以对互联网目前是不信任的,尤其是国内的。
对于我个人来讲,即使是所有的密码都丢了。应该不会有什么物质上的损失,因为我只有一张信用卡是可以网上支付的,且额度很低,用的也是动态口令,如果这样也丢钱,只能认倒霉了。
至于隐私,我就重来没相信过电脑,所以电脑上和网上就没有可以影响到个人的隐私,至于私人信息泄漏,在国内已经是无可奈何的事情了。再说本人就一屁民,也没什么别人感兴趣的信息。
所以,就我个人而言,网上最有价值的东西都在gmail里和dropbox里。如果这两个被盗且被无聊到清空的话,就会心痛了!
@陈皓
搞过类似事情的爬过,某证券系统因故障一部分停了半天,然后那半天手工记账本金的利息要给客户加回去,也是直接update数据库…理论上,也算是直接update账户余额了…不过就像aAic所说的,改数字不是问题,平账和搞定会计才是大问题…
至于直接拿生产环境的数据去开发环境分析什么的太常见了….不过按现在的规程好歹还知道把用户敏感信息盖一盖….
倒是因为物理隔离,生产环境和开发环境搭错线什么的这些年基本上绝迹了。
来这可以开开眼界。。。
收藏了,以后多向前辈来学习。。。
1/8000 路过
程序员网站就是用来下载什么电子书、软件什么的,其他还真没什么价值。以前还订阅程序员杂志,现在早就不订阅了。应该改名为架构师、IT经理人之类的, 浮躁啊!
口令问题永远是个问题,每个网站设置的不一样吧,久了(估计也就一两周)就会忘记,或者记混。写下来吧,更不安全,一漏全漏。这个问题还真不好解决。
另外,对于网站强迫用户设置强密码,个人觉得这不人性化,拿你的话来说就是用户体验并不好,因为有些人觉得这个号对他来说并不重要,所以设置个什么123456789这样的密码很正常,好记嘛,免得把自己的其他密码给泄漏了。当然,拿手机号这类SB密码另当别论,因为这已经涉及到隐私了,但像123456789这类密码看似“SB”其实还蛮高明的。
12312312ss
真正的安全系统是不要做什么多余无用的事情
像登陆注册这种完全没必要的东西,还要搞使用OpenID和OAuth这么复杂,何苦呢
就像在这里简单的几句评论还非要填昵称电子邮箱,只是一个评论要这些作甚
说的好,虽然承诺“我们会为您保密”,但压根不用填这些东西岂不是更好?
我擦 dearbook是什么啊
联想起贴纸里的语气…
求问:亚马逊泄了有这一说吗?
@rjoo 你不会填个假的啊!
@dsads
昵称可以让评论用户区分不同评论用户。
邮箱可以让博主验证上述区分的不可靠性。
乃高估国内大学生的素质了。。。。作为一个计算机专业的大三学生表示,本专业95%以上不知道CSDN,剩下的5%里面有70%的人只知道CSDN是一个能找到作业答案的下载站。。。。。。
不得不承认有些时候,注册 CSDN只是得那20分的初始下载积分
如果仅仅只是注册号码,密码简单好记就行了吧,反正又不会长期使用…
@wujj123456
你说的对。密码做得再复杂,以明码泄露出去,那个复杂的密码有什么用?
为什么设置弱口令?除了记忆或者填写方便的原因之外,我想还是用户自己觉得这个东西的保密价值太低,所以你看到很多的诸如123456789之类的密码。
非常同意,换成网银大家就不会设置这样的密码。。。
文章写的蛮好的,很详细。值的学习
@apporc
对的,我的csdn还有一切只为下个东西而注册的网站,都是同一id,密码111111
@rjoo 对于有些网站而言,你的信息是可以被贩卖的,所以不让你填,我此不是吃亏了?
其实密码123456789是挺不错的,我觉得更好是110110这类的,为什么呢?因为一般这样填写的人都是不在意这个网站的,就像我,如果该网站或是该软件、游戏的密码是六位数的话,那多半这个都是我觉得可有可无的地方,即使密码被人知道了我也无所谓。但是类似于QQ,常用邮箱,密码长度都是十六位,中英文特殊符号。
我们不要的网站,我们又何必搞的密码长度很严谨呢?不要跟自己过不去才是对的。
老生长谈不对,老生常谈为正解。
[最恶心的就是腾讯,你说他的安全有问题,他还找一堆人来骂你。]这句话 最好笑 好好 狗日的腾讯
很多人回复里都提到, 楼主觉得top10000的密码sb,但楼主的分析不够全面。很多用户其实知道这密码很弱,但还是用了,因为他们根本不重示这个账号,又或者不信任这个网站,出于保护自己,才设置了个简单易记的密码。 比如,很多网站,要想在上面下载个东西,都要注册个账户,CSDN就是这样的网站。这种方式造成的结果是,生产出了很多垃圾账号,用一次就扔,很有可能用到top10000密码的账号的大部分都是垃圾账号。既然是垃圾账号,自然要用个垃圾密码,才是安全的做法。真正的强密码,都用在重要的账号上了。
Hey there would you mind letting me know which hosting company you’re working with? I’ve loaded your blog in 3 completely different web browsers and I must say this blog loads a lot quicker then most. Can you recommend a good internet hosting provider at a reasonable price? Thank you, I appreciate it!
Hi, I do believe this is a great website. I stumbledupon it ;) I’m going to return yet again since I book marked it. Money and freedom is the greatest way to change, may you be rich and continue to guide others.