1.1.3 SDLC中的安全挑战
需要指出的是,各种软件开发模型的出现主要是为了解决软件开发质量和开发效率等软件危机问题,并不是针对安全问题,而软件开发过程中的安全挑战事实上覆盖软件生命周期的各个阶段。下面以SDLC 5阶段为例进行说明。
1)软件准备阶段的安全挑战:从广义的角度出发,软件准备阶段的安全挑战不仅包括如何从问题定义、需求分析和软件设计过程中发现风险并通过梳理出的安全需求提出符合要求的安全设计,还包括团队安全意识缺失和安全能力不足。
2)软件开发阶段的安全挑战:在开发阶段,开发团队对软件进行编码、集成以及展开一些针对性的测试。在软件开发阶段,团队主要考虑的是如何实现安全开发,面临的挑战包括如何提高团队的安全开发能力,以及采取什么措施、引入哪些工具来确保开发安全。
3)软件部署阶段的安全挑战:如果软件部署上线后才发现安全漏洞,甚至引发安全事件,相关的漏洞修复和安全事件处置的成本会呈指数级增加。因此,软件部署阶段的安全挑战包括如何在软件上线部署前及时发现任何可能存在的安全隐患。
4)软件运营阶段的安全挑战:软件运营阶段也就是软件发布后用户上线使用的阶段,这通常也是整个软件生命周期中持续时间最长的阶段。即便被认为是“安全”的软件(即经过一系列安全审核和评审后部署上线的软件),在上线后仍然可能爆出新的漏洞,甚至引发安全事件。因此,软件运营阶段的安全挑战包括如何实现对系统的有效监控以及如何有效应对突发安全事件。
5)软件废弃阶段的安全挑战:到了软件废弃阶段,团队主要考虑隐私数据的存毁与合规性等,需要严格依照国家法律法规对服务和数据进行下线和销毁处理,避免产品和用户的敏感数据流入社会。因此,软件废弃阶段的安全挑战包括企业相关制度的缺失和执行落地难等。
透过前面的示例分析,不难发现安全挑战确实广泛存在于软件生命周期的各个阶段。然而,现实的软件开发过程中,开发团队往往不会全面性地考虑到软件安全问题。过去,企业应对安全问题往往是在上线前甚至上线后通过人工渗透测试、自动化安全扫描等方式发现漏洞,然后反馈至开发人员修改。但这种试图毕其功于一役的应急式安全管理带来的问题是显而易见的,具体如下。
1)开发人员修复漏洞的周期长、成本高;
2)问题发现滞后,可能会限于当下技术而搁置安全问题;
3)同样的安全问题频繁出现,安全维护成本居高不下。
面对日新月异的攻击手法和越来越严峻的安全形势,传统的安全防护机制难以建立真正有效的积极防御体系,无法从根本上改善软件产品及上下游供应链的安全现状,还会较大程度影响软件产品的正常交付,导致软件供应商和用户持续遭受不同程度的安全威胁甚至经济损失。因此,软件安全问题不仅成为软件开发过程中的重要问题之一,还是软件供应链安全的核心挑战。