您当前的位置:首页 > 电脑百科 > 电脑知识

应用系统外包开发中的源代码安全风险管控措施研究

时间:2023-11-14 13:59:39  来源:  作者:金台资讯

【摘 要】本文结合对应用系统设计、开发、测试、测评等建设过程的分析,总结了外包应用系统开发中存在的安全保密风险,并根据应用系统安全建设和测评经验,结合安全开发生命周期等安全开发管理理念,研究了应用系统外包开发中源代码安全风险管控技术和策略,以期从源头减少应用系统自身安全漏洞和风险,提升信息系统安全防御水平。

【关键词】应用系统 外包开发 安全保密风险

1 引言

应用系统是信息系统中信息分发、传递、共享的主要工具,同时是业务管理的数字化基本设施,在信息网络中处于信息传递的核心。随着企业数字化转型的不断推进,各单位为满足各种业务需要建设了各类业务应用系统,如财务系统、人力管理系统、项目管理系统等。但由于应用系统开发建设具有专业性、复杂性,一般需要专业的软件开发团队进行建设,而大部分单位不具备自行开发应用系统的能力,应用系统外包开发成为主流的建设方式。随着网络攻防技术的发展,越来越多的安全漏洞在各类应用系统中被发现,根据Forrester调研,仅Web类安全漏洞就占2021年发现安全漏洞的39%,由此可见应用系统已成为网络攻防双方的主战场之一。因此,如何管控外包开发应用系统源代码安全漏洞,从根本上有效减少安全漏洞,保障应用系统安全成为各单位信息化和网络安全管理部门面临的重要议题。

2 外包开发中的源代码安全风险分析

在对外包应用系统进行测评的过程中,存在以下风险。

(1)现行相关标准对安全要求较高,但对开发厂商的安全开发能力、开发质量缺少直观的考核和选择指标,导致部分开发厂商不注重安全开发能力的建设和开发质量的提升,一些应用系统的开发过程管理混乱,缺少源代码安全的管理与技术措施,甚至在互联网中开展代码管理,极易引入安全风险,部分应用系统安全质量没有保障。

(2)在编程实现阶段,随着开发技术的迅猛发展,部分中小厂商或建设使用单位为追求新技术应用,开发中大量采用未经安全检测的开源框架、开源组件等第三方代码进行快速迭代开发,对使用了哪些开源组件或开源组件的哪个版本并不了解。建设使用单位对使用开源组件、开源代码的情况缺少要求和限制,给应用系统带来不可控的安全风险。

(3)在验收和上线运行阶段,建设使用单位主要对应用系统业务功能进行测试验收,缺少对源代码安全漏洞、业务逻辑漏洞等的安全性测试,缺少开发人员参与的安全加固,往往不知道是否存在安全漏洞,对已发现的安全漏洞不知如何修复,导致应用系统“带病上线”“带病运行”。

3 对外包开发的安全风险管控措施实践

为保障应用系统源代码安全质量,微软提出从安全管理角度指导应用系统开发过程的安全开发生命周期(Security Development Lifecycle,SDL)理念,经过世界主流厂商多年实践和不断改进,发展成为安全—软件开发生命周期(Secure Software Development Lifecycle,S-SDLC)等方法论,其理念是将安全与软件开发全过程融合,通过在软件开发生命周期中每个阶段执行必要的安全实践,使安全风险最小化、安全威胁最少化。SDL的实施在一定程度上降低了发布运行后安全漏洞的数量,被各大软件厂商广泛采用。

但是,SDL、开发安全运维一体化(DevSecOps)等安全开发理念都主要是针对开发厂商的实施或实践方法,对应用系统建设使用的甲方单位,特别是在外包开发的场景下,甲方单位也迫切需要介入整个安全开发过程中。本文利用SDL安全开发理念,从建设使用单位的角度,针对外包开发全流程进行代码安全管控策略设计和技术保障措施研究,通过参与关键流程活动,协助开发出既符合安全要求又尽可能减少网络安全漏洞的应用系统。本文设计的建设使用单位针对外包开发过程中的安全实践措施和策略架构如图1所示。

应用系统外包开发中的源代码安全风险管控措施研究

图1 外包开发过程中的安全实践措施和策略架构

3.1 加强开发厂商的选择与安全培训

外包应用系统开发时,在厂商具有相应资质的基础上,建议应用系统开发管理的业务部门优先选择软件开发质量保障能力等级较高的企业,利用其更为规范的过程管理、版本管控、漏洞管理等制度和技术措施提高应用系统开发质量。

建设使用单位组织或参与开发厂商统一举行的安全防范意识培训,对系统设计、开发、部署、售后、运维和业务使用等各类人员进行必要的安全培训或再培训,宣传法律法规和标准知识、网络安全防范技能,建立常见安全漏洞的源代码防范措施、范例、框架,帮助相关人员特别是设计、开发人员提升安全开发能力。

3.2 开展安全保密风险分析

