最隐私—CSDN密码泄漏事件

如果要问,当前你最大的隐私是什么,那最直接的答案就应该是密码了。无论是手机、银行卡,甚至于门锁都是有着密码保护的,更别说你的电邮、网银、论坛、QQ或MSN及各种的博客帐号了。

然而时至今日,无论个人还是从公司都没有做出足够的努力。从这次CSDN泄漏出6,428,632个帐户的明文密码来看,安全意识还是普遍缺乏。

(一) 先从CSDN说起:

年初时SourceForge (http://www.sourceforge.net/) 曾发生黑客攻击事件,之后网站在最快的时间便向所有用户发邮件通知并在其首面显著位置公布了攻击事件及初步分析结果,并要求所有用户重置密码。虽然此举广为大家所诟病,但这是最安全的方式。

反观CSDN,直至现在我还未收到CSDN官方的邮件,在其主页上并没有明显看到相关通告,找了找才在news.csdn.net上不明显位置找到了公司通告。

        http://news.csdn.net/a/20111221/309505.html

至于相关分析更是难觅踪影,倒是金山发布了一个替员工解脱责任的申明:

        金山网络官方回应“员工涉嫌CSDN黑客事件”:  http://www.cnbeta.com/articles/166675.htm

在研究泄漏的密码数据库时,也发现了我的帐号及密码:
        cfy_matt # pop.smtp # mattwu@163.com

让我很奇怪的是,密码确是我很早以前的密码,但帐号却多了个 “cfy_”前辍。查了一下,共有10,657个用户都是有这种前辍的,但一直没能找到合理的解释。

让我很感庆幸的是,我的另外一个真正常用帐号并不在泄漏数据之中,不过二者用得是相同的邮箱,权且认为这就是为什么没收到CSDN的通知邮件的原因吧。

值得称赞的是网易在第一时间就向所有网易用户发出了警告信息。

(二)再来说说密码本身:

我是21号上午于cnbeta上得知的此事,旋即去emule上将此密码库拉了下来,很想第一时间做个分析的,但只因时间紧张才拖至今日。今天发现,和我持有相同兴趣的人已做了不少分析了,呵呵:

        CSDN泄漏数据完整分析: http://www.cnbeta.com/articles/166576.htm
        分析CSDN泄漏数据信息的一些数据: http://www.cnbeta.com/articles/166529.htm
        统计CSDN用户都喜欢哪些密码: http://www.cnbeta.com/articles/166527.htm

1,先看看大家最喜欢什么密码:

D:\>gawk -F# '{print $2}'  www.csdn.net.sql | sort -r | uniq -c |  sort -r –n > passwds
D:\>head -n 10 passwds
235012  123456789
212749  12345678
  76346  11111111
  46053  dearbook
  34952  00000000
  19986  123123123
  17790  1234567890
  15033  88888888
   6995  111111111
   5965  147258369

再次证明,越是简单越有生命力的道理!数字、重复字母还是大家的最爱。让我最意外的是4.6万的人用了 "dearbook”。

2,看看都是谁在 “loveyou” 或 “爱你”

D:\>grep -i loveyou passwds | more
   3080  iloveyou
    119  ILOVEYOU
     93  iloveyou1314
     63  Iloveyou
     55  iloveyou123
     40  loveyou1314

D:\>grep -i aini passwds | more
   1003  woaini1314
    708  woaini123
    649  woainima
    561  woaini520
    321  woaini521
    278  aini1314
    211  woainiwoaini

  1314 == 一生一世 !

3,又是谁在说赃话:

D:\>grep -i fuck passwds | more
     65  fuckfuck
     56  fuckyou123
     34  fuckyou1
     28  fuckcsdn
     26  ifuckyou
     23  fuckyou
     21  fuckshit
     21  fuck1234
     20  fuckyoufuckyou
     16  fuck2007
     14  fuckyouall
     10  shitfuck
    10  fuckyouyou
          …… 
     5  fuckfuckyou
     2 fuckyoudead

         2 fuckyouverymuch

D:\>grep -i caonima passwds
    565  wocaonima
    137  caonima123
    128  caonimabi

哈哈,从"fuckyou” "fuckfuckyou” 或 "fuckyoufuckyou” 到 "fuckyouverymuch”,直至 "fuckyoudead”,其仇恨程度各有高低。

另外呢,28位使用 "fuckcsdn”的先知用户还是有正当理由的。

4,用 ”password”当密码的人有多少呢”

D:\>grep -i pass passwds
   3501  password
    264  passw0rd
     97  Passw0rd
     91  PASSWORD
     87  password888
     82  password123
     76  passpass

5,密码与用户名一样的呢?密码用email帐号的?

D:\>gawk -F# '{ if (sprintf(" %s", $1) == $2) {print $1}}' www.csdn.net.sql | wc
 292661 292662 3589154

如果忽略大小写地话:

D:\>gawk -F# '{ if (tolower(sprintf(" %s", $1)) == tolower($2)) {print $1}}' www
.csdn.net.sql | wc
 307465  307466 3769498

D:\>gawk -F# '{ if (sprintf("%s ", $3) == $2) {print $1}}' www.csdn.net.sql | wc
   2854    2854   31678

CSDN上注册的用户多是计算机从业者或开发者,竟然还有30万人会犯如些低级的错误,实在是不应该。CSDN官方应该在用户注册时就否决此类弱智密码,包括第一部分的简单密码之内应该全部拒绝。

由此推想,中国的几亿网民的安全意识又将如何呢?

6,密码长度统计:

D:\>gawk -F# '{print $2}' www.csdn.net.sql | gawk -F' ' '{print length($1)}' | sort -r | uniq -c | sort -r -n
2337404 8
1550353 9
929647 10
627512 11
368342 12
167143 13
154356 14
  84444 6
  74784 15
  49014 16
  34060 5
  19042 7
   7657 4
   6949 17
   5841 18
   4974 20
   2262 19
   1594 3
   1485 2
   1060 0
    709 1

前7名都是8位及8位以上的,毕竟大部分都是开发人员。

7,CSDN用户都喜欢用什么邮箱 ?

D:\>gawk -F@ '{print tolower($2)}' www.csdn.net.sql | sort -r | uniq -c | sort -
r –n  | more
1960507 qq.com
1753036 163.com
800807 126.com
349357 sina.com
204019 yahoo.com.cn
200858 hotmail.com
184076 gmail.com
104189 sohu.com
  85930 yahoo.cn
  71946 tom.com
  52632 yeah.net
  50396 21cn.com
  34869 vip.qq.com
  28789 139.com
  24712 263.net
  19039 sina.com.cn
  18647 live.cn
  18441 sina.cn
  18244 yahoo.com
  16208 foxmail.com
  15140 163.net
  14083 msn.com

本以为会是网易163.com,没想到竟是用qq的最多,从数量上来看二者在仲伯之间。但如果综合网易其它的邮箱(如126,yeah.net等),网易还是绝对的老大。

8,怎样才是好的密码 ?

好的密码要具备以下几点:

  • 足够长:至少8位字符
  • 足够杂:最好同时包含大小写字母、数字、特殊符号(!@#$%^()*…)
  • 足够不相关:和你的信息及网站信息尽量不相关,或者由外人看来绝对是没意义的一串天文字符。所有字典里能查到的词或此次所泄漏的密码都不再是好密码了
  • 一个密码只专用在一个地方:这很重要。难保你注册的网站不是用明文存储密码的。还有,不小心地话,keyboard logger或sniffer等黑客工具也能嗅探到你的密码。

拿出几分钟时间来检查一下你的密码安全吗?不然,就再多花几分钟改一改吧。

勇气

不知“为人不做亏心事,不怕半夜鬼敲门”出自于什么年代,那时候有正气应该就有勇气,所以肯定不是现在了。

现在做个好人太难了,行事总是小心翼翼,一则怕被别人看在眼里横生误解;二则怕好事没做到位反成坏事。总之,唯有委曲求全及唯唯诺诺,哪里能谈得上勇气!

反观做坏事的,事越坏,勇气却是越大,胆量亦是愈大。逃犯逃腻了可以挺身而出,或打假、或征婚、或当演员。窃财、偷人、收脏的也是都油光满面、西装革履并大言不惭地不断叫嚷着冠冕堂皇的废话。

好在无论什么事情总有个例外,这才给人一点希望:

1,中国的农民兄弟最有勇气,庆幸我也出身于农民,咱也是种过地的,只是现在已是“五谷”不分了。我一直纳闷,为什么中国最成功最彻底的改革都是从最下层开始的,这样的改革成本太高了,因为所有的东西都要重新来过。为什么欧洲的改革却可以只发生在上层?难道即便是中国的精英层也被鲁讯笔下的国人劣根性所禁锢?

2,1921年7月23日上海法租界望志路106号里的那批人也是有勇气的。可在穿越剧充斥着屏幕的当下,又涌出有勇气的一批人:他们决定穿越到21年8月的嘉兴南湖(毕竟上海法租界不方便),要么招一批小弟自己动手;要么就直奔警署去告密。

杭州南高峰攀岩

12/17号周六在南高峰攀了一天,成果算不上颇丰,但还过得去。最让我庆幸的是,虽然4年多没爬了,但对岩壁的感觉和功力还在,面对线路难点并不怯场,只是耐力上远远不及之前了。

先锋了三条5.8/5.9的线路,对10的线路,特别是“金香玉”线,现在只能望而兴叹了,不知要训练多久才能恢复到以前的水平。

攀岩的乐趣在于你很快就能找到自己的极限,同时呢线路都是死的,只要多加琢磨及进行有针对性的训练,你便可以突破这个极限,然后又会触到了新的极限。

在“秋风扫落叶”线上,便达到了目前的水平极限,线路有点小仰角,在第三个快挂快,由于没有好的脚点,无论如何也腾不出右手去挂快挂,冲坠了几次后,只得先放弃。

回沪的路上约好下周同去岩馆训练。不经意间,我又要开始攀爬生活了 ……

发现对一件事情的喜欢及热情,并不总是随着时间而褪去的,今天面对着岩壁,还是有着莫名的兴奋和激动。

_snwprintf_s的潜规则

在程序中为了构造文件全路径时,使用了函数_snwprintf_s。结果在释放buffer时运行时库(runtime library)报错,提示buffer已被破坏了。再次审视代码,看不出有什么毛病,只得动手调试,然后便定位问题出在了_snwprintf_s的调用上。

_snwprintf_s函数的原型定义如下:

int _snwprintf_s( wchar_t *buffer, size_t sizeOfBuffer, size_t count, const wchar_t *format [, argument] ... );

在细致地阅读了MSDN中关于它的说明后才发现问题原因:

此函数第二个参数(size_t sizeOfBuffer)是以word (双字节)为单位的,而不是byte。问题找到,更改传入参数后,buffer corruption的问题消失。

但是,还有个奇怪的问题,也许你已注意到,如果第二个参数是以word为单位的,那第三个参数呢?不应该也是以word为单位吗?

可惜,不是。第三个参数依然还是以byte为单位,否则你的程序又不能工作了,只是这次错误将会更加地隐蔽。

你只能感叹:同样都是count,咋相差这么大呢!

这里再说说_XXX_printf_X等一系列相关的函数,如果你看了MSDN中关于snprintf的说明,你这定会惊讶于它众多的兄弟姐妹,个个相像,可绝对又各不相同:如_snprintf, _snwprintf, _snwprintf_s, _snwprintf_s_l:

  • sprintf是ANSI C所定义的函数之一,应该是最古老的一个,当然也是最容易受缓存区溢出攻击的一个
  • _snprintf: 多了一个“n”表示是多了一个描述buffer长度的参数,如果输入字串过长将被截断,毫不留情。
  • _snwprintf: 多了个“w”表示是字串为双字节字串,如unicode
  • _snwprintf_s:又多了个”s”后缀,表示是“Security Enhancement”。为了应对缓存区溢出攻击,而对函数进行改进以对输入参数进行多项检查。更多信息见于:MSDN
  • _snwprintf_s_l: 更进一步,又多了个“l”后辍,表示此函数支持字符集指定,而不是默认使用当前字符集。
  • _snwprintf_s_l_? : 不久的将来又将怎样演化呢 ?我且拭目以待。

南黄古道行走

Day –1 - 0: 2011/11/09

家园一批老人有阵子没一起活动了,老杨来消息问时否有兴趣去象山吃海鲜泡温泉,但后来因人员不齐,活动取消。12月正是走古道好时机,遂1号联系老杨有没有兴趣走古道,然后一合计将海鲜、温泉给一并解决掉。

Day 1: 2011/12/10

早6:30出发,从上海出发。因为常台高速天台段封闭,只能在G104上龟行,直至近11:30才到达南屏乡前杨村。

收拾停当,大家开始徒步,路上已有不少游客。上山的小路多半段都是石阶铺成的,上面全铺满了干枯的落叶,两旁的树基本还是绿的,只有少数已全部化为金黄一片。虽然空气清凉,但走一会,全身便开始热气腾腾。

12:40左右到达山顶小庙,小憩10分钟又接着赶路。后面的道路全是小土路,比台阶路好走多了,完全可以一路小跑。空气中有不少雾气,下方的梯田依稀可辨。13:55分到达乡间水泥路,然后沿水泥路向西北慢走,14:10分到达大泛村,村里有很多石屋,很有历史感,只是很多都废弃了。

出了大泛村,海拔又开始上升,小道蜿蜒在树林中,路边还有时有长满野果子的灌木,只是小刺相当多,采野果子时必然会中招,好在野果酸甜可口。

15:00到达哑口,为后半程最高点。我则按奈不住,快步冲向东侧小山头,冲到顶部后快拍了几张,然后又一路小跑追上大部队。

16:30分回到了前杨村停车场,徒步结束。全程约12.15km,用时5小时,中间休息拍照等约1.5小时。

晚抵达宁海,吃海鲜,泡脚,按摩 !腐败,相当地!

Day 2: 2011/12/11

众睡到自然醒,早饭吃粥和小包子,萝卜馅的小包子成了我的最爱。

早饭后赶去宁海森林温泉度假村,路上停了不少沪牌的大巴,看来大家都来赶这个泡温泉的时节。

泡得一身酥软,至下午1点,才恋恋不舍地踏上回程之路。此行可谓是腐败透顶!

快餐式阅读

剩饭:

《Decision Points》: George W. Bush 搞定下半部,终于知晓9/11期间Bush都干了什么,当年他曾饱受批评,甚至电影《United 93》中也没有他总统什么事。

剩饭,且还是加生饭:

《禅是一枝花》纸版快速读了一遍,本以为很多公案都已明白,可再看时才发现真明白的还真没几个。即使是认为明白的几个中,也不好确定 倒底是在明白里,还是不在明白里呢?

零食- 化整为零:

《习惯性八卦:词语笔记(5)》黄集伟

《胡兰成的今生今世》杨海成

快餐,快餐,快餐:

快速的生活节奏早已压得你喘不过气来,哪还有时间正儿八经地搞个大餐出来?快餐,虽不算营养丰富,但好在能裹腹,还能让你吃得有滋有味!

《The Shallows: What the Internet Is Doing to Our Brains》,Nicholas Carr。这本书看起来还是挺有感觉的。IT技术革命,互联网的发展,知识的数据化,是可以让我们知道得更多,可是正因为资源或知识之捶手可行,我们所记住的多是索引或一个存储箱的序号,所以我们所知所学所得却是变得更少了。正因为有了google或baidu,人更倾向于选择忘记而不是记住,岂不知,记忆也是思考的一部分。如John Culkin所说:We shape our tools, and thereafter they shape us.

然后就连续看了几本James Patterson的书,这些书可以说是快餐中的快餐,即便说中垃圾食品系列也不算为过,可是口感不错,容易上瘾:

《Tick Tock》《1st to Die》《2nd Chance》《3rd Degree》《4th of July》

Michael Bennett系列全看完了,然后女强人Lindsay Boxer出场了……

《侦探研究》:詹宏志。繁体中文还可以忍受,但竖板的实在是看不习惯,可对于得之不易的好书,除了忍还能有什么办法?

詹宏志幽默而又不失犀利的笔锋之下是: 或瘦削高大、或矮小敦实,或犀利、或颓废的侦探们,还有他们背后所在的不同城市的街街巷巷、熙熙攘攘、黑暗角落等等等等。其背后更有不同风格、不同时代的作家们,然后就是个长长的、长长的、长长的、长长的书目单。

《The Kite Runner》,Khaled Hosseini:战乱出生死离别,战乱出人性,战乱出故事,战乱出真情,其它不做多评了。里出有个Nasruddin的小笑话,让我想起了高一时的英语课,可以说是笑声最多的阅读课:当时老师给我们订了一本全是Nasruddin笑话的阅读理解书,好像是100篇,书中所配插图也是个外形怪诞的糟老头了,英语老师说话像机关枪,讲至兴致所处还会探头探脑 ……