基于STRIDE威胁建模的安全通信问题
本文是以美创安全实验室在深度了解STRIDE威胁建模的基础上,结合当今普遍关注的安全通信的痛点,对HTTPS这一安全通信的解决方案进行深度剖析集成而来。
0x00 前言
STRIDE是微软开发的用于威胁建模的工具,在介绍威胁建模之前,我们需要先行了解两个重要的概念:安全属性与安全设计原则。充分理解后我们将结合安全通信的具体解决方案HTTPS协议,从威胁建模的角度进行具体分析。
0x01 安全属性与安全设计原则
说到安全属性,脑海中不约而同的蹦出三个字母 “CIA” ,这里的CIA指代的是Confidentiality (机密性), Integrity (完整性), 和 Availability (可用性)三个英文单词的首字母。
• 机密性:保证机密信息不被窃取,窃听者不能了解信息的真实含义。
• 完整性:保证数据的一致性,防止数据被非法用户窜改。
• 可用性:保证合法用户对信息资源的使用不会被不正当的拒绝,如DOS攻击。
再说安全设计原则,虽然市面上目前并没有统一的标准,但我们仍列出以下通认的十点。
- 最小攻击面
- 默认安全
- 权限最小化
- 纵深防御
- 失败安全
- 不信任第三方系统
- 业务隔离
- 公开设计
- 简化系统设计
- 使用白名单
1.最小攻击面
我们在一些web安全防护建议中经常会提到“关闭不必要对外开放的端口”,这就是最小攻击面的一项措施。在网络攻击的生命周期中一个重要环节就是信息收集,这个环节往往也是黑客耗费时间精力最大的一个环节,对最终黑客的攻击成果起了至关重要的影响,越是有经验的黑客,会花更多的时间和精力在信息收集上面,这步做的好,后面就能一击命中。当我们最小化攻击面这个安全原则做的好,就会大大影响黑客信息收集的成果,最终挫败黑客的攻击。
2.默认安全
系统的默认配置会带来安全问题,比如一些硬件设备或软件是存在默认密码的,如果没有及时修改,将有很大可能被暴力破解。
3.权限最小化
当我们做产品维护的时候,为了寻求方便总是一个root账号搞定所有的系统,虽然维护方便了,但当黑客攻破了任一系统的时候就直接获取了最高权限
4.纵深防御
所谓治标不治本,不要把所有的精力只用在一点的防御上,一点防御的再强,也可能会出现0day漏洞,无法保证100%的安全。 层层设防,多样化,多层次、纵深的防御措施。攻破一层或一类防护后,无法破坏整个信息基础设施或应用系统。
5.失败安全
当异常发生时,异常处理代码处理不当,可以导致意想不到的问题,比如权限提升、信息泄露等。这也是不懂安全的开发人员经常忽视的,而在黑客攻击kill chain的信息收集阶段,又是被黑客经常利用的,黑客对攻击目标故意输错url参数或者路径、构造异常post数据,导致服务器出错,如果开发人员对这里的错误处理不当,就会导致敏感甚至重要的信息被泄露,为黑客的下一步攻击提供重要的线索和思路。
6.不信任第三方系统
现在每一个产品的开发总是存在大量的合作商,很多系统越来越复杂,很多都是模块化、组件化的,需要引入第三方的模块或者和第三方的业务系统对接并使用其提供的数据,我们无法掌控第三方系统的安全性,如果其存在漏洞被攻