行业资讯

美国汽车租赁公司赫兹外包开发的安全风险与应对

2022-09-14 09:30:37

关于作者

腾讯高级工程师林伟豪,专注于企业SDL和SecDevOps建设。目前从事安全风险评估和代码审计,曾为国内大型电信运营商和顶级游戏公司从事运维和安全体系建设。

有一篇文章叫《史上最可怜的外包!花了2亿花了2年,网站还没交付》,是关于世界顶级咨询公司埃森哲开发新网站的外包项目而美国汽车租赁公司Hertz的手机应用程序,后者无奈之下诉诸法庭U3D开发外包,让这个惊世骇俗的瓜暴露在世人面前。我们注意到该项目的代码存在严重的安全漏洞,影响范围广泛,难以使用。

说到外包开发项目的安全问题,相信接触过外包开发者开发项目的同学都比较熟悉。外包开发项目中不仅存在很多安全漏洞,还存在未授权访问、SQL注入、文件上传、代码注入等问题。和其他高风险漏洞。

针对这一问题,本文将谈谈外包开发的意义、外包开发中的安全风险及对策。

一、外包发展的意义

外包开发是IT服务外包的一个子范畴,其本质是基于企业与IT外包服务商之间的委托代理关系。前者提出开发要求和系统设计后,后者提供应用或系统开发服务。

首先,随着企业对核心竞争力的重视,越来越多的企业将IT服务外包作为一种新的长期战略成本管理工具,消除不属于核心业务的分散分支。企业需要重新定位自己,以截断价值链的较短部分并缩小经营范围。

在此基础上,需要重新配置企业的各种资源,将资源集中在最能体现企业优势的领域,从而更好地构建竞争优势,获得可持续发展的能力。发展意义重大,可以实现“成本控制”和“管理效益”的有效平衡。

参考链接:/ARticles/Y3Ebmu

其次,对于一些非核心系统或应用,企业自行开发的成本太高;或者对于一些需要尖端技术的产品,企业本身并不具备成熟的开发能力。因此,选择外包开发是平衡成本和收益的最佳选择。

再者,随着移动互联网的蓬勃发展和全民互联网创业的趋势,对于那些不具备自我发展能力的创业者来说,从零开始培养发展能力将需要过多的投入。在投资方面,不一定比专业外包好,所以他们选择外包开发。

二、外包开发安全风险

国外报告显示,56%的企业数据泄露源自第三方供应商,42%的企业数据泄露源于对第三方供应商的攻击。不久前,Facebook 再次成为第三方数据泄露事件的焦点。

因此,为了保护企业数据安全,企业不仅要防御内外部安全威胁,还要进行第三方风险管理(TPCRM)。这里提到的TPCRM对应我们今天讨论的外包开发安全风险管理。

1、外包开发模式分类

总之,根据代码部署场景和协作模式,目前的外包开发模式可以分为现场、远程和完全独立三类。他们在开发过程中面临的安全风险或甲方的安全能力覆盖范围存在较大差异。

1)住宅

外包公司安排员工以劳务派遣或临时办公方式到甲方办公室提供服务,并入驻甲方产品或开发团队。

在这种模式下,甲方的风险控制程度最高,因为此时必须遵循甲方的办公、开发、测试、发布流程规范。整个 CI/CD 流程和环境都由甲方控制,也在安全能力覆盖范围之内,相对而言,这种情况下安全风险最小。

2)远程

外包公司的员工在办公环境中完成代码开发和测试仿真系统,然后通过公共代码库或其他在线文件系统或存储系统共享代码。甲方完成代码部署和系统运维,或合并到其主代码分支,然后甲方完成代码部署和系统运维。

在这种模式下U3D开发外包,甲方的风险控制程度较高,整个CI/CD流程和环境都由甲方控制,也被甲方的安全能力所覆盖。

但是,无论合同中如何约定代码所有权,代码都会被外包公司联系,而且代码共享路径往往需要开放到互联网上,这也给代码泄露留下了漏洞。

相对而言,如果外包公司有成熟的安全管控流程和代码共享路径进行有效的认证和访问控制,那么这种情况下的安全风险就很小。

3)完全独立

外包公司独立完成代码开发、测试和发布,整个CI/CD流程由其控制。虽然线上运营环境不一定由外包公司控制,甲方可能只配合域名指向或品牌资源使用申请,但可以看出甲方的控制程度很弱超过这个风险。

这种合作模式的安全风险往往极高,因为甲方的安全能力基本没有被覆盖,其成熟的发布过程不一定能得到控制。

2、风险清单

1)敏感信息泄露

最常见的就是没有关闭调试模式,源码包放在web根目录下,版本控制文件.git/.svn等文件放在根目录下,或者外包开发者上传源代码到第三方仓库泄露,或外包商的个人电脑中毒或被入侵,导致甲方源代码和数据泄露。

2)高危漏洞和高概率

