首页 > 其他分享 >微软安全开发流程(Security Development Lifecycle, SDL)

微软安全开发流程(Security Development Lifecycle, SDL)

时间:2024-04-06 12:12:27浏览次数:21  
标签:Development 发布 安全 FSR 阶段 SDL Security 攻击面

1.SDL简介
Security Development Lifecycle(SDL)是微软2004年提出的从安全角度指导软件开发过程的管理模式。SDL是一个安全保证的过程,其重点是软件开发,在开发的
所有阶段都引入了安全和隐私的原则。SDL一直都是微软在全公司实施的强制性策略。
2.SDL步骤

SDL中的方法,试图从安全漏洞产生的根源上解决问题,通过对软件工程的控制,保证产品的安全性。美国国家标准与技术研究所(NIST)分析,如果是在项目发布后再执行漏洞修复计划,其修复成本相当于在设计阶段执行修复的30倍。
3.SDL步骤剖析

  • 阶段1:培训
    开发团队的所有成员都必须接受适当的安全培训,了解相关的安全知识,培训对象包括开发人员、测试人员、项目经理、产品经理等。
  • 阶段2:安全要求
    在项目确立之前,需要提前与项目经理或者产品Owner进行沟通,确定安全的要求和需要做的事情。确认项目计划和里程碑,尽量避免因为安全问题而导致项目延期发布。
  • 阶段3:质量门/bug栏
    质量门和bug栏用于确定安全和隐私质量的最低可接受级别。Bug栏是应用于整个开发项目的质量门,用于定义安全漏洞的严重性阈值。例如,应用程序在发布时不得包含具有“关键”或者“重要”评级的已知漏洞。Bug栏一经设定,便绝不能放松。
  • 阶段4:安全和隐私风险评估
    安全风险评估(SRA)和隐私风险评估(PRA)是一个必需的过程,必需包括以下的信息:
    a.(安全)项目的哪些部分在发布前需要威胁模型?
    b.(安全)项目的哪些部分在发布前需要进行安全设计分析?
    c.(安全)是否存在安全顾问认为有必要增加的测试或分析要求已缓解安全风险?
    d.(安全)模糊测试要求的具体范围是什么?
    e.(安全)隐私影响评级如何?
  • 阶段5:设计要求
    在设计阶段应仔细考虑安全和隐私问题,在项目初期确定好安全需求,尽可能避免安全引起的需求变更。
  • 阶段6:减小攻击面
    减小攻击面与威胁建模紧密相关,不过它解决安全问题的角度不同。减少攻击面通过减小攻击者利用潜在弱点或漏洞的机会来降低风险,减小攻击面包括:关闭或限制对系统服务的访问,应用“最小权限原则”,以及尽可能进行分层防御。
  • 阶段7:威胁建模
    为项目或产品面临的威胁建立模型,明确可能攻击有哪些方面。
  • 阶段8:使用指定的工具
    开发团队使用的编辑器、链接器等相关工具,可能会涉及一些安全相关的环节,因此在使用工具的版本上,需要提前与安全团队进行沟通。
  • 阶段9:弃用不安全函数
    许多常用函数可能存在安全隐患,应当禁用不安全的函数和API,使用安全团队推荐的函数。
  • 阶段10:静态分析
    代码静态分析可以由相关工具辅助完成,其结果与人工分析相结合。
  • 阶段11:动态程序分析
    动态分析是静态分析的补充,用于测试环节验证程序的安全性。
  • 阶段12:模糊测试(Fuzzing Test)
    模糊测试是一种专门形式的动态分析,它通过故意向应用程序引入不良格式或随机数据诱发程序故障。模糊测试策略的制定,以应用程序的预期用途,以及应用程序的功能和设计规范为基础。安全顾问可能要求进行额外的模糊测试,或者扩大模糊测试的范围和增加持续时间。
  • 阶段13:威胁建模和攻击面评估
    项目经常会因为需求等因素导致最终的产出偏离原本设定的目标,因此在项目后期对威胁建模和攻击面进行评估是有必要的,能够及时发现问题并修正。
  • 阶段14:事件响应计划
    受SDL要求约束的每个软件在发布时都必须包含事件响应的计划。即使在发布时不包含任何已知漏洞的产品,也可能在日后面临新的威胁。如果产品中包含第三方代码,也需要留下第三方的联系方式并加入事件响应计划,以便发生问题时能够找到对应的人。
  • 阶段15:最终安全评估
    最终安全评估(FSR)是在发布之前仔细检查对软件执行的所有安全活动。通过FSR将得出以下三种不同的结果。
    a.通过FSR。在FSR过程中确定所有安全和隐私问题都已得到修复或缓解
    b.通过FSR但有异常。在FSR过程中确定所有的安全和隐私问题都已得到修复或缓解,并且/或者所有异常都已得到圆满解决。无法解决的问题将记录下来,在下次发布时更新更正。
    c.需要上报问题的FSR。如果团队未满足所有SDL要求,并且安全顾问和产品团队无法达成可接受的折中,则安全顾问不能批准项目,项目不能发布。团队必须在发布之前解决所有可解决的问题,或者上报高级管理层进行抉择。
  • 阶段16:发布/存档
    在通过FSR或者虽有问题但达成一致后,可以完成产品的发布。但发布的同时仍需要对各种问题和文档进行存档,为紧急响应和产品升级提供帮助。从以上的过程可以看出,微软的SDL的过程实施非常细致。也在帮助公司所有产品团队及合作伙伴实施SDL,效果显著。
    相较于微软的SDL,OWASP推出可SAMM(Software Assurance Maturity Model),帮助开发者在软件工程的过程中实施安全。

    SAMM与SDL的主要区别在于,SDL适用于软件开发商,以贩售软件为主要业务,而SAMM更适用于自主开发软件的使用者,如银行或在线服务提供商。软件开发商的软件工程往往较为成熟,有着严格的质量控制,而自主开发软件的企业组织,则更强调高效,因此在软件工程的做法上也存在差异。
    4.SDL实战经验准则
    准则一:与项目经理进行充分沟通,排除足够的时间
    准则二:规范公司的立项流程,确保所有项目都能通知到安全团队,避免遗漏
    准则三:树立安全部门的权威,项目必须由安全部门审核完成后才能发布
    准则四:将技术方案写入开发、测试的工作手册中
    准则五:给工程师培训安全方案
    准则六:记录所有的安全bug,激励程序员编写安全代码。

