产业互联网快速发展的同时也面临诸多安全挑战,安全威胁的发展呈现出新的特征和形势,应用系统面临的威胁环境不断变化,其安全形势仍不容乐观。研究机构近年来对网络安全态势的分析表明,由应用软件漏洞导致的安全事件一直占据着排行榜靠前位置,这些安全事件既造成了严重的数据泄露,又对企业的生产经营带来了重大影响。
美国国家标准与技术研究所(NIST)评估,如果在应用系统上线之后进行软件漏洞修复,其修复成本是需求设计阶段修复成本的几十倍,所以应用软件的安全质量不仅仅是测试出来的,更是设计开发出来的。腾讯安全专家咨询中心从客户视角出发,结合腾讯内部应用安全开发的实践经验,针对企业用户如何设计开发建设应用安全开发体系,给出具体的能力清单和指导框架,汇聚成通用性的应用安全开发能力图谱,旨在帮助企业在产业互联网转型过程中提升应用软件安全质量,从源头降低安全风险。
腾讯应用安全开发能力图谱提出了六大能力:安全开发管理能力、安全开发需求能力、安全开发设计能力、安全开发编码能力、安全开发测试能力和安全开发成熟度评估能力。
- 安全开发管理能力是安全开发体系指路明灯;
- 安全开发需求能力是安全开发体系能够落地的关键因素;
- 安全开发设计能力是安全开发落地的重要动作;
- 安全开发编码能力是落地不二法门;
- 安全测试能力是持续迭代的重要保障;
- 安全开发成熟度评估能力是科学的度量。
六大能力覆盖了应用安全开发生命周期的主要场景,在建设应用安全开发体系建设时具有较高的参考价值。
安全开发管理能力
开展应用开发安全体系建设,首先要建立一个合适的安全开发组织架构。合理的安全组织架构是安全开发能够建设落地重要支撑,根据组织、人员和开发流程建立起合理的安全开发管理要求、安全开发环境、设定开发流程和安全控制点的无缝融合,做到全流程安全风险固化可视化,防止安全流程绕过。
安全开发需求能力
为减少应用安全问题带来的损失,以及线上安全问题整改带来的成本,需要将安全开发工作进行左移。在应用系统需求分析阶段,就应该对应用系统软件的安全需求进行全面梳理,建立通用的安全需求,然后根据应用系统不同的等级和业务特性差异建立基线要求和特定需求,根据岗位的差异设计不同方向的培训内容:如安全意识培训、安全技术培训、公司级安全要求宣贯等。
安全开发设计能力
在对应用系统做概要设计、详细设计时,为了避免产品设计带来的安全隐患,避免后续发现问题对功能实现流程甚至应用软件架构大刀阔斧改动带来高昂代价。在产品设计阶段,需要加入必要的安全设计活动:包括攻击面威胁分析、数据流分析、威胁建模、权限最小化、架构安全设计、功能安全设计、接口安全设计、逻辑安全设计、系统上线部署安全设计等,通过这些设计活动和开发流程的强结合减少应用安全隐患,提升应用系统线上安全能力。
安全开发编码能力
通过提供安全开发指引、制定安全编码规范、安全编译规范、提供公共安全组件对开发人员进行赋能,让其按照安全开发编码规范进行编码,并提供一套强有力的源代码安全检测系统,对源代码做滚动安全检查,从代码编写阶段把控代码安全质量,从而从源头减少或消除因编码错误而产生的安全漏洞,减少后续修复的成本。
安全开发测试能力
在软件开发生命周期中,不同阶段修复安全漏洞的成本差距非常大,研发阶段与运营阶段修复成本和风险差异巨大,所以在应用系统上线之前就修复安全漏洞效率高、风险低。➢结合企业的实际情况可以采取静态测试、动态测试、交互测试、模糊测试、人工检测等方式发现问题、修复问题;➢针对不同的业务应用建立安全测试用例、误报清理指引、质量红线质量门,原则上各项均合格达标才能发布上线;➢对于在测试中发现的和SRC通报的漏洞应建设响应流程,通过可视化漏洞平台对漏洞进行统一管理、统一评估、统一验证。
安全开发成熟度评估能力
软件安全开发成熟度评估是一种对比性的模型,帮助企业自身在安全开发在组织规划、技术能力、建设实施等方面衡量软件开发安全能力。通过成熟度评估,可以达到以下目标:➢评估企业在应用系统安全开发能力上的现状和水平,分析企业安全开发能力和业界平均水平及最高水平的差距。➢根据企业的信息化和网络安全的目标,综合考虑资源情况和系统开发成熟度,规划合理的、可以实现的目标方向、未来的演进路线便于形成应用安全开发战略、阶段性目标和每年的行动方案。
欢迎业内人士加入【腾讯应用开发安全技术交流群】,共同探讨应用安全开发能力和技术实践。
扫描二维码进群