建设使用单位的业务使用人员、安全保密人员介入业务安全需求分析,和开发人员结合安全标准规范,从安全标准和最佳实践2个方面分析得出业务功能所需安全防护要求。安全需求分析工作的主要目的是为应用程序设计在计划运行环境中的运行确定最低安全要求。同时,在需求分析文档中包括安全保密协议相关内容:加强源代码安全管理,防止因源代码泄露、安全防范意识不足可能造成的安全风险,预防安全漏洞、后门;禁止应用系统开发相关文档、源代码等传输到互联网;禁止预置和保留隐藏的管理员账号、开发者账号、测试账号;禁止预置远程管理后门、远程升级后门、广告推广、漏洞和非授权的数据收集、传输等恶意功能。

3.3 强化安全防护功能设计与编码

建设使用单位的安全保密人员介入系统的安全设计阶段,与开发人员一起,根据业务安全需求分析,制定安全控制和防护措施,减小攻击面,防范常见安全漏洞、安全攻击方式,抵御或降低安全威胁。安全设计实践包括特权分离、数据验证、认证管理、会话管理、授权管理、日志审计、异常处理、配置管理、数据保护等安全功能设计,也包括对结构化查询语言(SQL)注入、反序列化、权限提升、文件上传、任意文件下载等安全漏洞的防范功能设计。编码实现时,需要考虑将要使用的开源代码、组件、模块、库和框架的安全性,禁止使用存在安全风险的软件成分。

存量应用系统新增功能、系统升级也需要编制新增功能部分的安全设计方案,对新增功能的安全威胁、安全功能设计和对原应用系统安全功能的影响进行深入分析。

3.4 完善代码安全测试与验收

建设使用单位在对应用系统业务功能进行验收测试时,先由业务使用团队和安全保密团队开展安全功能合规性测试,根据业务功能、安全要求设计安全测试用例进行测试,测试用例需要涵盖安全需求、安全设计中各项功能。

在安全功能测试基础上,建设使用单位安全团队应开展源代码安全性测试,从源头把控应用系统安全风险。源代码安全性测试一般采用自动化工具来降低人工检测的时间消耗和成本投入,提高检测效率,常见工具包括静态安全测试(SAST)、动态安全测试(DAST)、交互式安全测试(IAST)、模糊测试(FUZZ)和软件成分分析(SCA)几类技术。根据经验,建议配备交互式安全测试IAST工具和软件成分分析SCA工具。IAST技术融合了SAST技术和DAST技术的特征,通过在应用系统中部署测试插桩,分析应用系统运行时的源代码,检查业务数据传播路径,分析数据传播过程中的各功能代码的处理措施,根据已知安全漏洞发生的数据处理模式、发生场景分析可能存在的安全风险,在完成功能测试的同时自动开展并完成源代码层的安全性分析测试。相较于SAST、DAST和FUZZ,IAST测试工具具有对测试人员安全技能要求低、测试结果准确性高、测试过程速度快的优势,特别适合建设使用单位业务使用团队和安全团队等非专业开发人员用于开展源代码安全性测试。

为应对开源组件、开源代码引入的安全风险,SCA工具扫描分析应用系统的源代码和使用的模块、库、框架、程序包等代码文件,提取代码指令、代码结构、控制流图、函数调用关系等特征,再对特征进行识别和分析,获得各个部分的关系,然后根据已知的安全漏洞特征库、威胁情报库,识别可能潜藏的、存在的安全风险,避免开源代码、库、模块的使用引入安全漏洞。

3.5 开展安全上线

应用系统上线试运行时,安全保密团队应会同开发团队开展安全配置加固,先梳理业务应用系统使用的运行环境、语言环境、开源组件等,并建立系统成分清单,清单包括但不限于操作系统、数据库、运行中间件、运行容器及编排管理与调度组件、大数据组件、人工智能组件、开发框架、消息系统组件、数据库连接和管理组件、语言运行库、外部函数库/组件、开源组件等代码运行组件清单,详细记录各项名称、版本号,便于开展零日(0Day)漏洞预警排查和漏洞检测与应急响应。

应用系统完成部署后,建设单位定期利用漏洞扫描工具进行安全漏洞检测,或开展人工渗透测试发掘潜在漏洞,对发现的源代码缺陷导致的安全漏洞通知开发人员核实整改漏洞。加强应用系统升级管理,在大版本、小版本升级和应用系统间集成、漏洞修复等工作后,按照以上安全需求分析、安全设计与编码、安全测试的过程对变更部分源代码进行安全分析和测试,必要时对应用系统整体重新进行安全测试。

4 结语

应用系统在供应链、安全设计、代码编程实现、上线运行等全生命周期中面临各种各样的风险,只有加强应用系统源代码安全管控,才能从源头解决应用系统自身面临的安全风险。本文从建设使用单位的角度,研究应用系统外包开发建设中的源代码安全防护技术,针对安全需求分析、安全设计与实现、安全测试、升级管控等各阶段设计源代码管控策略和措施,有助于减少应用系统建设过程中源代码引入的安全风险,提升应用系统的安全防护水平。同时,该实践经验对应用系统自行开发、开源产品自行部署、商业产品购置实施等情形具有一定借鉴意义。

