读软件开发安全之道:概念、设计与实施03威胁

2024-08-19  本文已影响0人  躺柒
读软件开发安全之道:概念、设计与实施03威胁.png

1. 威胁

1.1. 威胁常常比事件本身更加可怖

1.2. 威胁无处不在

1.3. 把视角从软件构建者转向攻击者

1.4. 软件的本质:它是由一堆代码和组件构成的,这些代码和组件承担着数据处理和存储的职责

1.5. 威胁包含各种可以带来伤害的方式

1.6. 很难穷举大型软件系统的所有威胁和漏洞

1.7. 理解威胁建模可以让我们把视野从安全性上扩展出去,从而重新审视我们的目标系统

2. 对抗性视角

2.1. 人类肇事者才是万恶之源

2.2. 只要对软件安全性进行协同分析,就一定要考虑可能的对手会进行什么样的尝试,这样才能预测和防御潜在的攻击

2.3. 了解攻击者的思考方式的确有其价值,但我们的目标是开发安全软件,所以攻击者具体会通过什么技术手段来探测、渗透和泄露数据无关紧要

2.4. 软件错误绝对是攻击者重点关注的对象,因为它们往往就是软件的弱点所在

2.5. 两项几乎不会引人注意的细微漏洞如果结合在一起,就可以制造出一次重大的攻击,因此我们应该严肃对待一切漏洞

2.6. 攻击一个系统可能获得的收益越高,人们就越有可能应用更多的技术和资源来对这个系统发起攻击

2.7. 与一切形式的攻击行为一样,攻击的难度总是小于抵御攻击的难度

3. 4个问题

3.1. 我们的工作是什么?

3.2. 哪里有可能出错?

3.3. 我们打算怎么办?

3.4. 我们干得怎么样?

4. 威胁建模

4.1. 哪里有可能出错?

4.2. 威胁建模的基本流程

4.3. 在实践当中,第一次威胁建模只应该关注那些针对高价值资产的重大、高风险威胁

4.4. 人们在日常生活中都会根据本能,做一些类似于威胁建模的工作,采取符合一般常识的预防性措施

4.5. 虽然我们在现实生活中会自然而然地采取这样的行动,但是把这些方法应用到我们本能还不能覆盖的复杂软件系统上则需要制定更多的规则

4.6. 威胁建模会使用数据流图(Data Flow Diagram,DFD)或者统一建模语言(Unified Modeling Language,UML)

4.7. 比较理想的软件可以把工作中最重要的内容全部自动化

4.8. 按照Goldilocks原则选择合适的粒度

5. 判断资产

5.1. 资产是指系统中我们必须加以保护的实体

5.2. 建议不要试着去做复杂的风险评估计算

5.3. 对资产进行优先级排序其实有一种简单而且非常高效的方式,那就是通过“衬衫尺码”来对它们进行排序

5.4. 如果我们把资产集中起来,就可以大幅简化我们的分析工作,不过我们也要注意在这个过程中不能错失重要的信息

5.5. 一定要从各方的角度分别考虑资产的价值

6. 判断攻击面

6.1. 我们应该考虑尽一切可能缩小攻击面,因为这样可以彻底消弭潜在的攻击源

6.2. 很多攻击都有可能在整个系统中散布出去,所以尽早防御这类攻击才是最好的防御方式

6.3. 软件设计往往比设计一栋物理大楼要复杂得多,所以判断整个攻击面也殊非易事

6.4. 应该把内部网络看成一个风险比较小的攻击面

6.5. 攻击面不局限于数字世界内部

7. 判断信任边界

7.1. 信任和权限总是相互关联的,所以我们也可以把信任边界理解为权限边界

7.2. 如果在人类社会中给信任边界进行类比,那么信任边界可以类比公司经理(了解更多内部信息)和员工之间的信息差,或者你家的大门(你可以选择谁能够进入你的家门)

7.3. 操作系统的内核-用户界面就是信任边界的经典示例

7.4. 安全外壳(Secure Shell,SSH)守护进程(sshd)是一个理想的、采用了信任边界的安全设计示例

7.5. 在一个操作系统中,超级用户固然应该拥有最高级别的信任,其他管理员用户也可以考虑获得类似级别的权限

7.6. Web服务器需要有能力抵御恶意客户端用户,因此Web前端系统往往会对入站的流量进行验证,并且只转发那些合法的请求,这就有效地建立起了与互联网之间的信任边界

7.7. 在信任边界的两边,一定要通过定义明确的接口和协议来提供转换和过渡

7.8. 最大的风险往往隐藏在从低信任区域向高信任区域过渡的地方

8. 判断威胁

8.1. 威胁往往会集中在重要资产和信任边界周围,但是也有可能出现在系统的任何一个地方

8.2. 系统的主要威胁会集中于我们的资产和系统的信任边界

8.3. 即使很小的威胁也有可能需要我们采取措施进行缓解

8.4. STRIDE关注的重点是判断威胁的过程

8.5. STRIDE中有一半的威胁属于对基础信息安全的直接威胁

8.6. STRIDE的另一半针对的是黄金标准

9. 缓解威胁

9.1. 通过重新设计或者增加防御的方式来缓解威胁,从而减少威胁的发生,或者把威胁造成的伤害降到可以接受的程度

9.2. 如果受到威胁的资产不是必要的信息,就直接把这些信息删除

9.3. 把一些责任交给第三方,从而转移风险

9.4. 在充分理解风险之后,接受风险的存在,承认风险的发生自有其合理性

9.5. 部分缓解措施

10. 隐私方面

10.1. 针对隐私的威胁手段与其他安全威胁手段一样真实

10.2. 我们应该把自己看成个人信息的管家,努力从用户的角度进行考虑,包括认真考虑用户关注的隐私安全问题,并且为了避免用户隐私泄露,怎么关注都不为过

10.3. 随着人们的生活日趋数字化,移动计算设备已经无处不在,隐私也越来越依赖这些代码,未来如何发展殊难预料

10.4. 降低隐私威胁的一般解决方案

上一篇 下一篇

猜你喜欢

热点阅读