文章目录

  • SDL安全设计核心原则
    • 1、攻击面最小化
    • 2、基本隐私
    • 3、权限最小化
    • 4、默认安全
    • 5、纵深防御
    • 6、威胁建模

SDL安全设计核心原则:1、Attack Surface Reduction:攻击面最小化
2、Basic Privacy: 基本隐私
3、Least Privilege: 权限最小化
4、Secure Defaults: 默认安全
5、Defense in Depth:纵深防御
6、Threat Modeling:威胁建模

SDL安全设计核心原则

1、攻击面最小化

攻击面是指程序任何能被用户或者其它程序所访问到的部分,这些暴露给用户的地方往往也是最可能被恶意攻击者攻击的地方。

攻击面最小化:即是指尽量减少暴露恶意用户可能发现并试图利用的攻击面数量。软件产品的受攻击面是一个混合体,不仅包括代码、接口、服务,也包括对所有用户提供服务的协议。尤其是那些未被验证或者远程的用户都可以访问到的协议,安全人员在攻击面最小化时首先要对攻击面进行分析,攻击面分析就是枚举所有访问入库、接口、协议一剂可执行代码的过程。

从高层次来说,攻击面分析着重于:
1、降低默认执行的代码量;
2、限制可访问到代码的人员范围;
3、限定可访问到代码的人员身份;
4、降低代码执行所需权限。

常见的攻击面分析技巧如下表:

Higher Attack Surface Lower Attack Surface
On by default Off by default
Open socket Close socket
UDP TCP
Anonymous access Authenticated user access
Constantly on On as needed
Internet accessible Local subnet accessible

攻击面最小化在微软的应用实践示例:

Windows RPC需要认证、防火墙默认打开
iis6.0、7.0 使用Network service权限运行,默认关闭.
Sql server 2005/2008 xp_cmdshell存储过程默认关闭,默认不开放远程链接
VS2005/2008 Web server和sql server默认仅本地访问

2、基本隐私

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

在软件设计时考虑用户基本隐私的必要性及意义有:
1、履行法律规定和义务;
2、增加客户的信赖;
3、防止堵塞部署。

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

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

3、权限最小化

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

常见的权限最小化实践如:
1、普通管理员/系统管理员等角色管理;
2、文件只读权限/文件访问权限等访问控制;
3、进程/服务以所需最小用户权限运行.

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

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

4、默认安全

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

Tips:

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

5、纵深防御

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

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

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

6、威胁建模

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

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

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

参考链接: https://www.microsoft.com/en-us/SDL/

SDL介绍----2、SDL安全设计核心原则相关推荐

  1. SDL 开发实战(一):SDL介绍

    一.什么是SDL? SDL是 "Simple DirectMedia Layer"的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. ...

  2. SDL介绍----4、S-SDLC安全开发生命周期

    文章目录 一.S-SDLC 二. S-SDLC流程 三.S-SDLC项目流程 一.S-SDLC OWASP Secure Software Development Lifecycle Project( ...

  3. SDL介绍----3、STRIDE威胁建模方法

    文章目录 一.什么是威胁建模 二.STRIDE威胁建模介绍 2.1.STRIDE的六类威胁 三.威胁建模流程 3.1.数据流图 3.2.识别威胁 3.3.提出缓解措施 3.4.安全验证 一.什么是威胁 ...

  4. SDL介绍和简单实用

    http://www.libsdl.org/download-2.0.php https://blog.csdn.net/liujiayu2/article/details/80691504

  5. c语言 sdl编写五子棋,SDL 五子棋游戏

    1.定义窗口大小,棋盘大小 SDL_GetWindowSize()读取窗口大小, 由于棋盘是15*15格局,上下留白一行,在另外加一个状态行,所以每行高度为width/17 2.图片加载 surfac ...

  6. 安全开发流程(SDL)

    目录 0x01 SDL介绍 0x02 SDL流程框架 0x03 SDL实战经验 0x04 总结 0x01 SDL介绍 安全开发生命周期(SDL)即Security Development Lifecy ...

  7. 详细介绍Qt,ffmpeg 和SDl 教程之间的联系

    Qt与 ffmpeg 与 SDl 教程是本文要介绍的内容,从多个角度介绍本文,运用了qmake,先来看内容. 1.  注释 从" #" 开始,到这一行结束. 2.  指定源文件 1 ...

  8. 互联网企业如何有效落地SDL

    *本文作者:hackeryeah,转载请注明来自FreeBuf.COM 前言 笔者在实施SDL方面有多年的经验,实施过微软厚重的SDL,实施过互联网企业粗糙的SDL,目前在落地标准化自动化的SDL,在 ...

  9. 【应用安全】微软的安全开发生命周期(SDL)

    [应用安全]微软的安全开发生命周期(SDL) 0x01 SDL介绍 安全开发生命周期(SDL)即Security Development Lifecycle,是一个帮助开发人员构建更安全的软件和解决安 ...

最新文章

  1. 【杭电ACM】1097 A hard puzzle
  2. 国内研究生不小心跟了一个水货导师是什么样的体验?
  3. c#抓取別的網頁的內容
  4. 更便捷:阿里云DCDN离线日志转存全新升级
  5. Zookeeper超详细的面试题
  6. C语言学习笔记--位运算
  7. 【HDU - 1698】 Just a Hook(线段树模板 区间覆盖更新(laz标记) + 区间和查询 )
  8. Android RecyclerView嵌套EditView实时更新Item数据
  9. Jsoup从一个文件加载一个文档
  10. Linux系统网络性能实例分析
  11. pytorch之---max()函数
  12. 云盘存储 教学反思_现代教育技术
  13. 10款精选的后台管理系统,收藏吧!
  14. 基于布谷鸟灰狼算法、灰狼算法求解复杂地形下三维无人机路径规划问题研究附matlab代码
  15. 超级马里奥【附源码】
  16. 【清华大学】操作系统 陈渝 Part2 —— 中断、异常和系统调用
  17. swift unowned和weak的使用
  18. CentOS7防火墙关闭
  19. 使用mondo制作备份linux的iso文件
  20. 鸿蒙系统最便宜的手机,鸿蒙手机6月2日上市 手机友商不大可能转投鸿蒙系统

热门文章

  1. 台式机不能开机,屏幕无任何反应的万能修机方法
  2. 用python 实现从fasta文件中获取登记码
  3. 阿里、腾讯、美团等P7岗位面试题
  4. java cookie获取cookie_java操作cookie、获取cookie的操作,亲测好用!
  5. 互动媒体技术课程作业 十二个“一”的人格感受
  6. linux笔记本无法识别显示器,为了解决笔记本外接显示器导致Ubuntu显示异常的问题,我做了这么多事情......
  7. 电视盒子什么牌子好?数码博主盘点2022电视盒子排行榜
  8. 剪辑视频,如何提取视频封面
  9. mybatis一对多查询内层排序问题
  10. word关闭时卡死_word页眉处理技巧:用VBA快速删除批量页眉页脚