软件开发安全流程 SDL (Secure Development LifeCycle)

软件开发安全流程 SDL (Secure Development LifeCycle)

Microsoft Security Development Lifecycle (SDL)

这篇文章主要介绍软件开发流程中必要的安全技术与工具

要让该流程能够有所落实, 还是必须回归安全技术

單單依照流程执行还是不够的, 到底这流程中有执行上有哪些问题与技术要考量?

安全培训

与其说是培训不如说这部分更多的是沟通的过程, 安全的培训内容包含哪些? 一般来说分为下列几大部分

 

公司整体安全政策

例如资讯安全, 安全流程规范, 数位资产防护, USB/行动电脑使用规范等

这样的培训通常会在新员工入职举办, 或是定期公司以宣传的方式进行,

网络安全从业人员对于网络安全业务的处理, 会有更其他网络安全从业要求的培训,

除了一般常见的软件安全技术, 例如: 安全编码 or 安全需求等.

还包含法规与行业合规, 举例来说:

  • 中国有 《网络安全法》《中华人民共和国计算机信息系统安全保护条例(2011修订)》《通信网络安全防护管理办法》《国家安全法(2015)》
  • 每个国家对于密码与进出口都有贸易合规的相关规定
  • 个人隐私保护规范, 每个国家对于个人隐私数据的获得, 储存与处理也有特别法律的规律
  • 行业安全认证

这些与 SDL 软件开发有什么关系呢? 主要在于必须要识别出关键的安全需求风险

哪些软件的设计会导致安全合规的障碍或是缺失必须要识别出, 提炼出相关软件的安全需求, 安全设计, checkList

Image result for AWS security certifications

安全架构设计

首先要区分的是软件的安全与安全的软件有所不同.

软件的安全指的是透过 SDL (Secure Development Lifecyle)保障软件的安全

安全的软件, 例如防毒软件

这边更多指的是软件的安全, 当然防毒软件的本身也需要安全的设计,

什么是一个好的安全架构设计 , 有许多的模型与架构, 一般来说ICU. X805提供一个整体性的思考

尽管该模型超过 10年, 但是整体的安全设计原则还是没有改变

改变的是许多不同的应用场景, 例如云化场景下的场景, 例如微服务架构下的场景, 例如开放环境下认证的场景等

Related image

安全设计

安全设计的培训通常包含整体性攻击与威胁防护的安全设计方案,

笔者很推荐这本书 https://msdn.microsoft.com/en-us/library/ff648647.aspx

Ff648647.f04thcm01(en-us,PandP.10).gif

另外OWASP ESAPI提供一个设计与实作整体的思考, 非常值得参考

即使不使用 ESAPI 实作,  整体的安全设计也应该包含这些模组

Related image

威胁分析

在设计阶段时会进行威胁分析的讨论, 针对每个模组进行 STRIDE 的威胁与防护的分析

https://www.owasp.org/index.php/Application_Threat_Modeling#STRIDE

https://www.owasp.org/index.php/Application_Security_Architecture_Cheat_Sheet

随著时间的累积, 会累积一定的资料库

进行这样的分析必须避免流于形式, 为了符合流程而只是做拷贝复制类似模组的威胁分析

另外, 必须厘清现有的削减措施与建议消减措施以便落地于产品开发中

这是一个安全工程师, 开发工程师, 安全与业务的双向沟通过程

如何在业务与安全中取得一个平衡是这沟通过程中最重要的部分

相关威胁分析工具与材料可参考:

威胁分析 https://www.microsoft.com/en-us/sdl/adopt/threatmodeling.aspx

威胁分析 https://www.owasp.org/index.php/Application_Threat_Modeling#STRIDE

 

安全编码

安全编码培训常见的有 C/C++, PHP, Java, Python, 编译安全, 安全编码扫描工具使用, 加密算法使用等

业界比较值得参考的安全编码规范有

CWE 常见的编码与软件错误

Oracle Java 安全编码指南

Secure Coding

OWASP

另外笔者也建议 FindBugs 工具所提供的编码错误指南

编码扫描工具

补充说明

 

安全测试

安全测试方法与工具,

笔者推荐 OWASP Testing Guide https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents

测试工具的部分知名的 Kali Linux 内建许多安全测试工具

由于多半的服务为 Web, 也可以考虑使用 Samurai , 跟Kali Linux 类似, 但是著重于 Web 相关的测试工具

http://www.samurai-wtf.org/

Image result for web samurai

 

网络法规 & 个人隐私保护

由于欧洲 GDPR 个人隐私资料保护法的实施, 让个人隐私数据保护成为各互联网企业的显学

在中国有<网络安全法>, 法律跟网络软件安全有什么关系呢? 笔者列举下列几点:

  • 日志保存必须6个月: 日志保存就必须注意到备份与完整性保护等机制
  • 数据对外输出: 如果有数据必须传输至其他国家就必须经过过滤与处理
  • 个人隐私收集与处理: 如果服务在处理过程中有收集用户数据必须告知
  • 漏洞响应: 漏洞的处理与响应必须符合规定与通报 《中国互联网协会漏洞信息披露和处置自律公约》

中国漏洞权威发布的机构

1.中国国家信息安全漏洞库:http://www.cnnvd.org.cn

2.国家互联网应急中心:http://www.cert.org.cn

参考: http://blog.nsfocus.net/network-security-law-points/#i-2

另外《电子商务法》与《个人信息保护法》也正在立法中, 这些法案将对于中国互联网比较大的影响

安全需求分析

安全需求来源可以分为下列几个层面:

  • 客户
  • 法规
  • 行业 OWASP, NIST, CSA
  • 安全认证
  • 业务场景衍生

另外笔者推荐参考 OWASP ASVS, 该专项对于安全整体需求分为19类

Image result for OWASP ASVS

 

 

 

参考

SDL 指导书下载参考: https://www.microsoft.com/en-us/download/details.aspx?id=12379

https://www.microsoft.com/en-us/sdl/default.aspx

 

Leave a Reply

Your email address will not be published. Required fields are marked *