您好, 访客   登录/注册

浅谈网络安全体系下的软件安全开发人才培养

来源:用户上传      作者:

  摘   要:软件安全开发是近年来我国网信行业积极实践的网络安全保障措施,旨在软件系统开发过程中降低安全漏洞的存在。然而,软件安全开发人才匮乏是当前实践面临的关键问题。文章依据行业有关软件安全开发人员岗位和技能的典型要求,介绍在当前网络安全体系下培养软件安全开发人才的关键思路和核心内容,最后说明在软件安全开发人才培养方面获得的初步成效。
  关键词:软件安全开发;软件安全开发生命周期;人才培养
  Abstract: In recent years, software secure development is actively practiced in China's network and information industry as a network security assurance method. It is aiming to reduce the existence of security vulnerabilities in the software development process. However, the shortage of secure software developer is the vital problem for practices. According to the typical requirements of software secure developers' job positions and skill requirements from the industry, this paper presents the key ideas and core contents of software secure development talent cultivation under the circumstances network security system, then, we describes the initially obtained results.
  Key words: software secure development; secure software development lifecycle; talent cultivation
  1 引言
  近年來,随着国家对网络安全的高度重视,软件开发过程中的安全保障正成为网信行业关注的热点。在2019年12月1日正式实施的《网络安全等级保护条例2.0》中,对软件“自行开发”和“外包开发”也提出了明确的安全要求。作为软件开发过程中安全保障的行业最佳实践流程,“软件安全开发生命周期(S-SDLC或SDL)”正逐渐被我国金融、能源、互联网等关键信息基础设施行业实践。通过S-SDLC,相关单位能够在软件系统开发过程中管控软件研发流程、减少软件安全漏洞、降低软件安全威胁,从而提升软件质量,并能够大幅地降低因软件系统漏洞被黑客利用而造成网络安全事件发生的可能性。
  为了做好S-SDLC的落地实践,相关单位往往需要从软件安全开发的制度要求、开发流程、工具配置和人员配备等多方面做好保障工作。然而,普遍现象是软件开发人员缺乏软件安全开发技能,网络安全人员不参与软件开发过程,大部分单位不具备专业的软件安全开发人员。
  目前,我国网络安全人才缺口数量巨大,据不完全统计,2020年我国需要各类网络空间安全人才约140万人[1]。职业培训已成为保障网络安全人才队伍能力的重要手段[2],而在高校教育方面,为满足市场用人的需求,网络安全人才培养正在从基础知识学习型向实用型[3]、实战型[4]转型。软件安全开发作为网络安全体系下的一个细分领域,是网络安全专业与软件工程专业的交叉,尚未成为专门的专业或课程在我国高校内普及。部分对软件安全逐渐重视的高校,主要通过培养软件漏洞挖掘、恶意代码分析人才作为软件安全人才[5],而不是培养能在软件开发过程中主动保障软件安全的软件安全开发人才。因此,我国网信行业对网络安全体系下的软件安全开发人才建设提出了新的要求,迫切需要培养软件安全开发人才,促进我国网络安全体系发展。
  本文结合国内网信行业对软件安全开发人才的实际需求,分析了当前软件安全开发人才需具备的主要专业知识和技能,并提出了软件安全开发人才培养的思路和核心内容。
  2 对软件安全开发的认知
  软件安全开发的思路是在软件开发生命周期各阶段采取必要的安全考虑和相应的安全措施,尽管不能完全杜绝所有的安全漏洞,也可以做到避免和减少大部分常见安全漏洞[6]。该思路有助于在各类信息技术产品研发过程中为网络安全保障起到关键作用。
  软件安全开发方法继承了系统安全工程的思想[7],以提高软件产品的本质安全为目标,通过在软件开发生命周期的各个阶段融合安全标准、安全流程、安全工具和具备能力的软件安全开发人员,防止因设计、开发、发布、升级或维护过程中的缺陷而产生不该有的软件漏洞或脆弱性,也可防止由不同软件之间相互集成而产生的软件供应链安全问题[8]。
  3 对软件安全开发人才的典型要求
  3.1 软件安全开发岗位行业需求
  根据近年网信行业对软件安全开发岗位的招聘需求,软件安全开发人才主要从事五个方向的工作。
  (1)SDL流程建设:主要负责推进企业SDL体系建设的规划与落地,并参与软件的安全开发保障工作。
  (2)安全架构设计:主要负责对软件建立威胁模型,从安全角度设计和评审软件架构。
  (3)软件代码审计:主要负责对软件源代码进行审计,识别软件程序代码中的安全缺陷。
  (4)软件安全测试:主要负责对软件进行黑盒、灰盒或其他技术方面的安全测试,检测软件存在的安全缺陷。   (5)人员培训:负责定期对公司员工进行软件安全开发方面的培训,包括:安全意识、安全编码等内容。
  3.2 对软件安全开发人才的综合要求
  结合软件安全开发岗位信息和行业中的实际情况,软件安全开发人才需要掌握或具备的意识和技能如图1所示。
  (1)开发技能指软件安全开发人员熟悉某种主流开发语言,了解相关的开发框架、构建工具、配置管理工具,并理解CI/CD、DevOps、DevSecOps理论和机制。
  (2)软件安全开发意识是指软件安全开发人员在软件开发活动中为保障软件安全所具备的思想意识。
  (3)软件安全开发技能指软件安全开发人员在软件开发活动中应掌握和应用的安全开发技能,包括避免代码安全风险的程序编码和代码审计技术、基于安全需求和安全架构的安全测试等。
  (4)软技能指软件安全开发人员具备良好的沟通表达能力、学习能力、团队协作精神,并具有项目管理经验。
  4 软件安全开发人才培养的核心内容
  4.1 人才培养的思路
  开发技能和软技能是软件安全开发人才培养的根基,通常可以在学历教育和工作实习过程中初步获得并逐步掌握。而作为软件安全开发人才培养的核心内容,软件安全开发意识和技能在大部分学历教育中缺失。因此,软件安全开发人才培养需要在实际工作、职业教育或学历教育辅助的学习过程中重点培养。
  4.2 软件安全开发意识培养
  软件安全开发意识培养的主要涉及五方面内容。
  (1)软件安全开发与网络安全之间的关系和影响,让软件开发人员明确认识到“因软件开发过程中错误开发行为而形成的各类软件缺陷或错误,是造成网络安全事件发生的重要前提条件之一”。
  (2)常见的软件安全风险[9]和软件安全错误[10],如注入、XSS、CSRF、不恰当的身份验证、使用硬编码凭据等,了解开发过程中造成这些风险和错误的原因和正确编码思路。
  (3)正确的软件安全设计方法[11,12],如使用安全框架和库、安全的数据库访问、验证所有输入、处理所有错误和异常等,避免在软件设计过程中的错误安全设计。
  (4)软件安全开发生命周期流程,对整个流程体系及其关键实践[7,13]的认识。
  (5)法律法规和标准规范,包括《中华人民共和国网络安全法》《网络安全等级保护2.0》《ISO 27001》等。特别是在《网络安全等级保护2.0》[14]中,第二至第四级的“安全建设管理”部分对自行软件开发和外包软件开发提出了明确安全要求。
  针对软件研发企业的安全开发意识培养,可将上述内容作为企业软件安全开发能力建设的重要组成部分,并结合企业的内部培训举措和网络安全文化建设(如企业内部的网安宣传周、软件安全开发大赛),提高开发人员的软件安全开发意识,促进开发人员在软件研发过程中保障软件安全。
  4.3 软件安全开发技能培养
  软件安全开发技能培养的主要涉及四方面内容。
  (1)安全架构设计技能。掌握威胁建模的方法,能通过威胁建模分析软件的安全威胁及對应的安全措施,作为后续安全实践的依据;同时,掌握行业主流软件成分分析工具的操作方法,能分析、定位软件架构中自带有安全缺陷的第三方组件或开源组件。
  (2)安全编码技能。理解主流开发语言的安全编码规范,并能在编码过程中遵循安全编码规范的要求。
  (3)代码审计技能。掌握行业主流代码审计自动化工具的操作方法,能将代码审计自动化工具的审计规则与安全编码规范进行匹配,在软件开发过程的编码、测试阶段实现对代码的白盒安全检测,并能基于检测结果开展结果分析与缺陷修复。
  (4)安全测试技能。掌握行业主流灰盒、黑盒或模糊安全测试自动化工具的操作方法,在软件开发过程的测试阶段识别软件的代码级或功能级安全风险和安全缺陷,并能基于检测结果开展结果分析与缺陷修复。
  通过让软件研发企业不同角色的开发人员具备相应的技能,确保开发人员在各自负责的开发任务中落实安全开发要求,并能与开发团队中的其他角色联动与配合,实现安全需求和安全设计的成果与要求贯穿于整个软件安全开发生命周期,并通过安全编码和安全测试进一步验证和落地。
  5 培养效果
  本文研究团队自2016年起开展软件安全开发课程的建设和授课工作,结合自身经验,以软件开发和网络安全从业人员和专业学生为对象,提出了“意识+技能”的软件安全开发课程体系。根据不同企业的需求和高校的特点,为国内金融、通讯、IT、地产等行业的多家企业和华南、华中、华西多所高校提供了不同级别的软件安全开发人才培养服务,累计授课超千人,为企业落地实践软件安全开发提供了间接参考。
  6 结束语
  软件安全开发人才培养是一个多理念、多技术、多角色相融合的系统性工程,培养的内容和方法也将随着软件开发、网络安全及相关技术与政策的发展而不断扩展和改变。目前,软件安全开发被普遍认为是网络安全体系下的细分领域,但是软件安全开发领域的人才培养较网络安全人才培养而言更加任重而道远。因此,需要我国主管部门、用人单位、高等院校和软件安全开发技术提供单位的积极推进和共同建设,不断普及、不断扩展、不断累积,逐步形成普及性的软件安全开发人才培养体系。
  参考文献
  [1] 李建华.李建华:网络空间安全人才培养发展战略思考[J].河南科技, 2016(11).
  [2] 位华,王星.网络空间安全人才职业培训的实践与探索[J].中国信息安全,2018(12):62-65.
  [3] 樊佳,李阳,杨学敏.建立网络信息安全实用型人才培养模式[J].信息安全研究,2018(12):1127-1129.
  [4] 张镇,贺新朋.实战型安全人才培养框架设计[J].信息安全研究, 2018(12):1119-1123.
  [5] 赵磊,彭国军,刘丹,王丽娜.网络攻防赛导向的软件安全课程创新性与实践性建设[J].计算机教育,2019(7):163-167.
  [6] 吴世忠,李斌,张晓菲,梁洪亮.软件安全开发[M].北京: 机械工业出版社,2016.
  [7] 宋明秋. 软件安全开发—属性驱动模式[M]. 北京: 电子工业出版社,2016.
  [8] 王颉,万振华,王厚奎.从软件安全开发生命周期实践的角度保障软件供应链安全[J].网络空间安全,2019(6): 19-24.
  [9] OWASP. OWASP Top 10 [EB/OL]. https://owasp.org/www-project-top-ten/.
  [10] SANS. CWE/SANS TOP 25 Most Dangerous Software Errors [EB/OL]. https://www.sans.org/top25-software-errors.
  [11] OWASP. OWASP ProActive Controls [EB/OL]. https://owasp.org/www-project-proactive-controls.
  [12] IEEE Center for Secure Design. Avoiding the Top 10 Software Security Design Flaws [EB/OL]. https://ieeecs-media.computer.org/media/technical-activities/CYBSI/docs/Top-10-Flaws.pdf
  [13] Microsoft. Microsoft Security Development Lifecycle [EB/OL]. https://www.microsoft.com/en-us/securityengineering/sdl/.
  [14] GBT 22239-2019 信息安全技术 网络安全等级保护基本要求[S].2019.
转载注明来源:https://www.xzbu.com/1/view-15222254.htm