标签:Development,发布,安全,FSR,阶段,SDL,Security,攻击面
From: https://www.cnblogs.com/bonne-chance/p/18117300

相关文章

  • CF1037H Security
    \(CF1037H\\Security\)题意给定一个母串\(s\)和\(T\)次询问,每次询问\(S[l\dotsr]\)中字典序严格大于\(t\)的最小串,没有则输出\(-1\)\[|s|\leq10^5\,\\sum|t|\leq2\times10^5\]思路分析不会,贺了首先,因为这个题的标签里有SAM,所以我们要用SAM壹首先我们......
  • springboot security对接mysql数据库
    首先要添加springbootsecurity依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>3.2.4</version></dependenc......
  • SpringSecurity认证和授权流程详解
    什么是SpringSecuritySpringSecurity是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。SpringSecurity基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员......
  • vue3配置使用环境变量.env.development
    参考:https://blog.csdn.net/perfect2011/article/details/1299308191.新建环境配置文件,根目录.env基础系统变量,无论何种环境,都可使用其中配置的值,其他环境中的变量会覆盖.env中的同名变量。.env.development开发环境.env.production生产环境.env.staging测试环境2.vue3使用vit......
  • spring security 6.0.8(boot 3.0.13)自定义 filter 踩坑-已解决
    springboot3.0.13(3.1.10)springsecurity6.0.8(6.1.8)-- 官方文档:https://docs.spring.io/spring-security/reference/index.html写文时最新为6.2.3。  说明,先是用springboot3.1.10测试,失败,降低到3.0.13仍然失败。 开发建立了AppLoginFilter,实现了attemp......
  • 12.Springsecurity简单总结
    关于springsecurity的介绍后面我接触的应该是这个和Shiro!!!一个网站很重要很重要的是安全问题(狂神说的)哈哈我觉得更重要的是编写吧来看吧maven依赖这个肯定很重要thymeleaf依赖就跳过了这个东西应该很重要我学到现在一直离不开当然我还是没完全搞懂语法嘞就像jsp......
  • 报错:react.development.js:1130 Uncaught Error: Objects are not valid as a React
      原因:是因为getControl我用了异步async的方法。而调用的时候,没有加上await导致的。 解决办法:加上await就可以了 ......
  • 【SpringSecurity】基础入门
    目录权限管理什么是权限管理认证授权权限管理解决方案Shiro开发者自定义SpringSecuritySpringSecurity特性Spring、SpringBoot和SpringSecurity三者的关系整体架构1.认证AuthenticationManagerAuthenticationSecurityContextHolder2.授权AccessDecisionManage......
  • WAF-ModSecurity
    Web应用防护系统(WebApplicationFirewall,简称:WAF)代表了一类新兴的信息安全技术,用以解决诸如防火墙一类传统设备束手无策的Web应用安全问题与传统防火墙不同,WAF工作在应用层,因此对Web应用防护具有先天的技术优势。基于对Web应用业务和逻辑的深刻理解,WAF对来自Web应用程序客户......
  • System.Security.Cryptography.RijndaelManaged()
    以下为ai生成:System.Security.Cryptography.RijndaelManaged 是.NET框架中的一个加密类,用于提供高级加密标准(AES)算法的实现。AES是一种强大的对称加密算法,它可以用于保护数据的安全。以下是一个使用RijndaelManaged进行数据加密和解密的简单例子:usingSystem;usingSystem.I......