(原载于《保密科学技术》杂志2023年2月刊)



Tags:源代码安全   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
应用系统外包开发中的源代码安全风险管控措施研究
【摘 要】本文结合对应用系统设计、开发、测试、测评等建设过程的分析,总结了外包应用系统开发中存在的安全保密风险,并根据应用系统安全建设和测评经验,结合安全开发生命周期...【详细内容】
2023-11-14  Search: 源代码安全  点击:(81)  评论:(0)  加入收藏
网站源代码安全审计之wordpress漏洞
User Post Gallery 是WordPress的一个第三方插件,该插件被许多网站运营者使用,由于代码存在远程命令执行漏洞,被许多黑客利用进行攻击网站,导致许多安装wordpress User Post Gal...【详细内容】
2023-02-01  Search: 源代码安全  点击:(269)  评论:(0)  加入收藏
▌简易百科推荐
云计算和边缘计算
云计算和边缘计算是两种不同的计算模型,它们各有特点,适用于不同的场景和需求。云计算是一种基于互联网的计算模型,它将计算资源、存储资源和应用服务集中在云端,用户可以通过网...【详细内容】
2024-03-01    简易百科  Tags:云计算   点击:(28)  评论:(0)  加入收藏
云计算与边缘计算:有何不同?
公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序...【详细内容】
2024-02-28  通信产品推荐官    Tags:云计算   点击:(21)  评论:(0)  加入收藏
量子计算机是什么?跟现在的计算机相比优缺点是什么?
量子计算机是什么?跟现在的计算机相比优缺点是什么? 随着科技的不断发展,计算机技术也取得了巨大的进步。然而,随着摩尔定律的趋近于极限,传统的计算机技术面临着许多挑战。这时...【详细内容】
2024-02-23    简易百科  Tags:量子计算机   点击:(36)  评论:(0)  加入收藏
量子计算机:未来电脑的革命性技术
在科技的广袤天空中,量子计算机如一颗璀璨的新星,以其独特的光芒预示着未来电脑的革命性变革。这项令人瞩目的技术不仅代表着计算机科学的最前沿,更承载着人类对于速度和效率的...【详细内容】
2024-02-23  小浩长得帅    Tags:量子计算机   点击:(40)  评论:(0)  加入收藏
为什么计算机需要十六进制?
今天简单聊聊十六进制。实际上计算机本身是不需要十六进制的,计算机只需要二进制,需要十六进制的是人。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对...【详细内容】
2024-02-22  码农的荒岛求生  微信公众号  Tags:计算机   点击:(47)  评论:(0)  加入收藏
多模态RAG应用:跨越文本与图片的智能交互
近年来,多模态RAG(Retrieval-AugmentedGeneration)应用的兴起引发了人们对人工智能技术发展方向的广泛关注。传统的RAG应用主要基于文本的输入和输出,而随着GPT4-V的发布,多模态R...【详细内容】
2024-01-29  况成放    Tags:多模态RAG   点击:(64)  评论:(0)  加入收藏
量子计算机真相揭秘,一篇文章颠覆你的认知
你看过《三体》吗?在刘慈欣笔下,三体人用一种叫“智子”的黑科技干扰了人类的实验,从而锁死了人类的技术。而在现实世界,一把无形的“锁”其实也悄然逼近了我们,它就是芯片。随着...【详细内容】
2024-01-23  天才简史  今日头条  Tags:量子计算机   点击:(25)  评论:(0)  加入收藏
生成对抗网络(GAN)在计算机视觉领域中的应用
生成对抗网络(GAN)是一种在计算机视觉领域中广泛应用的深度学习模型。它由一个生成器网络和一个判别器网络组成,通过对抗训练的方式实现图像的生成和判别。GAN在计算机视觉中的...【详细内容】
2024-01-15  数码小风向    Tags:生成对抗网络   点击:(71)  评论:(0)  加入收藏
如何免费生成logo?
Logo设计对于一个品牌来说非常重要,它是品牌的身份标识,可以帮助人们迅速识别和记住一个品牌。同时还可以帮助建立品牌认知度,传达出品牌的专业形象。无论是大公司还是刚起步的...【详细内容】
2024-01-05  阳仔问文    Tags:logo   点击:(85)  评论:(0)  加入收藏
自然语言处理中的句法分析方法研究与实现
自然语言处理(NLP)中的句法分析方法是NLP领域的重要研究内容之一,它旨在通过对句子结构的分析和理解,揭示句子中单词之间的语法关系,为后续的语义理解和信息提取提供基础支撑。本...【详细内容】
2024-01-04  毛晓峰    Tags:自然语言处理   点击:(55)  评论:(0)  加入收藏
站内最新
站内热门
站内头条