谈谈方法论--微软STRIDE威胁模型

年纪一大了就爱谈方法论,其实也很简单,不是任何事我们都擅长,也不是任何是我们都可以借鉴前人的经验学习。

就拿web安全来说,当我们给web做渗透测试的时候,每家公司都有自己的测试用例,或者也可以说拿owasp top 10 相关的web用例来做参考。这些都是相对成熟的测试方法。那么如果是汽车渗透呢(好吧,其实国外也有相关书籍展示相关用例了),或者是某种新型的,使用的不是我们已知的协议来运作的系统呢。这个时候没有了已知的经验可学习,方法论就重要了,它可以帮助我们撰写用例。

STRIDE将威胁分为六类:Spoofing(欺骗)、Tampering(篡改)、Repudiation(抵赖)、Information disclosure(信息泄露)、Denial of service(拒绝服务)和Elevation of privilege(提权),并且提供了一套威胁建模工具,说实话没用过,但是按照这些 分类来撰写测试用例还是没问题。

首先还是要识别资产,即我要给什么样的东西(姑且是个东西吧)做安全渗透研究。要识别它的运作与通信原理,是电信号,还是以太网,还是类似汽车那种CAN数据总线(抱歉这部分我并不专业)。

其次要识别脆弱性,即基于对资产的理解而猜测(评估可能更合适)出来的那些脆弱项。这时方法论就来了。微软的STRIDE威胁模型提供了6个方向,我们可以基于这 6个方向来思考待评估的目标的脆弱点。目标在接受信号的时候是否可以进行欺骗?接受的信息是否可以被中间人篡改?攻击者是否无法被发现?攻击后是否可以获取信息?是否可以通过某种手段导致来导致目标拒绝服务?是否有办法获取系统更高的权限。

再次要评估各种脆弱性的受攻击便宜程度,通用程度,利用简易程度,甚至成本多少,这代表着这些威胁。威胁严格意义上应该和脆弱项做一一对应,这挺难,但是其实还是可以通过威胁频率来计算。只有足够高的威胁频率,配合具备实际操作意义的脆弱项,相关用例才有意义。比如你编写一个拒绝服务器攻击的测试用例,结果你用例写着开挖机挖断光缆,这显然是可行的,但是不具备意义。

当然其实我个人也认为微软这个STRIDE模型是具备局限性的,它的一切安全评估都是建立在可通信(或者叫数据接受与应答)的基础之上,但是这并不是安全的全部。还有物理安全,环境安全等,甚至有些东西在渗透测试之前都不具备可通信的情形(渗透员可能需要自行建立通信机制)。但是不可否认,让我研发一个新的测试用例,我依然会将STRIDE作为方法论来使用。也希望自己将来还有机会研发测试用例。

猜你喜欢

转载自blog.csdn.net/u014247926/article/details/129240507
今日推荐