软件开发安全流程 SDL (Secure Development LifeCycle)
这篇文章主要介绍软件开发流程中必要的安全技术与工具
要让该流程能够有所落实, 还是必须回归安全技术
單單依照流程执行还是不够的, 到底这流程中有执行上有哪些问题与技术要考量?
安全培训
与其说是培训不如说这部分更多的是沟通的过程, 安全的培训内容包含哪些? 一般来说分为下列几大部分
公司整体安全政策
例如资讯安全, 安全流程规范, 数位资产防护, USB/行动电脑使用规范等
这样的培训通常会在新员工入职举办, 或是定期公司以宣传的方式进行,
网络安全从业人员对于网络安全业务的处理, 会有更其他网络安全从业要求的培训,
除了一般常见的软件安全技术, 例如: 安全编码 or 安全需求等.
还包含法规与行业合规, 举例来说:
- 中国有 《网络安全法》《中华人民共和国计算机信息系统安全保护条例(2011修订)》《通信网络安全防护管理办法》《国家安全法(2015)》
- 每个国家对于密码与进出口都有贸易合规的相关规定
- 个人隐私保护规范, 每个国家对于个人隐私数据的获得, 储存与处理也有特别法律的规律
- 行业安全认证
这些与 SDL 软件开发有什么关系呢? 主要在于必须要识别出关键的安全需求风险
哪些软件的设计会导致安全合规的障碍或是缺失必须要识别出, 提炼出相关软件的安全需求, 安全设计, checkList
安全架构设计
首先要区分的是软件的安全与安全的软件有所不同.
软件的安全指的是透过 SDL (Secure Development Lifecyle)保障软件的安全
安全的软件, 例如防毒软件
这边更多指的是软件的安全, 当然防毒软件的本身也需要安全的设计,
什么是一个好的安全架构设计 , 有许多的模型与架构, 一般来说ICU. X805提供一个整体性的思考
尽管该模型超过 10年, 但是整体的安全设计原则还是没有改变
改变的是许多不同的应用场景, 例如云化场景下的场景, 例如微服务架构下的场景, 例如开放环境下认证的场景等
安全设计
安全设计的培训通常包含整体性攻击与威胁防护的安全设计方案,
笔者很推荐这本书 https://msdn.microsoft.com/en-us/library/ff648647.aspx
另外OWASP ESAPI提供一个设计与实作整体的思考, 非常值得参考
即使不使用 ESAPI 实作, 整体的安全设计也应该包含这些模组
威胁分析
在设计阶段时会进行威胁分析的讨论, 针对每个模组进行 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
- https://www.owasp.org/index.php/Secure_Coding_Cheat_Sheet
- https://www.owasp.org/index.php/OWASP_Secure_Coding_Practices_-_Quick_Reference_Guide
另外笔者也建议 FindBugs 工具所提供的编码错误指南
编码扫描工具
补充说明
安全测试
安全测试方法与工具,
笔者推荐 OWASP Testing Guide https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents
测试工具的部分知名的 Kali Linux 内建许多安全测试工具
由于多半的服务为 Web, 也可以考虑使用 Samurai , 跟Kali Linux 类似, 但是著重于 Web 相关的测试工具
网络法规 & 个人隐私保护
由于欧洲 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类
参考
SDL 指导书下载参考: https://www.microsoft.com/en-us/download/details.aspx?id=12379
https://www.microsoft.com/en-us/sdl/default.aspx