聊聊所谓的0day漏洞

聊聊所谓的0day漏洞
最近几天看到网上各种妖孽横行,乱扣帽子,哗众取宠,觉得有必要说点正本清源的内容,以正视听。

一般人所知道的安全风险是这样的,某人发现了某网站的某个漏洞,或者成功的实现了某个网站的入侵,那么这是一种所谓的常规的安全事件,或者说安全风险。但这种,在信息安全产业,这种检测和发现的过程,通常被划定为漏洞扫描。所谓漏洞扫描,是基于已知的安全漏洞,安全问题,对互联网环境进行扫描侦测,具体到某个网站,网址,或者某个应用,某个特定平台上,定位到具体的漏洞。

从白帽来说,你发现了某个网站,或者某个服务商的漏洞,通报该网站或服务商是一个负责任的行为,但是基于目前国内的一些法规和网络环境,有时候,通报反而是给自己惹麻烦的事情,因为你怎么发现的?未经授权就扫描了对方的网络和服务,尝试了一些可能造成入侵的特殊字符的信息传输,对某些服务商而言,他们会认为你这是挑衅,是危害他们的安全,他们不但不会感谢,反而会斥责,甚至试图将你绳之以法。你通报这个漏洞,非但没有任何奖励,反而会给自己带来一定的风险,甚至牢狱之灾。所以,这些年,自从乌云被整顿后,据我所知,除非是跟服务商有合作关系的安全公司和安全机构才会做这样的安全通报,对于一般的第三方白帽,特别是没有大公司背书的野生白帽,基本上都销声匿迹了,当然,与之相对的是,黑产们可没有销声匿迹,他们很乐见这样的环境,白帽都噤声了,他们的春天就来了。这事,就不展开说了。

但以上不是今天的主题,以上说的,是基于已知漏洞,针对网络环境特定目标的扫描和入侵尝试。

那么我旧文提过很多次0day ,而且我很直白的说过,对于0day是没有防御方案的,是无解的。

什么是0day,就是未被公开的安全漏洞。

比如说,某年月日,微软发布了一个补丁,修补了一个安全漏洞,那么这个安全漏洞是什么时候出现的,可能已经有几年时间了,有些甚至超过10年时间,在未发布补丁之前,这个漏洞就是0day。而发现这种漏洞的行为,叫做漏洞挖掘。

但是我们知道,类似微软这样的公司,也有自己的安全团队,开发工程师也都经历过安全培训,产品发布前也有严格的安全测试,但尽管如此,依然会出现这样的漏洞,为什么?漏洞挖掘,和漏洞扫描,其技术难度完全不可同日而语。极少数天才,用非常刁钻的思维角度,才有可能从绝大部分高级程序员的思维盲区中找到关键问题,发现新的安全漏洞。

那么一个0day的漏洞,其危险性,包括了两个层面。第一个层面,是这个安全漏洞所属的系统,在世界上的普及率,比如某个特定版本的小工具,也许有很大的漏洞,但是全球只有极少数人在用,那就很难形成一个广泛传播性的安全事件。第二个层面,是利用这个漏洞,可以获得怎样的权限,或者造成怎样的破坏效果。比如有些漏洞虽然广泛存在,但可能需要很多特定条件才能被利用,或者仅仅会造成少许敏感信息的泄露,需要结合其他漏洞才能造成较大破坏,那么这种漏洞,也会被认为风险性比较低。

通常,既符合广泛普及性又符合严重危害性的安全漏洞,是非常罕见的,这种漏洞一旦在官方补丁发布前,网上出现攻击代码,几乎肯定会造成全球的安全事件,那么历史上,这样的案例也是有几起。

我不知道这样解释是否清楚,或者我再举个例子说明。

大部分人常见的安全问题,是基于某个已知漏洞,在特定的网站和服务商找到存在同样的漏洞,并可以被有效利用。这里的主要问题是,特定的服务商没有及时打补丁,没有及时完成安全防护和加固。

而所谓0day问题,是基于某个操作系统或者常见的应用软件的未公开漏洞,几乎所有使用了这个操作系统或应用软件的服务商,都有可能中招,而且,在官方补丁出现之前,完全没有任何补救策略,甚至连判断策略都没有。

那么,对于漏洞挖掘者,发现了这样的0day漏洞,一般会怎么处理呢?

我先说白帽的标准流程,或者说这些年业内被认为最合规,最安全,最负责任的流程。

第一步:验证漏洞后,立即上报相关应用的开发商,比如你发现的是apache的漏洞,上报给apache,你发现的是微软的漏洞,上报给微软。这个漏洞不是针对具体服务商的,是针对全球所有安装了该软件的服务商的,只有软件的开发商给出解决方案才是最合理的。

第二步:在软件开发商给出公告之前,尽可能保密。
为什么,很简单的道理,作为信息安全的从业者,一个很重要的思维方式,就是不信任任何第三方。

