我向来喜欢直入主题。关于最近某服EDR的远程代码执行漏洞事件,通过漏洞能直接控制远程服务器,有些同学还通过安装包分析了其他一些漏洞,详细的描述我就不赘述了。整个事件在圈子里引发了不少的讨论。
针对这件事,我想发表一些个人的看法。
首先,某服真的需要加大对产品本身安全性的投入。从代码本身的实现来说,这份代码确实写的不怎么样,甚至可以说很不怎么样。换位思考,如果这些代码是我自己来写,很多低级错误是可以避免的,但是真的能做到万无一失吗?尤其是在时间很紧的情况下,坦白说我也很难保证。网络安全产品本身是一种产品,既然是产品,就会在开发过程中权衡收益和投入,安全产品也是人写出来的,如果时间不够,或者审查机制不完善,很多常见的错误自然就会留在代码中打包推向市场。最近也看到腾讯玄武实验室负责人于旸(TK)在朋友圈里说:“安全是成本。无论什么行业,在生产成本上自然能省则省。所以安全产品的安全性不会和同一监管环境下的其它产品有太大不同。在大多数企业的内部机制设计中,检测自家产品的安全都是吃力不讨好的事情。”这也是某服需要多考虑和投入的地方,长期而稳定的投入才能提升产品自身的安全性。
能在安装包看到代码并非源码泄漏,但是可以做的更好。这次流传的某服EDR事件中,还提到了源码泄漏,这听起来感觉很严重,但是内行人都知道,在安装包里面找到了一些PHP代码,这并不是源码泄漏,这些代码本来就该在安装包里面。从架构来说安装包里面有代码是很正常的事情。大型系统基本都是核心模块加上一些脚本来实现,核心模块负责大部分逻辑,然后脚本负责上层业务,由于脚本是解释执行的,基本不编译成二进制,所以就会出现打开安装包看到代码的情况。就我所接触的大部分类似产品的安装包都带有源码,例如卡巴斯基等等,解开他们的安装包都能看到一些脚本有的是Python,有的是Shell。不过某服确实需要把这件事更进一步做好,例如可以把安装包里面的代码混淆一下,虽然这样做并不能阻止有心人分析,但是确实可以增加破解的难度。
安全从业者维护安全的初心是好的,但是也要做到依法披露漏洞,学会保护自己。某服的这个漏洞这么快就被披露了出来,也确实让人震惊,根据《网络安全漏洞管理规定》的规定,第三方组织或者个人不得在网络产品、服务提供者和网络运营者向社会或用户发布漏洞修补或防范措施之前发布相关漏洞信息,而且不得提供乘人之危的方法、程序和工具。一般情况下,当发现一个漏洞之后,可以先上报到国家信息安全漏洞共享平台(China National Vulnerability Database,英文简称“CNVD”),厂商在90/10天内修复,厂商采取漏洞修补或防范措施后再批露漏洞的细节以供同行们学习和借鉴,这样也能最大程度的保护用户的数据安全,毕竟不管是哪个厂商,其使命是一致的,那就是维护用户的网络安全。但是现在这样直接把问题细节通过非正常流程公开,破坏了行业规则的同时,其实也是有法律风险的。为什么说是风险,是因为刚才提到的漏洞管理规定还只是征求意见稿,但是如果真的因为披露了漏洞带来了较大的社会影响时,相信谁都不愿意为此被请到局里去喝杯茶吧?我们还是要依法披露漏洞,保护好自己。而且一旦行业规则和法律没有得到遵守,真正发生危险的时候,我们这些从业者很难真正的保护到用户,很难真正御敌于国门之外。
原文始发于微信公众号(安在):关于这两天网安圈热议的那事儿,闲话几句