2011-03-06

今天去软件所参加了豆瓣上组织的一个《web安全沙龙》,主讲人是是完美时空就职的安全专家cnbird,信息部的杨宁。主办方(不是cnbird)在会议结束时再三强调说虽然这个会议不收钱但也不是完全免费的,要求每人回去写一篇blog。

那么我就按照我的经历从头说起。豆瓣上说的活动开始时间是下午一点,我和我两个大学舍友约了一同前往,他们都准时到了,而我很可耻的又迟到了。等我到的时候已经1点47,但是会议还没开始。大家都在阳台上聊天,像是在等某人。然后我就端着水杯,和同学叙旧。期间听见杨宁说他在完美时空干的很爽,令我很是羡慕。据我所知,完美时空信息部的待遇还是相当给力的,请参见水木上去年完美时空招聘php程序员的帖子。

等到快2点的时候,我说,要么我们先进去吧,占个位子,省得一会儿站着。结果被旁边的人听见了,他们先进去了。orz……我成了最后进去的。四处找凳子,隔壁的阿姨一个劲的埋怨,你们到底多少人啊!坐下之后,先是所里领导讲话。给我们介绍什么什么,反正我走神了。在玩sina微博,发现我关注的人中有一个人也在场,然后就问他在哪。然后过了一阵子,我发现我左手的人一直在拿着ipad上sina微博,并且我仿佛看见了我的id。并且他拿着iphone4。联想到前一段时间联通刚向该公司“赠送”过iphone4,我就问他是不是cy。一问,果然是。我认识他,可他不认识我。因为他04年就去公司了,一直从事安全方面的工作。每个新员工进去之后都要找他开权限,我为了RSA的动态口令卡的问题麻烦过他好多次。但是该公司人来人往,流动性太大,他早就不记得我了。

cnbird大约从2点半左右开始讲他的PPT。此次PPT的内容还是很有原创性的,讲了3个他自己如何入侵其他网站的实例,其中某个现在尚未修补的。不过这些东西我并不怎么感兴趣。你告诉我那有个smaba服务器没设置密码,对公网放开访问。那又如何?是教育我不要犯同类的错误吗?我希望你能介绍一些批量扫描工具啊,让我把我们内部的服务器统统检查一遍看看有没有这个问题?

再比如XSS这件事情,cy用两句话就简明扼要的给我了答案:“1、不要让cookie被xss偷走。2、检查referer页”。这就是我关心。

对于安全漏洞,我不是很关心如何利用,而是想去分析它的代码,指出为什么会有这样的漏洞。比如我之前在我的blog中分析过mysql 4.0的password bypass漏洞以及freebsd的ld.so导致的权限提升漏洞。目的是为了拿着这样例子告诉程序员,不要犯同样的错。

但其实我也怀疑这样的漏洞列表是否有价值,因为错误都很简单很雷同。比如我在做mhzx之后,新项目的人一直想找我要一份mhzx的漏洞列表,漏洞是什么,怎么引起的,以及如何修复的。可我确实给不出,不是我藏着掖着,我真没有。也没有刻意去搜集。我敢说那些所有的漏洞原因在一页纸中就可以列出来。你告诉程序员说不要把加号写成减号,有什么意义呢?我,我自己,就经常把减号写成加号。导致去NPC买物品的时候不仅不扣钱,反而还涨钱,被我搭档训过很多次。但是这样的错误一次都没有出现在外服上,为什么?因为代码的分支实在太少了,这种错误实在太容易被测出来了。一旦发现,稍微一改,都不用重启,就可以用了。

还有一次严重的BUG是警告我们要尽可能的减小变量的作用域,多用大括号减少局部变量的作用域。其实如果你用过ml,你发现这几乎是必然的习惯。还有一次严重的BUG完全是因为我的函数的语义太复杂,为了减少公共接口我把很多个功能放在一个function里面,调用的人没仔细看comment就用了,后果非常严重,直到我辞职的时候CEO还对此念念不忘认为是我的性格缺陷导致的。

我现在的想法是,开发规范上把道理说再清楚都没用,程序员是人,人都可能犯错,更何况我能招到的程序员绝对都是比我水平差的。cy的思路很对,你在做架构做部署的时候,不要完全相信自己的程序,在模块间做好安全隔离。假设sina微博是有xss的,就算有又怎样呢?造不成大的危害就行了。其次就是我一直在寻找代码静态分析工具,尤其是适合自定义复杂规则或者二次开发的。

cnbird说安全这事,首先要引起领导重视,然后在全公司自上而下的执行什么什么……当时我跟我同学在私下里聊,我觉得如果是给公司内做安全,是个很郁闷很苦鳖的差事。比如某公司为了防止代码被偷走,做了很多防范。结果是导致程序员感觉自己很不被公司信任。虽然的确代码没有被偷走,但是会有人因此而感谢公司的这些安全措施吗?普通员工绝对不会的,并且也不会有人简单的把没有被偷归结于强制制度的结果。所以那些拔掉员工网线的、没收走员工手机的人,无疑是众矢之的,被骂的很惨。就算是CEO很支持你又如何? 无非是狐假虎威。对于那些给公司产生核心利润的部门,你得罪的起吗?最终你的工作没完成,怎么办?还是找个安全公司做点产品拿出去卖比较舒畅。

然后我在想,开个公司做动态口令卡卖给中小企业还是很不错的。RSA那东西那么贵居然现在还有那么多人用。其实自己山寨一个,成本不过几十块钱。要技术咱有技术,要生产,甚至连厂房都不用,租个居民房摆个桌子就可以自己焊了。只是没在大公司呆过的人一般不会想到去用OTP。

唉,写了一大堆和主题不相关的东西 ,因为我的确没怎么听。如果你很关心cnbird讲了些什么,直接找他要PPT吧,他会给的。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