你说某机构很好,很可信,是的,但是这个机构是很多人组成的,我凭什么相信这里的每一个人。如果攻击方式被某些人泄露,哪怕是无意泄露,这个风险都是极为惊人的。比如这个机构的负责人,电子邮件被人入侵了怎么办,或者电脑上有木马怎么办。我就算相信这个人的人品,我凭什么相信这个人的安全素养。

作为安全行业从业者,怀疑一切是职业病,没有怀疑,根本吃不了这碗饭。

那有人会抬杠,你凭什么相信软件官方呢,但软件官方发布补丁是必须的过程,你不信也不行,如果软件官方出现了信息泄露和其他风险,说实话,他们自己承担责任,毕竟软件是他们开发的,你是无责的。但如果通过你的信息传递,第三方泄露了这个风险,并导致了重大安全事件,你多少是有一些连带责任的,不一定有法律风险,但是通常会被官方谴责。

第三步:开发商发布公告和感谢后,才是尽可能帮助与自己有关的第三方,提供足够的技术支持服务。

以上是我说的标准的流程,但现实中,也不是那么严格,比如有些白帽会在第二步偷偷泄露给一些自己利益相关的第三方,让他们尽早做一些临时补救方案,但不会提供具体漏洞利用细节,这种也会存在。我不说对错,我只说明一点,等官方公告是标准通报流程,提前泄露在现实中也有一定的存在合理性。

所以你说提前泄露但不公布技术细节难道不行么?

嗯,提前泄露风险的补救方案,哪怕抹去利用细节,但对于业内聪明人来说,是可以反向破解漏洞全貌的,这事咱们中国人干过,当年两个安全工程师,方兴(后来创建了南京瀚海源,卖给了阿里)和季昕华(创建了ucloud,国内上市)就基于欧洲某安全组织泄露的一些信息,反向还原了某个高风险0day漏洞。这个故事我旧文应该提过的。

那么有些读者应该知道,我想说的是什么。

阿里云上报 apache log4j漏洞的流程,作为信息安全白帽来说,没有任何问题,非常负责的表现,为什么提前上报给美国的机构,因为apache软件官方就是美国的机构,为什么没有同时同步给国内机构,因为从业内行规来说,apache官方公告之前,本来就不需要同步给任何人。

不仅apache是美国的,iOS也是美国的,安卓也是美国的,不好意思,目前能发现的大部分严重的0day的漏洞,可能都要先报给美国。而且,国内的信息安全有关法规,对这种行为也是认可的。

那我继续说,不上报给软件官方行不行?其实是行的,而且也不违法。

我旧文应该说过,很多信息安全公司手里都会攒一些0day,为什么要攒?

竞争需要,比如A公司漏洞挖掘能力很强,他们挖掘了10个0day,都按照标准流程上报软件官方了,感谢信收了一堆,官方公告后都补完了。B公司没有A公司厉害,他们挖掘了5个0day,为了公司品牌形象,上报了3个,偷偷藏了2个。

现在某机构有个大单,要选择安全服务商,需要测评两家公司实力,那么机构也有自己的安全团队,也知道打补丁,知道做安全防护。现在让两家进行入侵测试。A公司手里没有0day,发现甲方的系统无懈可击。B公司的私藏发挥了作用,成功完成入侵测试,甲方选谁,肯定选B公司啊。

所以以安全服务为生的公司,藏几个0day,用于商业竞争,是很正常的。

此外,一些政府资助的,特别是军方资助的机构,也会留一些0day在手里,以应不时之需。

这也有案例,前几年美国的安全公司发现一个牛逼的蠕虫,经过解析发现,这个蠕虫里用了2个0day,可以算是非常奢华的配置,而且居然做的人畜无害,对普通中招的机器毫无破坏,仅仅传播。只在特定的一种工业设备上造成破坏,什么设备呢?恰恰是伊朗的核设施。因为伊朗的核设施本身与互联网隔绝,所以蠕虫的第一步,利用第一个0day实现无感知的传播,通过某些伊朗核设施工作人员的私人电脑,在互联网中招,然后传递到局域网。第二个0day仅仅针对特定型号的工业设备,实现破坏。当然,也有大量无辜的普通人中招,但他们没有任何感知。那么请问,这个蠕虫的背后是谁?别问我,所有人都只能猜。

还有呢,就是地下交易市场。

0day漏洞其实是可以拿来交易的,比如说,前面提到了,某些安全公司会收,他们自己会挖掘,但遇到合适的收下来也是有用的,至少和竞争对手抢标的时候用得到。比如,某些政府和军方会收,当然,很多时候也是委托他们投资的安全公司收,毕竟需要有人能搞明白这玩意。比如黑产和灰产会收。市场价随行就市,如前文所述,和漏洞的覆盖率,漏洞的危险程度是正相关的。从几万美元到几百万美元都会有。

坦白说,0day漏洞交易价格的上限制约,是信息的保密程度,毕竟这玩意一旦被公开,很快价值就会归零。理论上卖方可以卖多家,所以买方不能肯定这个漏洞的持续可用性,同时也担心卖家交易后突然通过其他渠道公开了漏洞。所以信任关系制约了交易的规模和价格。

