前些天我们team设置了一个邮箱:security@service.alibaba.com 对外征集漏洞,对于愿意提交alibaba漏洞给我们的朋友,我们将会寄送一份小礼品。我们team的很多成员都在自己的blog上发表了这一通告,于是planet很壮观和整齐的被我们刷了一次。
后来看到有朋友提出疑问,觉得只给个小礼品太小气了,这里就有关漏洞披露问题谈点我自己的看法。
传统软件漏洞披露的过程
一直以来,安全工作者对于传统软件的漏洞的做法是,先通报给厂商,厂商回复,patch后,由安全工作者再提交一份公开的漏洞描述报告到安全组织比如fd或者是cve等。
如果厂商不理会,安全工作者也有权自己公开漏洞描述报告。
这是业界默认的常规做法,没有人去公开立法说一定要这样做,但是大家都在这样做。
除了上面说的正常途径外,也存在一些漏洞交易。
比如有一些安全公司专门从事漏洞收购的,比如zdi,安全工作者发现漏洞后,也可以直接把漏洞卖给这类安全公司,由安全公司与厂商联系并决定什么时候公开这个漏洞。在公开漏洞的时候,会附上漏洞发现者的相关信息以表示对其劳动成果的尊重。这个周期有的很长,甚至超过一年、二年才会披露一个漏洞。但是漏洞发现者相应的会从安全公司获得一定的报酬。
最后,就是非法途径了,漏洞发现者私下把发现的漏洞卖给攻击者从事非法牟利活动,或者漏洞发现者直接从事非法牟利活动也是有的。这样获得的报酬最高,但是风险也最大。是一种非常不道德的行为。
传统软件厂商的做法
以微软为代表,微软是最大的受害者,但现在也在安全社区里做的最好的一家传统软件厂商。微软有team专门收集外部提交的漏洞和分析并判断这些漏洞。如果确定后,将在每个月的补丁日中patch,或者是安排补丁计划,甚至是打包到下个sp版本再进行patch。
在补丁发布的时候,也会披露该漏洞的描述和部分细节,同时写上漏洞发现者的相关信息。
微软同时也广泛与第三方安全公司合作,从安全公司处有偿收集漏洞,同时现在每个月的补丁日之前,微软都会将漏洞的细节披露给第三方安全公司,以便于他们及时更新杀毒软件和安全保护软件,对抗0day。
传统软件厂商为什么要公开漏洞信息
这一点恐怕是很多人想不明白的,为什么厂商一定要公开这些负面的东西?这些负面新闻发出来对于厂商的形象是非常有损害的。所以很多厂商对这些信息采取封锁的态度。但是以微软为代表的厂商却反其道而行之,公开漏洞信息,鼓励大家挖掘它的漏洞。难道他在扇自己的耳光?
其实不然。因为对于传统软件厂商来说,如果不披露漏洞信息,最终受到最大伤害的是他自己。在软件行业发展的初期,互联网技术尚未兴起的时候,如果一个软件出现漏洞,那么软件厂商只能通过出一个patch或者是升级版本,让用户们买回去,或者是下载回去打patch。这种传播方式的效率极其低下。所以当一个漏洞出现后,很多人都没有patch。
随着互联网技术的发展,微软发明了自动 update,这是一项非常有效的举措,但是出于微软自身利益,这个举措是和微软的license绑定在一起的,所以有很多盗版用户无法进行自动update。而且自动update存在时间差,微软无法在同一时刻升级全世界所有的windows,有很多用户也厌烦永不休止的升级,停止了这项服务。种种原因导致,即使存在自动update,还是有很多没有patch的用户。
除了上述的技术原因外,还有一个最大的原因,就是用户不知道漏洞危害的严重性,存在一些侥幸心理:黑客不会来攻击我吧。所以有时候即使能够升级,也不会去打补丁,因为打补丁对于某些环境的机器来说,是 一件风险性相对较高的事情,可能patch后正常应用就不工作了,或者是需要重启,这对一些连续性要求高的应用是无法接受的。
用户的电脑没有patch会造成什么?想想当年的冲击波就明白了。当年的冲击波,对互联网安全的格局产生了深远的影响。而微软也在这次事件中,真正认识到了如果不向用户披露这些安全信息,最终受到最大伤害的还是他自己,因为客户的电脑被攻击,使得他们不再信任windows。
所以微软选择了披露软件漏洞,并坚持到现在。
为什么现在不再披露漏洞的细节
现在的漏洞公告,都只是极其模糊的描述一下漏洞存在于什么软件版本,在什么环境下可以被利用,风险如何等。和许多年前那种代码级细节的漏洞披露,有天壤之别。这是为什么?因为在这些漏洞公告披露的同时,黑客也在盯着这些漏洞公告,如果披露的太过详细,则黑客很容易写出攻击代码。因为总是有很多用户处于没有patch的状态,所以他们将成为受害者。
但是如果描述的太模糊,则用户无法判断是否有升级该漏洞的必要,有的就不会去升级,所以其中的权衡是一个非常难的问题。
软件厂商会购买漏洞吗
通常来说,软件厂商都不会从个人手上购买漏洞,也就是说,不会直接与个人进行漏洞交易活动。但是有两种形式的漏洞交易软件厂商不会排斥:1. 与第三方安全公司签订合同,从安全公司处购买漏洞。2.雇佣个人为全职或兼职的工作人员,从事漏洞挖掘活动。
这两种方式是因为有合同在保障软件厂商的权益,如果缺乏合同的保障,这种交易活动将很容易变成一种敲诈。如果敲诈发生,软件厂商很有可能寻求其他法律武器保护自己。
即便有合同的保障,软件厂商也会更加倾向于从安全公司处购买漏洞,一是数量和质量有保障,二是能够提出一些更严格的要求,三是和公司交易信誉会更好。反之,与个人进行交易,一个软件厂商 是比较难相信个人的信誉,即便有合同的保障。两者从一开始就不是一个对等的个体。
软件厂商会如何感谢漏洞贡献者
前面提到软件厂商不会直接花钱从个人处购买漏洞,这对于软件厂商来说绝对是一件不可接受的事情。但是,对于那些无偿报告漏洞给软件厂商的人,又会如何感谢呢?一般来说,是一些其他的非金钱的奖励。比如寄送小礼品,或者是邀请来公司参观,参加公司举办的一些会议等。目前业内普遍是这种做法。也有些特殊情况,比如设立一个奖项,用于奖励漏洞挖掘者,那么可能就是金钱方面的奖励。比如google曾经给native client的漏洞挖掘者设立过资金奖励的奖项。但那是一个比较特殊的项目,不符合普适的原则。
漏洞披露的时间上面,厂商一般都希望能够拥有更多的时间来patch,所以希望漏洞在一个合适的时间披露比较合适。比如最近google chrome的patch,其细节google会在大部分用户已经完成了patch后,再进行相应的公布,就是这个道理。
关于web漏洞的披露
前面讲了那么多,其实下面这几句才是我要写这篇文章的目的
通常情况下,互联网公司不会披露关于website漏洞的任何细节
这是因为,website漏洞与传统软件漏洞存在着本质区别,website的一切对于互联网公司来说,都是可控的。传统软件厂商无法在同一时间升级所有软件的问题,对于互联网公司来说也不是问题。一次应用发布就全部解决了。
但是,这个原则也存在一些例外。
首先,web类的应用软件不在此行列。比如商业论坛、或其他开源web应用等。由于这类东西实际上还是由用户下载回去安装的,所以虽然其开发语言是web语言,但还是应该划入传统软件的行列。
其次,当website漏洞的影响非常大,且网站无法在一次patch后消弭所有的影响,则应该公开解释原因。比如网站的数据库被别人给down走了,则需要通知所有用户修改密码。类似的,大量信用卡信息泄露,造成了恶劣的社会影响,也应该公开解释原因。
最后,我们公司会遵照业内的惯例,对于真心帮助我们改善网站安全的朋友,会获得我们的友谊。但是我们不会付出金钱方面的报酬,我们会用其他形式表示我们的感谢,并尽可能的满足您的需求。
阅读(2137) | 评论(0) | 转发(0) |