研发:安全的软件开发框架

随着软件研发经验的丰富,会逐渐将关注点从功能性需求转移到非功能性需求上。而安全又是软件生命周期的关键。特别是在云计算环境,涉及金融支付场景、区块链应用场景时。安全显得格外重要。

关于SDL

SDL security development lifecycle(安全开发生命周期),是微软提出的从安全角度指导软件开发过程的管理模式。SDL是一个安全保证的过程,起重点是软件开发,它在开发的所有阶段都引入了安全和隐私的原则。自2004年起,SDL一直都是微软在全公司实施的强制性策略。

SDL的步骤包括:

阶段1:培训

开发团队的所有成员都必须接受适当的安全培训,了解相关的安全知识,培训对象包括开发人员、测试人员、项目经理、产品经理等。

阶段2:安全要求

在项目确立之前,需要提前与项目经理或者产品owner进行沟通,确定安全的要求和需要做的事情。确认项目计划和里程碑,尽量避免因为安全问题而导致项目延期发布。

阶段3:质量门/bug栏

质量门和bug栏用于确定安全和隐私质量的最低可接受级别。

Bug栏是应用于整个开发项目的质量门,用于定义安全漏洞的严重性阈值。例如,应用程序在发布时不得包含具有“关键”或“重要”评级的已知漏洞。Bug栏一经设定,便绝不能放松。

阶段4:安全和隐私风险评估

安全风险评估(SRA)和隐私风险评估(PRA)是一个必需的过程,必须包括以下信息:

1、(安全)项目的哪些部分在发布前需要威胁模型?

2、(安全)项目的哪些部分在发布前需要进行安全设计评析?

3、(安全)项目的哪些部分需要并不食欲项目团队且双方认可的小组进行渗透测试?

4、(安全)是否存在安全顾问认为有必要增加的测试或分析要求已缓解安全风险?

5、(安全)模糊测试要求的具体范围是什么?

6、(安全)隐私影响评级如何?

阶段5:设计要求

在设计阶段应仔细考虑安全和隐私问题,在项目初期确定好安全需求,尽可能避免安全引起的需求变更。

阶段6:减小攻击面

减小攻击面与威胁建模紧密相关,不过它解决安全问题的角度稍有不同。减小攻击面通过减小攻击者利用潜在弱点或漏洞的机会来降低风险,减小攻击面包括:关闭或限制对系统服务的访问,应用“最小权限原则”,以及尽可能进行分层防御。

阶段7:威胁建模

为项目或产品面临的威胁建立模型,明确可能来自的攻击有哪些方面。

阶段8:使用指定的工具

开发团队使用的编辑器、链接器等相关工具,可能会涉及一些安全相关的环节,因此在使用工具的版本上,需要提前与安全团队进行沟通。

阶段9:弃用不安全函数

许多常用函数可能存在安全隐患,应当禁用不安全的函数和API,使用安全团队推荐的函数。

阶段10:静态分析

代码静态分析可以由相关工具辅助完成,其结果与人工分析相结合。

阶段11:动态程序分析

动态分析是静态分析的补充,用于测试环节验证程序的安全性。

阶段12:模糊测试(Fuzzing Test)

模糊测试是一种专门形式的动态分析,它通过故意向应用程序引入不良格式或随机数据诱发程序故障。模糊测试策略的制定,以应用程序的预期用途,以及应用程序的功能和设计规范为基础。安全顾问可能要求进行额外的模糊测试,或者扩大模糊测试的范围和增加持续时间。

阶段13:威胁模型和攻击面评析

项目经常会因为需求等因素导致最终的产出偏离原本设定的目标,因此在项目后期对威胁模型和攻击面进行评析是有必要的,能够及时发现问题并修正。

阶段14:事件响应计划

受SDL要求约束的每个软件在发布时都必须包含事件响应计划。即使在发布时不包含任何已知漏洞的产品,也可能在日后面临新出现的威胁。需要注意的是,如果产品中包含第三方的代码,也需要留下第三方的联系方式并加入事件响应计划,以便在发生问题时能够找到对应的人。

阶段15:最终安全评析

最终安全评析(FSR)是在发布之前仔细检查对软件执行的所有安全活动。通过FSR将得出以下三种不同不同结果。

1、 通过FSR。在FSR过程中确定所有安全和隐私问题都已得到修复或缓解。