理论上,一个0day漏洞可以造成全球互联网天文数字的损失,但由于交易中的信任问题,实际上交易价格不会过于离谱。

那么你说,如果你交易了0day漏洞,对方用黑产造成了巨大损失,你要不要担负责任。

你觉得,在现有的世界里,军火商会为纷乱的战争承担责任么?

实际上,至少目前,从行业来说,法律只追溯攻击者,并不追溯系统漏洞的原始发现和公布者。最多只是谴责这种不负责任的行为。

而现实中,由于0day漏洞极为稀缺,一般而言不会用于低价值目标的攻击和入侵,这也是我说的,作为普通用户,普通企业,不用过于惧怕0day,如果真的遇到大范围无差别攻击,运气不好可能会轮上你,但这种事也防不胜防,只能自认倒霉,基本安全做好,其余的多想无益。实际上,互联网上99%以上的入侵和攻击行为,是基于已知漏洞,基于0day的攻击行为,其实只发生在一些极为特殊的场景中,比如前面提到的,伊朗核设施。

早期,由于软件官方对白帽上报漏洞的应对态度不积极,也被一些安全高手报复性的公开过漏洞细节,导致过一些全球性的安全事件,是的,主要是微软,但最近几年,微软对安全的重视程度非常高,tk教主也拿过微软的安全奖金,业内白帽受到足够的尊重,就不会再去挑衅官方。

那么再讲一点逻辑,软件官方最需要了解自己的安全漏洞,而且诸如微软,苹果,谷歌,都是超级有钱的金主,他们为什么不用高价悬赏自身漏洞,如果这样,地下交易市场不就不存在了么?

这里有一个关键逻辑,就是如果奖金过高,那么开发人员,就有了一条发财的方案,开发代码的时候,有意识地保留一些隐蔽的逻辑漏洞,然后让自己外面的朋友去申请奖金,岂不是爽歪歪。

你说代码没有审查么?对于高水平的程序员来说,留一个隐蔽的逻辑漏洞,其实是很难被审查出来的,就算被发现,也很容易解释为安全意识不到位,疏忽大意,你很难证明说对方是故意保留的。绝不会是留那种简单明晰的后门。当然,我承认,对很多读者来说,理解这一点确实是有难度的。

那么说个结论就是,如果软件公司对安全漏洞的奖励过高,那么难免会出现内鬼图谋获利的风险,所以目前而言,一个现状就是,软件公司官方虽然有安全奖励机制,但所能兑现的奖励金额,其实远低于地下交易的黑市价格。对内部高水平的程序员来说,做这样的事情就很鸡肋。换言之,一个白帽,向软件公司官方报备漏洞,其商业收益其实是很有限的。但这也是所谓白帽安全工作者的责任感所在。

信息行业的安全是由大量的白帽安全工作者守卫的,坦白说,就是靠着他们的责任心和荣誉感。他们按照合规流程报备的每个漏洞,其实都是在帮助我们所有人,可能很多人觉得,他们报备的这个漏洞和我有什么关系,你在互联网上有没有账号,有没有资金往来,有没有购物的记录,有没有其他隐私信息不希望别人看到的,或者其他涉及财务的信息。你知道哪个网站,哪个平台的服务会跟这个漏洞有关么?如果漏洞没有被报备给软件官方,而是流入了地下黑产,你知道哪些平台服务会中招,导致数据泄露么,你就这么自信以为不会涉及到你么?

因为你不知道,所以你才敢大言不惭的大放厥词。

回到阿里的这个案例,他们和电信的那个组织有怎样的协议,坦白说,我不知道,也没关心过。他们之间有没有沟通,有怎样的沟通,我也不知道。所以,关于那个组织对阿里的处罚,我确实没有发言权。

但回到基本逻辑,白帽的基本流程,优先上报软件官方,(所谓的美国机构)。在软件官方公告前保持缄默,这两点上完全合乎行业规范,没有任何问题。

如果政府有关机构愿意资助商业公司的安全研究,或者出资购买所谓0day漏洞,双方自愿的情况下,将0day漏洞优先报给政府,当然也合乎现实常理。这条路径确实也是存在的。

但不存在说,按照基本流程报给软件官方,就是叛国,就是跪舔美国的说法。凡是这么说的,有一个算一个,都是24k纯傻逼。

不好意思,还是忍不住骂人了,最近看到几篇这样的十万加和满屏脑残的傻逼评论,怎么都忍不住。

知道明朝怎么亡的么,孙传庭怎么死的,卢象升怎么死的,袁崇焕又是怎么死的。一群所谓清流的嘴炮党在后方,天天叽歪,各个都爱国,各个都正义,前面打仗的,全都挑出一堆毛病。各种掣肘,各种挑错,各种恶心你,逼死一个算一个。谁干活谁有罪,就他妈的一群嘴炮党整天哔哔哔,觉得自己最牛逼。到了最后,倒是尽忠报国啊,不行,水太凉。

资讯

恒大理财爆雷

2021-9-18 20:49:36

资讯

西安健康码系统连着崩

2022-1-7 16:25:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索