蓝帽子及其它

      今年的BlueHat人气不够旺,猜测可能是和微软最近的裁员有关,邀请的人少了不说,以前的熟面孔也没见到,还找不到人问。我当时就想也不知道明年BlueHat还开不,如果就这么结束了,那我可是最后一届的speaker,挺有纪念意义,也挺可惜的。BlackHat我因为签证问题不会去,所以BlueHat我特别精心准备了一番,主要讲思路和方向——我觉得既然做了fuzzing,对具体情况是不会感兴趣的,因为思路和方法更具有决定性的作用,其实这也说明我确实放血了,思路都讲了,拼机器和拼时间我肯定抗不过其他人的,如果我有所保留,那诸位也不会拿到我的代码了,特别有好些还是在我不那么欣赏的公司。当然,其中最起作用的思路会在BlackHat详细说,我在西雅图的时候用两句话把它描述了一遍,讲完后有微软的来问,我又说了一遍,我不确定他们理解不,但如果他真是做了一年fuzzing,这个时候应该在加班改代码。微软的人态度还是很端正的,起码工具还是自己写,没有到外面随便找个什么东西将就用了,所以在批判一些工具的时候,我们还比较谈得来,说到思路的时候也没觉得交流有什么问题。
      说起工具,有个很有意思的事情,我们公司刚毕业的一个很聪明的博士,动手写fuzzer,第一个版本写成了cross_fuzz,被我们一番吐槽,然后他的第二个版本又写成了grinder。问题在于他之前并没有用过这两个东西,所以我的结论是,这种形式的fuzzer,可能是正常思维的人能想到的极致,换句话说,足够聪明的人,就算没有多年的安全浸淫,大约也能做出这种思路的东西。微软的东西好一点,但他们单元测试的用例太多,给他们带来的好处是不用去努力生成基础用例,而坏处是他们会过于依赖这些东西。我打个比方,你有一个动物园,你就觉得大概生物学就这样子了,但是fuzzing不是这么回事情,你把两个熊猫放进工具里面,杂交变异无穷代,能得到个彩虹熊猫就不错了,但这是morphing,不能算fuzzing。所以更好的方法是定义一个规则,然后工具去跑这个规则,比如你定义生成能活动的低熵体,那工具不但可以覆盖从阿米巴变形虫到苍老师,还能生成出比如三个眼睛八个鼻子的黑客来。在这之上的“思路”也是一样,这里打引号表示并不真正是思路,只是有人觉得这种方法生成crash样本会更多,当你着手去找这种思路的话,那就傻了,计算机跑这些比你快得多,你应该去想的是诸如“会不会有一条语句比其它语句更能搞出问题”或者“会不会有一个调用序列比较有趣”之类的思路,然后让计算机去验证你的想法。之前我看到个ppt,洋洋洒洒列了很多思路,我就想,嗯,如果要继续,我估计我还能够弄上好长一段时间。
      还有就是一个合作的问题,不仅是组内的合作,还有和微软的合作。一句话,报漏洞的目的是什么,有人觉得就是打脸,你丫傻逼,我来打你的脸,这是不对的。好比出去卖产品,销售人员说,哎呀,竞争对手某某,不行,竞争对手某某某,汉奸,这行就我最厉害。开始可能有效,久了别人肯定会想,全世界都傻逼啊,不对啊,这种概率太小了,高速上说别人全逆行,怕是自己走错了道。所以不能这么搞,你可以说别人很厉害,但是我们更厉害,就像搞测试的人要学的第一门课一样,你找bug不是给开发者过不去,而是为了让产品更好这一共同目标而做的努力。所以和微软其实是个合作的态度,不是说拉一车垃圾到别人家去说,这里面有六个五毛的硬币,自己倒腾去吧。我碰到的每一个同修bug相关的,第一件事情就是说哎呀你报的东西,太好了,我们方便处理,还有那啥友希陈也是,然后接着感慨,说有些代码,free掉和use的部分,中间有八英里长的垃圾代码。像IE这种产品,修补是很恐怖的事情,不是随便提交一个代码就行,他们内部的流程及其复杂,首先是找到根源,然后给出一些fix,包括保守一点和激进一点的,此外需要查看其他版本的代码,找出受不受影响以及原因,还要接受问询,指出可能受到的影响和补丁的自信度。提交了还得去跑回归测试,规模我就不知道了,想必也要半个月到一个月,以观后效,有啥不正常行为还得回去重来。其实看看补丁就知道,有些月份补丁特少,不是说他们懒,而是可能fix出了问题,然后给撤销掉一些补丁,然后CVE就从两位数变成一位数了,这还不止出现过一次。
      合作这个问题,还有几句话。看看这次的CVE-2014-4148,现在早已不是单打独斗的年代,漏洞从寻找利用到部署攻击,每个环节都能看出专人打磨的痕迹,每部分都是千锤百炼。这其实就是网军,就是战争,和演习不一样,更不是演戏,羞羞答答的就算了,私下用牙签戳来戳去,徒授人以笑柄。《后会无期》里面有句话说得好,你连世界都没观过,哪来什么世界观。69年我宋万吨油轮才下水呢,人家都登月了,就像躲在健身房里练出一身青蛙肉的,真要去野战估计被人徒手就秒了,对抗的年代,FEYE天天强调对抗,漏洞为王回归攻防,就是因为这不是过家家,见过战争的残酷,哪会天天去感慨当年康乾盛世,还不如去整整CTF培养点后备人才了。
      在西雅图我还问了不少问题,最大的不爽就是我说了一堆,然后他们说嗯,就是,这部分源码我看过,情况是这样的,blah blah。搞IE方面,微软有天然的优势,而且他们也有专人在弄,所以我觉得很沮丧,这次公开一些思路后我就不继续搞了。当然,要搞还是搞得动的,现在每个月抛开UAF的东西,5、6个其他类型漏洞还是有的,只是这样刷下去没意思,你要说这是研究嘛,其实和产品也不相关,欠缺目的性的东西做久了就是浪费时间,所以还是算了。还有一个原因是,其实我们只报了不到三分之二的洞,而且还仅仅是纯业余弄一下,今年1/3的IE都被我们弄到了,继续也没什么意思。只是当时没控制好托了大,本来想弄到和ZDI级别差不多的,大半年下来发现少了二十来个,所以为了找回些场子,这次blackhat放的sample,全是找了没报但是补掉了的。我私下统计了一番,到这个月为止,基本上补了的数目完爆ZDI,但也就私下说说,场面上虽然是一个数量级,但比全世界花钱买漏洞的还是少了二十来个,这也是事实。
      写累了,还有好多八卦,只好留做以后的素材了。下次P2O,不知道会什么情况,其实我蛮喜欢看戏的,如果一个公司出两个队那就更好了。在大辽我们是不敢去弄这些事情,只有祝各位武运长久,赶快去做家庭作业吧。

蓝帽子及其它》上有7条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注