信息时代,软件无处不在。随着上下游软件供应链的关系和结构越来越复杂,软件开发及应用的安全防护成为各单位越来越关注的重点和难点问题。供应链威胁存在于软件的全生命周期,例如:在开发环节,可能因软件供应商引入安全缺陷或后门,使用不安全的开源软件或编译环境被污染带来的安全隐患,在交付和运行环节可能存在供应商插入恶意代码、软件更新被劫持、系统被破解等风险。
针对以上风险点,用户应在软件供应商采购管理、合同管理、架构设计管理、软件开发管理、发布管理、验收管理和常态化运营管理七个方面建立规范标准,形成一整套跨软件全生命周期的供应链安全防护体系。
供应商采购管理
用户在选择供应商时,应视项目需求情况审查供应商以下内容(包括但不限于):注册资本、软件开发人员数量、经营状况、相关项目案例、CMMI软件成熟度认证及相关软件开发资质等。如涉及涉密业务,还需要审查开发商是否配备必需的防护设施、设备和人员,以及具备相关涉密资质。
合同管理
用户应在软件供应合同中与供应商明确以下约定。
对软件的功能、质量、知识产权、源代码归属、相关系统文档等作出明确要求;供应商应承诺在发现信息技术产品存在安全缺陷、漏洞等风险时,立即采取补救措施。
供应商应提供其软件产品中所使用的第三方组件/开源组件的清单,一旦这些第三方组件/开源组件出现安全漏洞,供应商需承担同等安全责任,并提供必要的技术支持。
在软件应用前,供应商应组织开展第三方安全测试及代码安全审计工作。
系统在正式运行前,供应商应提供软件设计的相关文档,包括但不限于业务需求及安全需求规格说明、安全方案设计、程序源代码、源代码说明文档、系统配置文档、软件使用指南、软件操作手册、软件维护手册、开发过程中产生的记录、测试方案、测试过程记录、软件测试报告、第三方安全测试报告以及代码安全测试报告。
软件架构设计管理
用户应对供应商提出以下要求,并持续开展监督工作。
确定安全体系架构,设计安全协议和安全接口。
确定访问控制与身份鉴别机制,定义主体角色和权限。
确保信息输入的安全过滤、信息输出的校验和控制。
确定数据结构的安全设计,选择安全的加密方法和算法。
确定敏感数据的保护方法。
确定内部处理逻辑的安全设计。
评估内部通信机制,确定完整性机制。
软件安全开发管理
供应商在进行软件开发时,至少应遵循以下原则。
最小特权原则。对于请求存储资源的主体,应只分配最少的必要权限,而且应保证赋予权限分配的最短必要时间。
权限分离原则。尽量把软件划分为不同独立的组件,把权限分离成不同的权限许可和认证条件,把用户分离成不同的权限角色。不应将权限一次性授予一个用户,而应根据需要提供多重的认证与检查机制再进行授予。
最少共享机制原则。避免多个主体共享同一个资源,每个主体应有不同的机制或实例,在保证多用户存取访问灵活性的同时,防止由单一的共享机制导致潜在的危险行为。
完全中立原则。每次主体对资源的请求,系统都应实行认证和执行检查,特别是与安全相关的内容,以避免错误地赋予主体过高的权限,或在第一次授予权限后,主体被攻击并出现相关权限被滥用的情况。
心理可接受度原则。应尽可能使安全机制对用户透明,只引入少量的资源使用障碍,对用户友好,方便用户理解和使用。
默认故障处理保护原则。当系统失效或产生故障时,必须以安全的方式处理系统信息,系统故障处理默认应满足安全的设置。例如,即使丧失了可用性,也应保障系统的机密性和完整性;出现非法攻击时,必须阻止未授权的用户获得访问权限;发生故障后,不得向远程未授权的用户暴露敏感信息,诸如错误信息、服务器信息之类。
经济性机制原则。系统的设计和实现应尽量简单,以降低因复杂性带来的安全问题。
不信任原则。开发者应假定系统环境是不安全的,减少对用户、外部系统、其他组件的信任,对外部实体所有的输入都要进行检查,包括看似可信的外部用户输入。另外,必须对每次函数或系统调用的返回值进行检查,并进行正确的处理,如内存的分配。
纵深防御原则。软件应设置多重安全措施,并充分利用操作系统提供的安全防护机制,形成纵深防御体系,以降低攻击者成功攻击的机率,减小危害。
保障最弱环节原则。攻击者一般会从系统最薄弱的环节发起攻击,而不是针对已经加固的组件。因此, 软件开发者必须了解自身软件的薄弱点,针对这些薄弱点实施更强的安全保护措施。
公开设计原则。应假定攻击者有能力获取系统足够的信息来发起攻击,而不是寄希望于攻击者不知道系统设计信息而确保系统的安全。例如:设计的加密算法存在弱密钥,系统设有默认口令等,攻击者能够通过反汇编分析获取这些信息。
隐私保护原则。系统收集到的用户信息都必须实施妥善和安全的保护,不应向其他用户泄露用户的隐私信息。攻击者获得了用户的隐私数据之后,可以进一步发起针对用户的各种攻击,如欺骗等。
攻击面最小化原则。软件设计人员需要仔细评估软件中所有的功能模块和接口的特性,分析可能存在的安全风险,并设定相应的限制措施。如果某个功能或数据接口不是必要的,则应取消或禁止,或者默认不开启。如果某个功能或数据接口的配置没有特殊理由,则应默认按安全的方式进行设置。
软件开发商根据安全开发原则进行软件开发,确保开发环境、编码及系统流程控制的安全,包括环境安全、功能实现安全、代码实现安全、资源使用安全等。用户应定期检查和控制开发流程,确保有效遵守开发流程中的各项安全措施。
软件发布管理
供应商应在软件交付前完成软件安全测试工作,测试内容应包括Web应用漏扫和主机漏扫、代码的安全测试、渗透测试和安全功能测试,并针对代码安全测试和渗透测试结果进行修复。针对安全测试工作,可以根据需要邀请有相关资质的第三方专业机构参与。
供应商应在软件发布前进行最终的安全审查,确认并重新评估所有的安全活动,例如威胁模型、测试输出、性能需求等,以确保软件产品满足发布要求。在软件上线前,应确保部署环境的安全,包括但不限于以下方面。
确保应用系统部署的硬件安全、操作系统安全。
确保应用系统部署的账号、口令安全。
满足应用系统部署的安全策略要求(如访问控制)。
确保应用系统部署的物理环境安全。
掌握网络的脆弱点及主机的配置缺陷。
软件验收管理
软件项目验收时,不仅需要验收功能需求的实现情况,还应验收安全需求的实现情况。软件安全验收应确保应用软件的功能、性能、安全、隐私都符合要求,并且软件无需特定的专业人员就能部署和管理。软件安全验收应考虑的内容包括但不限于以下方面。
确保针对安全需求进行了相应的安全设计,并且所有安全需求都得到了满足。
确保软件默认配置是安全的,不会导致由于部署而产生安全问题。
确保软件在多样的计算环境中是安全的。
确保软件防护措施满足隐私保护的相关要求。
确保软件满足相关标准和要求,例如等级保护要求、行业网络安全保护相关要求。
常态化安全运营管理
用户应制定软件系统安全运营管理规范,对应用软件运维人员的日常操作、源代码版本控制、变更、发布、存储和漏洞响应机制等方面提出具体规范要求,包括以下方面。
运维人员执行系统更新、版本更新或其他有风险的操作时,应先制定好详细的操作方案(如操作指导手册和故障恢复方法)。
供应商应对源代码的变更和版本发布进行统一控制,对程序资源库的任何修改、更新和发布,都要经过用户单位主管领导的授权和批准。
供应商应指定专人妥善保管程序源代码及相关技术文档,对源代码与技术文档实行授权访问。
程序源代码库的维护和拷贝应当遵从严格的变更控制程序,任何源码文件(包括设计文档、需求说明书、操作手册等)不得使用互联网工具进行传输。
供应商在软件开发等服务完成后,向用户提供程序源代码或相关技术文档,不得将系统采用的关键安全技术措施和核心安全功能设计对外公开。
软件运行维护全过程实施变更控制,确保系统安全性与控制措施不被损害。由运维人员提出变更申请,需经用户批准后方可开展。
用户与供应商应共同对应用软件及其使用的第三方组件进行持续监测,定期扫描漏洞,并及时修复漏洞。
重点管控开源软件的使用,建立并定期更新开源软件资产台账,持续监测和消减所使用的开源软件的安全风险。
建立完善的漏洞响应机制,包括监测告警、应急响应、事件处置、持续跟进,包括但不限于应用软件漏洞信息的主动收集、漏洞报告渠道的建立和维护、漏洞补丁的开发和发布,针对应用软件漏洞,及时开展漏洞应急响应和修复支持等。在发现安全缺陷及漏洞时,应立即采取修复或替代方案等补救措施,并及时告知安全风险。
建立供应商从准入到退出的评估管理体系,通过供应商准入调查、风险评估意识宣贯、年度考核等手段,增强对供应商的安全管理。
有条件的用户可以自建源码仓库,实现统一集中的代码管理。持续跟踪正在使用的开源组件的社区情况、版本更新情况、开源许可情况,覆盖Java、Python等多种组件语言类型。供应商在开发应用系统时,必须通过自建源码仓库拉取所需组件,否则无法通过校验,从根本上防范未授权情况。
结语
通过建立跨软件全生命周期的供应链安全防护体系,实现全流程管控措施和闭环管理,持续建立健全开源技术应用管理体系和制度体系规范,引入技术评估、安全审核和审批流程,确保软件不带“病”上线。在使用环节,通过定期漏洞监测及处置流程,确保漏洞、风险全面收敛。通过自建源码仓库,及时屏蔽问题组件,防止风险蔓延。该方式可以在开源组件漏洞排查官方库污染事件处置中发挥重要作用。通过信息资产数据化管理,将全部软件供应链资产纳入安全管控,提高第三方和开源软件组件的安全扫描覆盖率和高中危漏洞修复完成率,在运营管理上可以有效支撑海量漏洞情报的快速研判、排查和修复,实现统一登记、统一跟踪、统一修复、统一退出,有效收敛风险,做到漏洞可查、可测、可溯源和可处置。以上措施可以将供应链安全风险主动权牢牢掌握在自己手中,为软件业务信息系统的稳定运行提供安全可靠的支撑。
来源:《网络安全和信息化》杂志
作者:殷平
(本文不涉密)
-END-
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...