外包开发通常使用开源开发框架。此类框架经常存在漏洞,容易被批量利用。此外,还经常出现服务器端任意文件下载、SQL注入、客户端组件暴露、敏感信息泄露等高危漏洞。漏洞等,可以拉取数据库信息或侵入服务器。

另外,开发者的代码结构和质量一般,更容易产生漏洞,或者对用户可控输入的限制有疏漏。

3)敏感信息盗窃

曾有银行外包开发商非法收集用户信息或甲方业务数据的案例。

4)被埋没的后门

外包开发者故意留下逻辑后门等。

5) 广泛的漏洞分布

由于外包团队的代码复用,一旦外包开发的系统出现漏洞,很有可能在其开发的其他系统中也能找到相同或相似的漏洞。此外,一旦外包开发者被黑,其客户端源代码和数据也会被泄露。

3、原因分析

三、外包开发安全风险管理

下面从组织架构、流程控制和技术赋能三个方面就外包开发的安全风险管理进行简要的探讨,其中大部分已经或多或少地在国内大中型IT企业实施。

1、组织层面

确定外包管理目标,明确外包总体原则,建立企业级信息技术外包安全防控框架,健全外包管理组织体系和制度体系。这更适合大型金融、通讯、制造、互联网等行业。

由于外包项目和外包开发人员较多,因此需要注意公司的组织结构。例如,规划建设独立的外包管理团队,使自上而下的外包项目管理流程的制定获得组织基础。

2、进程级别

1)合约绑定

与外包开发商的合同中是否有安全要求?这些外包开发人员是否需要标准来遵循安全的开发生命周期?他们是否接受过系统开发生命周期以及如何安全编码的培训?外包开发人员是否应对其代码中的错误和泄露敏感信息负责?一旦发现漏洞被利用,是否需要紧急响应?

如果合同中没有规定这些要求,则应将这些条款添加到未来的合同中,并且应修改现有合同以涵盖这些条款。

2)按外包类型分类管理

针对不同类型的外包,建立包括安全资质、安全管理和安全运维能力考核在内的全生命周期管理机制,建立外包安全管理效果衡量机制。主要考虑如下:

3)建立日常活动规范

服务变更控制;服务人员管理;安全事件处理;业务连续性管理。

4)统一招标流程

通过更加透明和统一的准入流程,更加注重安全和质量的开发者获得了公平的机会。

5)确认第三方可以访问的数据/系统;确认公司与第三方共享的信息和资产

该项目是非关键信息系统的编码和测试外包。所有生产数据脱敏后可用于开发和测试环境,外包商无法访问敏感信息。避免IT服务人员接触组织的核心系统信息,降低IT服务外包给IT系统敏感部分带来的安全风险。

3、技术水平

1)设置持续的合作伙伴网络安全监控基线

合作生命周期内的持续监督和验证,例如加强对业务异常的监控和分析。

2)加强外包开发人员的安全意识和技能培训

比如外包商必须参加安全培训和考试,达到标准后才能进行开发。代码漏洞率等作为项目完成评价的要素。有关安全编码规范,请参阅 OWASP 安全编码指南。

参考链接:/owasp-project/secure-coding

3)改进和细化安全测试方法和测试用例

生产前进行严格的安全测试,上线后进行定期测试。更具体的做法包括:

①上网前安全自查:

自查清单。

②上线前漏洞扫描和安全审计:

这里需要区分环境。如果代码的测试和运行环境在甲方,您可以访问甲方的漏洞扫描系统进行自动扫描。

否则,如果开发者有条件U3D开发外包,可以自行扫描漏洞,也可以通过授权获得甲方的安全能力覆盖。

同时提供测试环境和源码,以及软件设计文档和使用指南,对甲方安全团队进行代码审计,检查是否存在安全漏洞或恶意代码等后门和隐蔽渠道。

当然,安全审计需要考虑人工成本。如果甲方能够提供自动化审计的方式,则可以覆盖每一个变更发布,否则,主要版本更新将作为控制力。

③ 对外包开发的代码进行安全审计,尤其是登录、转账等重要业务场景需要审计。

4)代码发布与系统在线流程控制

按服务器环境是否甲方可控分类。如果可控unity3d建模外包,则业务变更必须由甲方操作U3D开发外包,包括:测试环境测试,发布上线,否则必须有审批机制,外包或合作建议在甲方安全能力覆盖范围内部署已开发的Web应用。可以通过授权方式申请保险。

5)权限控制(系统管理、数据访问、环境变化)

不开启系统管理权限;不开放变更权限,如必须开放变更权限,实际变更时必须参照甲方发布的变更受理标准进行验收并记录。

6)审计机制

保留应用系统或主机访问日志和操作记录,并通过自动化方式或定期审查进行审计。

>>>>

参考

/AR磁条/euYBRb

/一个/

关于我们

dbaplus 社区是围绕数据库、大数据和 AIOps 的企业级专业社区。资深大咖,技术干货,每日精品原创文章推送,每周在线技术分享,每月线下技术沙龙,每季Gdevops & DAMS行业大会。

标签: U3D开发外包