SDL-软件安全设计初探

目录

    • 前言
      • SDL介绍
      • SDL作用
      • SDL安全活动
    • 安全设计核心原则
      • 攻击面最小化
      • 基本隐私
      • 权限最小化
      • 默认安全
      • 纵深防御
      • 威胁建模
    • STRIDE威胁建模方法
      • STRIDE介绍
      • 威胁建模流程
        • 数据流图
        • 识别威胁
        • 缓解措施
        • 安全验证
    • 总结

前言

SDL介绍

安全开发生命周期(SDL)即Security Development Lifecycle,是一个帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。自2004年起,微软将SDL作为全公司的计划和强制政策,SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。安全开发生命周期(SDL)1是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用。

SDL作用

没有SDL参与的研发流程以及弊端

每个环节都存在安全风险

  • 需求分析:缺少必要的安全需求介入,导致后续缺少必要的安全模块设计
  • 设计阶段:设计阶段缺乏安全,导致系统架构缺陷后期难以修复
  • 产品研发:研发缺少安全意识,代码存在安全隐患
  • 系统测试:缺少安全测试,安全问题不能提前暴露
  • 部署上线:攻击面暴露,攻击者入侵,资产受损

SDL介入的研发流程

  • 安全培训:安全意识、研发安全技术、安全编码规范
  • 安全设计:威胁建模
  • 安全测试:自研线上扫描平台、浏览器插件、白盒黑盒、github开源扫描器
  • 渗透测试:自动化扫描工具、内部测试、外部众测、白帽子

SDL安全活动

简单来说,SDL是微软提出的从安全角度指导软件开发过程的管理模式,在传统软件开发生命周期(SDLC)的各个阶段增加了一些必要的安全活动,软件开发的不同阶段所执行的安全活动也不同,每个活动就算单独执行也都能对软件安全起到一定作用。当然缺少特定的安全活动也会对软件的安全性带来影响。

SDL-软件安全设计初探

基本隐私

用户使用软件时无可避免个人信息被收集、使用甚至分发,企业则有责任和义务建立保护个人信息的保护措施,抵御敌对攻击行为,确保用户基本隐私的安全性。隐私安全是建立可信任应用程序的关键因素。

在软件设计时考虑用户基本隐私的必要性及意义有:

  • 履行法律规定和义务
  • 增加客户的信赖
  • 防止堵塞部署

对于特殊的软件或者全球性的产品,设计人员需要明确软件的行为及针对人群。尤其要考虑当地国家的法律法规,如美国儿童网路隐私保护法等,企业在开发产品、服务时有必要制定明确的隐私准则,对获取、记录用户隐私的相关产品需有明确的要求和指导建议。

Tips:

  • 只收集程序必须用到的隐私数据,并明确告知用户并征得用户同意
  • 对于用户隐私数据如密码、口令等均需要加密存储,最低要求是sha256+salt,对于更高要求的则使用PBKDF2算法加密存储

权限最小化

如果一个应用程序或网站被攻击、破坏,权限最小化机制能够有效的将潜在损害最小化。常见的权限最小化实践如:

  • 普通管理员/系统管理员等角色管理
  • 文件只读权限/文件访问权限等访问控制
  • 进程/服务以所需最小用户权限运行

在进行软件设计时,安全设计人员可以评估应用程序的行为及功能所需的最低限度权限及访问级别,从而合理分配相应的权限。如果程序特定情况必须要较高级别的权限,也可以考虑特权赋予及释放的机制。即便程序遭到攻击,也可以将损失降到最低。

Tips:

  • Windows系统中网络进程、本地服务、用户进程的权限都较低且互相独立,分别为NETWORK SERVICE、LOCAL SERVICE、user权限,只有核心的重要进程实用SYSTEM权限;
  • 最新版本的Office程序打开不可信来源的文档时,默认时不可编辑的,同时也是默认不可执行代码的,即使存在缓冲区溢出漏洞,也不会执行shellcode等恶意代码;

默认安全

默认安全配置在客户熟悉安全配置选项之前不仅有利于更好的帮助客户掌握安全配置经验,同时也可以确保应用程序初始状态下处于较安全状态。而客户可根据实际使用情况而决定应用程序安全与隐私的等级水平是否降低。

Tips:

  • 在Win7之后的Windows操作系统中,DEP(数据执行保护)默认是开启的。用户可设置选项改变DEP的状态;
  • Win 10默认启用安全防护软件 Windows Defender,用户可选择关闭

纵深防御

与默认安全一样,纵深防御也是设计安全方案时的重要指导思想。

纵深防御包含两层含义:首先,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;其次,要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。

纵深防御并不是同一个安全方案要做两遍或多遍,而是要从不同的层面、不同的角度对系统做出整体的解决方案。

Tips:

  • 针对XSS的防护,除了要对用户输入的特殊符号进行过滤,还要区分是否是富文本进而进行相应编码操作,在输入时过滤的同时在输出时也进行过滤操作。
  • 即使做了十足的过滤、编码等安全防护,为了更一步确保缓解XSS攻击,Internet Explorer 6 SP1为Cookie引入了一个新属性,这个属性规定,不许通过脚本访问cookie。Web站点程序对Cookie启用HTTP-Only属性后,可确保即使发生XSS攻击,也可以阻止通过脚本访问Cookie的操作。

威胁建模

威胁建模是一种分析应用程序威胁的过程和方法。这里的威胁是指恶意用户可能会试图利用以破坏系统,和我们常说的漏洞并不相同。漏洞是一个特定的可以被利用的威胁,如缓冲区溢出、sql注入等。

作为SDL设计阶段的一部分安全活动,威胁建模允许安全设计人员尽在的识别潜在的安全问题并实施相应缓解措施。在设计阶段把潜在的威胁发现有助于威胁的全面和更有效的解决,同时也有助于降低开发和后期维护的成本。威胁建模的一般流程如下:

  • 与系统架构师及设计人员沟通,了解设计详情
  • 使用成熟的威胁建模方法分析当前设计潜在的安全问题
  • 提出安全建议及对潜在威胁的缓解措施
  • 对安全设计进行验证并对整个设计方案进行回顾并再次确认

微软使用的威胁建模方法是STRIDE威胁建模方法。为了便于安全人员快速便捷的进行威胁建模,微软开发基于STRIDE威胁建模方法的SDL ThreatModeling Tool威胁建模工具,该工具可以帮助安全人员画数据流图、分析威胁、生成并导出威胁建模报告。

STRIDE威胁建模方法

STRIDE介绍

STRIDE威胁建模是由微软提出的一种威胁建模方法,该方法将威胁类型分为Spoofing (仿冒)、Tampering(篡改)、Repudiation(抵赖)、InformationDisclosure(信息泄漏)、Denial of Service(拒绝服务)和 Elevation of Privilege(权限提升)。这六种威胁的首字母缩写即是STRIDE,STRIDE威胁模型几乎可以涵盖目前绝大部分安全问题。此外,STRIDE威胁建模方法有着详细的流程和方法。

威胁建模流程

STRIDE威胁建模的一般流程如下:

  • 绘制数据流图
  • 识别威胁
  • 提出缓解措施
  • 安全验证

SDL-软件安全设计初探

识别威胁

STRIDE威胁建模方法已经明确了每个数据流图元素具有不同的威胁,其中外部实体只有仿冒(S)、抵赖(R)威胁,数据流只有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有六种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁,但如果是日志类型存储则还有抵赖((R)威胁。具体可以对照如下表格进行威胁识别:

SDL-软件安全设计初探 SDL-软件安全设计初探

来源:她总是阴雨天

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月21日
下一篇 2021年11月21日

相关推荐