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,还有[email protected],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明文口令泄露的启示》的相关评论
JinCeon :
实际上很多用弱密码的都是不太重视这个帐号的,把自己不重视地方的密码设得和其他自己有用的一样反而不好啊。。
我的密码也曝光了。但是我的QQ,注册邮箱的真正密码,网银等,会用这个吗?显然不会。
所以我有几个密码。
一个是一次性注册的那种,可能就是为了下载点什么东西或什么的,才不得不注册的。
二是常用论坛等。
三是重要邮箱等用,用来恢复密码啊什么的
四是网银等涉及财产的了
所以看完这篇文章,我突然觉得你瞬间降了一个级别,变得有点2了。
大家都是成年人,有衡量自己行为得失的能力。
如果每个密码都是强密码,对自己来说会混乱,且不易输入。
所以csdn的密码被公布了对我其实没有任何影响。
@JinCeon
楼上说得好!
我认为这次大规模的密码泄漏很可能和前几天北京的微博实名制有关
是对微博实名制的一种示威
密码盗了还能改,行业烂了大伙一块难受
面向和我一样的初级选手,共享了一段md5加密的java代码
http://code.google.com/p/hetaoblog/downloads/detail?name=HetaoblogMd5Util.java&can=2&q=
说明页面在
http://www.hetaoblog.com/%E6%88%91%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%BC%80%E6%BA%90%E4%BB%A3%E7%A0%81-%E6%9C%89%E5%8A%A0%E7%9B%90%E7%9A%84java%E7%9A%84md5%E4%BB%A3%E7%A0%81hetaoblogmd5util/
当初你也批评过csdn关于做技术论坛的态度和方法,应该可以推算出很多人在这里的密码会是最弱档次的.比如我的就是我的生日.
关于多玩,YY提示一次异地登录,反馈无果之后.马上从PC里面卸载了.YY,QQ,MSN使用的是相同强度的密码,QQ是VIP,基本天天挂.PC裸奔.可是只有YY提示异地登录,当时我就觉得是多玩的内部员工作案盗取的,以类似关键词搜索,一大片这样的结果.
csdn信息泄露本身,并不是一件很可怕的事情(比如很多人的无所谓).但是这个雪球滚落的过程,可以联想到当年国人抢盐那种素质.csdn信息泄露会在中国互联网历史上记载一笔么——2010年左右互联网泡沫基本形成,而csdn信息泄露事件刚好成为引发这个泡沫破碎的导火索?看各大与IT无紧要关系的站点都在讨论这个,或许真的有可能.
所以说,作为技术类网站,csdn太那啥了。。。
说真的,陈皓描述的那个情景,恰好是我们宿舍的情景~~
还真有那么巧?不过,以前我们宿舍也是这样的。哈哈。那时我们用的是金山影霸在486上看VCD实在是太卡了。呵呵。
@菱角
不好意思,我回复点错了。呵呵
话说我在这网站用的注册名就没再别处用过
国内的网站有多少明文保存密码的?这次中枪的是最低级的通用密码,倒是无所谓,可是邮箱和网银之类的密码不会也是明文吧???
添油加醋已经是专业人士的基本做法了吧
在知道这个之前,我自己发明:“本网站的特点介绍全拼”+用户密码 再做md5,相信没有字典也没有机器能存
那8000个不在字典的密码才是悲剧人物。我也中招了,原因很简单,因为注册时间太早,还没有对这样一个程序员的社区不信任,然后几乎没去,帐号很少用到。可惜这次全爆了。
@8000杯具人物
那8000个不在字典的密码才是悲剧人物。。。
同意。。
我倒愿意相信这是对实名制的一种示威。
光密码强度高也没用,我支付宝帐号被盗,是因为对方上传了我的身份证复印件(or照片),支付宝就允许他改密码了……所以,密码找回的机制也是很重要的。
@cerfly
:-)
@程序员
re, 加盐是基本做法,我前面说的是简单md5的基本情况
一个坏消息,一直担心的安全问题还是发生了,难怪看到那么多所谓艳照门,网上邮箱破解等等;一个好消息,安全问题总算发生了,希望这之后就不会有那么多貌似专业的不专业网站了吧。
CSDN这次的问题与其网站的水准是完全匹配的
@8000杯具人物
是啊,奶奶的,我的密码肯定在那8000个以内,但是再复杂的密码在这种像CSDN一样垃圾的网站数据库中,也都是鱼肉啊!
是我眼瞎了么,陈皓的邮箱帐号也在里面呢。
你没有眼瞎,是的。我早就知道CSDN是明文口令了,因为N年前找回口令的时候,其把我的密码直接就发回来了。所以,就设了个和所有帐号都不一样的口令。呵呵。
其实,有些时候并不是用户不想提高密码强度,而是网站做得太二,比如sina:http://www.jayxu.com/2009/02/10/1389/
同样,悲剧啊
正是这个理啊。
不要以为技术能解决一切啊,只有人才能解决问题。
不过CSDN存在不良分子是肯定的啦。
不良的应用系统给予了不良分子动歪脑筋的冲动。如果非明码系统,不良分子也无任何兴趣啊,看到一堆明码比看到一堆乱码更能让人兴奋啊!
微博上看到CSDN数据泄漏的信息,果断做了帐号管理系统。把所有比较有用的帐号都重设了密码。完全随机,没这系统我自己都不知道密码,都登录不了。这下和字典无关了,我作为用户也只能做到这种程度了。
我是被开头引过来的…
以前有的网站注册之后会直接把自己注册填的密码通过邮件发过来,还美其名曰请牢记什么的….
最不能忍的是我见过把我注册时候的密码用实体邮件发过来的…
——————————–
以前在证券行业混的时候那家公司防了又防
(独立且禁止私物进出的数据中心,指纹锁的远程访问室,操作审计)
照样有人把用户基础库偷出去卖…还是用户发觉不对劲投诉了才知道的…
万幸的是当时用户认证库没丢….
hi coolshell,有两个问题噢:
1、口令找回机制是直接把口令发回来,不一定就是明文保存密码,可以是加密过的啊。
2、即使口令设得简单,如果slat设置得好,你也没法通过md5反查到用户的真实密码。
@unknown
加密过也不能防止被盗
存储密码并进行加密,这种做法有何意义,加密的密钥放哪里?
你开场白是想说明在大学生中技术比AV更重要吗?大学生除了AV还有什么娱乐方式能更吸引他们吗?
开场白只不过是为了调侃,就像The Big Bang Theory一样。呵呵。
浩兄在一个很明显的位置把我的密码讲了出来,不过这个账号n年不用了,那个密码也忘记了,也没再用过!
你好,陈皓老师,我关注您的博客很长时间了,里面很多文章写得都很棒。这篇文章看了后,猛想起来了一些东西。的确,这方面外国人的确做的很好,如果用最坏的思维推想下外国人,这也是很危险的,可能是我想多了,有些狭隘民族情绪了。呵呵,祝陈陈皓老师出来年一些顺利。
这次泄密的好像基本是那种僵尸账号,既然是僵尸账号,密码设置的比较简单也很正常。
50楼说的比较在理,比如我跟钱有关系的密码肯定与我经常上的网站密码完全不一样。
我在CSDN的账号也注册好几年了,虽然价值也不高,但并没有在这次泄露的密码中,所以感觉CSDN对活跃用户的密码保护的还算好。
而这次泄密事件疑点众多,我甚至怀疑是某些安全软件为推广其密码保护箱一类的软件而搞的这么一出。
@SadEmperor
每个人都有自己的二元论,决定的依据是自身的性格、价值评判、思维方式、表达方式、生活习惯、利益,一旦有人打破或扰乱了这些就容易引起不舒服。
二元思维方式的特点就是要努力证明自己是正确的,而对方则是错误的,当然真理自然是在自己手里。二元思维方式,是造成现今世界诸多问题的原因,比如战争政治斗争宗教争端地域冲突劳资纠纷家庭代沟夫妻关系。。。。世界是由人们创造和构成的,所以世界的问题归根结底是人的问题,而人的思维导致行动。
多些理解吧,我们每个人看待认识事物,都是通过自己的有色眼镜去认识的,认识到的都是经过“过滤”过的世界,而真相和事实,有时候和我们的认知相去甚远。所以有“正见”是第一步,而且很重要,呵呵。唐僧一下,请轻拍
@菱角
@SadEmperor
每个人都有自己的二元论,决定的依据是自身的性格、价值评判、思维方式、表达方式、生活习惯、利益,一旦有人打破或扰乱了这些就容易引起不舒服。
二元思维方式的特点就是要努力证明自己是正确的,而对方则是错误的,当然真理自然是在自己手里。二元思维方式,是造成现今世界诸多问题的原因,比如战争政治斗争宗教争端地域冲突劳资纠纷家庭代沟夫妻关系。。。。世界是由人们创造和构成的,所以世界的问题归根结底是人的问题,而人的思维导致行动。
多些理解吧,我们每个人看待认识事物,都是通过自己的有色眼镜去认识的,认识到的都是经过“过滤”过的世界,而真相和事实,有时候和我们的认知相去甚远。所以有“正见”是第一步,而且很重要,呵呵。唐僧一下,请轻拍
我想知道dearbook是什么。。。
银行就算是让你去扫描你能怎么样?你一目万行+过目不忘?
有几个人有权限能把生产环境上的东西拿下来?
现在除了核心、发卡等个别几个,系统根本没验密的能力,不管是用户还是柜员。
国内的开发团队绝对达不到这一步,不错,根本达不到接触密码那一步。
楼主不要危言耸听。银行这方面的风险,不在于开发者,而在于银行的合规能力。
你没有做过银行的开发你不知道。我做过好多年。我告诉你两个以前发生过的真实案例:1)以前给某银行总行做项目,要测试数据,结果银行的技术部直接把生产环境里的数据给了我们,于是我看到了所有的同事的工资和收支情况。2)有N次程序上线,因为程序的BUG,不得不直接操作数据库用update更改因为程序导致数据出错的问题。银行的员工对我们的生产环境上操作生产数据连理都不理。总之,不要太单纯了。
博主好,请问你是怎么调试javascript的?
firebug
我想知道的是银行卡的密码只有6位,而且都是数字的,银行怎么保证它的安全性呢?!!!
@陈皓
我做电信数据分析项目的时候,直接拿到全国所有人的两天通话记录,可以看到who打给who,时长等信息。
那是多年前,光盘版的,70多张光盘,一箱子,可以随便用。
所以说要搞 数据治理
@nan_dream
它不会让你一直用错误的密码尝试的,试过几次账户就锁了。要过一段时间比如12个小时后才可以自动解锁,有的银行账户需要你拿身份证去银行办理解锁。
比如6位的数字,让你试10次,你能猜对密码吗?
从这几天的泄密事件来看
我已经不把它当成纯粹的黑客泄密了
国内网站把资料上交给某机构,而某机构里的人偷了资料后,逃出国寻求Z治P护后再放出这些资料的可能性更大
老大哥在看着你
昨晚和朋友就上面的猜测讨论了一下,他既然认为某机构要求国内网站把用户账号密码上交不算侵F人Q,WTF!!!这还不算Q犯R权!!!
这段太猛了,结合微博上的最新内容,实在叹为观止! 但是这也分的吧,总不能某个人的存款余额也可以直接update?
@陈皓
你说的这两件事,我去年都遇到过。
给我“测试”数据那家银行,柜员需要usbkey+指纹登录,密码登录需要特别的流程。
允许我上生产环境操作数据库的那个系统,虽然重要,但是和账务、密码没关系。我能造成的破坏,还不如一个修空调的威胁大。
现在国内的银行科技人员太缺乏,没能力面面俱到,只能把握住最关键的环节。
存款余额不是简单的UPDATE就能搞定的,把帐做平不容易。数据库日志、屏幕操作录像、现场录像。这么做还不如去抢银行。
有些管理好的银行可能像你说的这样,但是有些则不是。呵呵。程序的bug是,用户交水电费,钱扣了,却没有买到电,因为连电力的程序有问题,电力的帐号里也没有收到钱,怎么办?只好手动帮用户搞,重新调用电力的系统,然后算一下这一天有多少笔购电的交易,然后给电力的帐号余额update一下。不过我说的这些东西是好多年前的事了。
代收水电费一般是分行以下级别的表外业务,再早些年的话,开发质量肯定不行。早些年我也遇到过每个月算总账都会出现误差要手动调整一次的系统,和你说的很相似。
银行这些年进步还是很明显。有些小银行,以前进出生产环境很随意的,现在也都严格管理了。大的银行,有的已经推行虚拟开发平台了,远程登录到虚拟机开发,代码都拿不下来。
不知道有没有人注意过,办有些业务是不需要输入密码的,这里面还不一样。存款是因为剃刀原理,有利于提高安全。有些小活动,例如派发礼品、抽奖什么的,很可能是因为开发跟不上而放弃了(需要申请、评审、调接口,很繁琐的)。
有的其实本来按照业务需要
也许你说的是对的,不过你没发现他们连自己的内部的人都防不住吗?年年都有携款潜逃的人,一个比一个金额大。以前不安全的时候,还没有那么大的数额,现在安全了,反尔出的事更大更多了。所以,你觉得他们的安全是是进步了吗?!
我的密码就分了几类:
1.银行
2.淘宝 京东类
3.邮箱类,主要是Gmail
4. qq msn
5. 主要论坛类
6. 其他,统一用户名 统一密码(如果新到一个网站,有印象,就用统一用户名登陆一下,如果不能登陆就注册一个。这类,我根本不重视丢了也无所谓)
不幸的是我的csdn就属于我的第六大类,所以这件事情我根本就不在乎,也不用改我其他的密码。但我希望我前五类的网站里不会有这么xx的行为。
@kino
你在csdn的密码丢了没什么;但说不定淘宝/京东/银行的某个开发人员的csdn密码也丢了;而黑客则通过这个开发人员的密码,搞到了淘宝/京东/银行的密码,于是,你仍然悲剧了。
其实,这次泄密,我和几个朋友觉得,也可能和360之前盗取并开放下载1个月的用户隐私数据有关。
这些数据里面,可能刚好包含了csdn的某个开发/管理人员或内部员工的帐号密码甚至架设在其笔记本上的个人网站管理密码;于是,黑客就很轻易的入侵并拿走了所有东西。
如果整个环境都是2B的,靠你一个人,是安全不起来的。