2、 通过FSR但有异常。在FSR过程中确定所有安全和隐私问题都已得到修复或缓解,并且/或者所有异常都已得到圆满解决。无法解决的问题将记录下来,在下次发布时更正。

3、 需上报问题的FSR。如果团队未满足所有SDL要求,并且安全顾问和产品团队无法达成可接受的折中,则安全顾问不能批准项目,项目不能发布。团队必须在发布之前解决所有可解决的问题,或者上报高级管理层进行抉择。

阶段16:发布/存档

在通过FSR或者虽有问题但达成一致后,可以完成产品的发布。但发布的同时仍需对各种问题和文档进行存档,为紧急响应和产品升级提供帮助。 从以上的过程可以看出,微软的SDL的过程实施非常细致。微软这些年来也一直帮助公司的所有产品团队,以及合作伙伴实施SDL,效果相当显著。

相对于微软的SDL,OWASP推出了SAMM(Software Assurance Maturity Model),帮助开发者在软件工程的过程中实施安全

一、软件复杂度极具上升

二、软件复杂度带来安全的复杂度

三、到底如何构建安全的软件

四、瀑布型

五、迭代型

六、持续集成型

七、SSDF

参考:

https://blog.csdn.net/xinyi0622/article/details/73882559

http://www.owasp.org.cn/OWASP_Events/Developer_SecureSoftwareDevelopment_DamilareDFagbemi_AppSecEU2018.pdf

http://hotpu-meeting.b0.upaiyun.com/2014dtcc/post_pdf/liudan,liufeiran.pdf

原文发布于微信公众号 - 云计算与大数据(heidcloud)

原文发表时间:2018-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏飞雪无情的博客

Google Developers 中国网站发布

随着2016年的Google IO大会在北京召开,Google宣布了一系列对开发者有益的事情,最重要的莫过于Google Developers中国网站的发布,为...

1014
来自专栏ThoughtWorks

软件测试反模式——杯型蛋糕简介 | TW洞见

今日洞见 文章作者来自:ThoughtWorks-Fabio Pereira,译者:ThoughtWorks-张力文。 感谢ThoughtWorks校对小组:陈...

3798
来自专栏石瞳禅的互联网实验室

手游发行公司需要具备的软实力

“内行人看门道,外行人看热闹”,对于刚刚进入游戏这个领域和想进入该领域的人来说,游戏内的一些常识需要提前了解。

3851
来自专栏云端漫步

harbor源码分析之技术体系(一)

harbor作为一个中国人编写的项目,被CNCF组织接收,应该有着伟大的意义吧.简单的看了下harbor的源码,十分的庞大. 那么面对这个庞然大物,怎么办? 要...

2450
来自专栏腾讯云数据库(TencentDB)

腾讯智造,新一代云数据库CynosDB,“C”位出道!

CynosDB是腾讯云自研的新一代高性能高可用的企业级分布式云数据库。融合了传统数据库、云计算与新硬件的优势,100%兼容开源数据库,百万级QPS的高吞吐,不限...

4.6K10
来自专栏微信小开发

起底小程序数据分析,每一个指标都不应该被忽视

你可能做了一个小程序,也做了很多推广。 然后查看了后台的一些数据: 有本地也有外地; 有男粉丝也有女粉丝; 有青年才俊,也有中年大叔; 有iPhone也有安卓;...

6959
来自专栏嵌入式程序猿

freeRTOS-&OpenRTOS-&SafeRTOS

在很早之前我们就曾在公众号里给大家介绍过freeRTOS,并且还介绍过在NXP kenitis KV46上的移植,相信很多猿友应该还有印象,freeRTOS因其...

3476
来自专栏美团技术团队

DataMan:美团旅行数据质量监管平台实践

背景 数据,已经成为互联网企业非常依赖的新型重要资产。数据质量的好坏直接关系到信息的精准度,也影响到企业的生存和竞争力。Michael Hammer(《Reen...

87113
来自专栏张善友的专栏

OpenSource 的 Free是自由 非免费

在Csdn上看到一篇新闻开源软件新模式:免费软件不免费 ,文中一直在描述这样的概念“免费”,而没有说明Free这个词的真正含义。 开源(OpenSource...

2065
来自专栏情情说

写好一个项目不容易

曾几何时,我多少次吐槽自己接触的项目,数落它们的种种不是,项目文件结构混乱、代码层次不清晰、严重的代码冗余、巨型代码块、缺少注释和日志、散落在各处的静态配置项、...

45411

扫码关注云+社区

领取腾讯云代金券