当前位置:首页 > 网络安全 > 安全知识 > 详情
网络安全知识科普-“0day”广泛存在,如何从容防控
2020年09月17日   
  0day漏洞,又称“零日漏洞”(zero-day),是已经被发现(有可能未被公开),而官方还没有相关补丁的漏洞。通俗地讲,除了漏洞发现者,没有其他人知道这个漏洞的存在,并且可以有效地加以利用,发起的攻击往往具有很大的突发性与破坏性。
 
  近年来,大量的0day漏洞出现在全国及各省市的网络安全攻防演练活动中。没有补丁的新漏洞往往让厂商和用户措手不及,唯一的方法就是应急响应,提前做好“救火”准备。
  值得注意的是,0day在日常安全工作中并不多见,但在每年的大型攻防演练中却被大量爆出。因此,供应商和甲方都应清醒地认识到,漏洞是广泛存在的,只是平时可能非常隐蔽。
以下是今年全国网络安全攻防演练期间出现的部分0day漏洞:
  ● 锐捷smartweb任意文件读取;
  ● 通达OA v11.6版本RCE漏洞;
  ● 致远OA-A8-V5最新版未授权getshell;
  ● Apache Shiro权限绕过漏洞(CVE-2020-13933);
  ● Apache Dubbo Provider 远程代码执行漏洞 (CVE-2020-1948);
  ● 宝塔Linux面板7.4.2及Windows面板6.8 提权漏洞。
  除了应急“救火”以外,是否还有让安全厂商和需求方能够从容应对0day的方法?要降低0day产生的可能性或减轻0day带来的危害,需要采用系统化的方法。
  SDL开发安全管理体系
  为了系统化地应对0day,企业需要建立SDL开发安全管理体系,大幅降低漏洞的产生概率。以微软为例,在全面推行SDL后,Windows XP和Windows Vista之间的漏洞报告数量减少了45%,SQL Server 2000和SQL Server 2005之间的漏洞报告数量减少了91%。
  SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段,即需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。
  下面结合本次攻防演练中爆出的两个0day和SDL管理体系,分析SDL如何帮助企业在开发阶段降低0day风险。
1、事前预防
  威胁建模与安全设计
  在软件开发的需求分析和设计阶段,应该对业务场景可能面临的威胁进行分析,并通过合理的安全设计规避风险。
  以最近爆出的宝塔Linux面板7.4.2及Windows面板6.8提权漏洞为例:
 
  其实这类问题在威胁建模与安全设计阶段就可以避免,对所有涉及权限划分的操作都应严格检查后再确定用户是否可以操作请求的数据。防止非授权访问及涉及权限的操作,应以会话中保存的用户标识为依据。
  编码安全与开源组件安全
  在编码时,开发人员应该具备编码安全意识和安全编码能力,避免因代码不安全导致漏洞发生。
  以致远OA-A8-V5最新版未授权getshell为例:
 
  在编码阶段,开发人员应采取以下安全措施,降低漏洞发生的概率:
  设置权限限制,禁止上传目录的执行权限;
  严格限制可上传的文件类型;
  严格限制上传的文件路径;
  文件扩展名服务端白名单校验;
  文件内容服务端校验;
  上传文件重命名;
  隐藏上传文件路径。
  除了代码自身的安全漏洞,软件应用开发过程中难免要引入开源组件。开源组件如果存在安全风险,也会影响整体软件的安全性。雳鉴SAST除了代码漏洞检测能力,还可以对软件应用引入的开源组件进行分析,发现开源组件存在的安全漏洞、版本老旧、开源许可法律风险等问题。
  在每年的攻防演练中,第三方组件和框架也都会爆出很多0day漏洞,第一时间进行响应,并对雳鉴SAST作版本更新,可帮助用户避免使用有风险的开源组件。
 
  IAST灰盒安全测试
  除了前期的设计和编码问题,在最终测试环节,还应该采用先进IAST安全测试技术,来发现更多的安全问题。IAST技术结合SAST和DAST的优点,做到检出率极高且误报率极低,被Gartner评为十大信息安全技术之一。
  通过开展持续化的开发安全规范和安全知识培训,不断提升人员安全能力。配合先进的安全工具进行漏洞检测发现,能够大幅缩减发生0day的概率,防范于未然。
2、事中响应
  SDL体系建设完善的企业,除了做开发过程的安全管控,还会包含针对0day的应急机制,通常在管理规范和流程中体现,主要包含以下内容:
  漏洞信息监测收集和危害判断的负责部门,通常为安全部门。根据危害等级和危害范围,确立响应的等级、需要哪些部门(厂商)参与以及漏洞修复时效。按照流程快速响应,推动0day的缓解处理和后续补丁修复,最大化减少0day的影响。
  以Apache Shiro权限绕过漏洞为例,典型的响应流程如下:
  (1)安全部门:收集漏洞情报,分析漏洞危害,给出修复方案(漏洞简报示例如)
  
  (2)运维部门:通过资产管理平台或相关检测工具,确定受该漏洞影响的资产范围,再按照资产价值(重要程度)和网络暴露情况确定漏洞修复的优先级。
  (3)业务归属部门:做好内部的漏洞修复通知和外部的业务升级暂停公告,要求运维部门协助做好系统备份工作,并且在非业务时间段实施升级。漏洞修复后,业务归属部门自行检查业务功能是否受影响,校验数据是否丢失。
  如果0day影响的是自主研发或外部购买的产品,以上过程中还需召集开发部门或软件供应商,共同商讨可行的漏洞缓解和修复方案。
  0day披露后的应急处置,最重要的是具备内部响应机制,做到快速反应处理,降低0day的杀伤力。
3、事后总结
  完成0day处置的同时,应将其加入安全开发知识库,通过日常的培训学习,避免后续发生类似的安全问题。如果漏洞可以通过安全工具检测,则需要供应商及时更新漏洞库版本。