• 软件开发安全流程 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

     

    Posted by Tony @ 9:29 pm

  • Leave a Reply

    Your email address will not be published.