从Log4j2组件漏洞看软件安全开发●李卫冯璐铭*胡圣红/国家工业信息安全发展研究中心【摘要】近年来软件产业的快速发展,有力支撑了国家信息化建设。但当前软件开发从需求分析、概要设计、详细设计到具体编码实现不可避免地存在一些安全漏洞。本文分析了当前主流的软件安全开发模型,从不同层面对软件安全开发提出了具体要求,并就如何落实软件安全开发提出相应的建议。【关键词】软件安全开发开源软件政策法规标准规范【中图分类号】TP393.08TP309【文献标识码】A1引言2021年12月10日,国家信息安全漏洞共享平台(CNVD)发布了ApacheLog4j2组件存在远程代码执行漏洞的公告。ApacheLog4j2组件是一个基于Java语言的开源日志框架,被广泛应用于业务系统开发,用以记录程序输入输出日志信*通讯作者:冯璐铭。2022年10月|保密科学技术|45网络防护息。攻击者可利用该漏洞向目标服务器发送精心构造的恶意数据,触发ApacheLog4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。该漏洞可能导致设备远程受控,进而引发敏感信息泄露、设备服务中断等严重危害,属于高危漏洞。公开网络资产测绘工具FOFA统计的数据表明,目前全球暴露在外网的417万资产使用了ApacheLog4j2组件,而我国存量最多。ApacheLog4j2作为最常用的Java程序日志监控组件之一,被应用于各种各样的衍生框架,同时它也是Java全生态的基础组件之一,基于其构建的软件产品数量巨大。该事情引发了整个软件行业的动荡,以致全球软件供应链安全面临失控风险,因此事先做好软件开发过程中的安全风险管控势在必行。2软件安全开发成熟度模型概述软件安全开发是在信息系统或软件的开发生命周期中,通过对软件的风险分析,制定并执行相应的安全开发策略,从技术、管理、工程和人员等方面提出安全开发要求,确保软件的保密性、完整性和可用性,将安全风险降低到可接受的程度。当前主流的软件安全开发方法流程包括:微软软件安全开发周期(SecurityDevelopmentLifecycle,SDL)、开源应用安全社区(OWASP)软件安全成熟度模型(SoftwareAssuranceMaturityModel,SAMM)和软件安全构成成熟度模型(BuildingSecurityInMaturityModel,BSIMM)。(1)微软SDL方法微软SDL是全球行业首创的安全开发方法论,是ISO/IEC27034《应用安全标准概述》的一个成功的应用实例。早期SDL的核心是将系统的安全活动融入研发活动中,提出了一系列的安全活动集合,主要由7个部分组成:培训、需求分析、系统...