Cost-aware securing of IoT systems using attack graphs
一、摘要
攻击图中的攻击路径就表示攻击者攻占目标主机经过的步骤,作为安全管理员,在面对攻击图中存在多条攻击路径,每条攻击路径中又存在多个漏洞的时候,该如何量化每一个漏洞修复的安全价值,在降低预算和修复漏洞提高系统安全性中找到平衡的一点?本文提出了一种用于攻击图中漏洞选择的策略(COBANOT)。可以告诉管理员优先修复哪一条攻击路径,优先修复这条攻击路径中的哪个漏洞。
二、实验相关内容
(一)攻击图
上图是一张攻击图,我们可以定义攻击图中存在两类结点:漏洞利用结点(exploits)和安全条件结点(security conditions)。漏洞利用结点指的是攻击者能利用漏洞提权,对应攻击图中的椭圆形结点。安全条件结点是漏洞利用结点的前置条件或者结果,对应攻击图中的纯文本部分。攻击图中有两种类型的边,第一种类型的边是从安全条件结点指向漏洞利用结点,这种边表示安全条件结点是利用型结点的前置条件,需要满足这个前置条件,才可以利用漏洞提权。第二种结点是从漏洞利用结点指向安全条件结点,这种情况中安全条件结点表示漏洞被利用的后果。
对于管理员来说,有两种消除攻击路径的办法,第一种办法就是禁用攻击路径中的安全条件结点。但是过程中的安全条件结点不受管理员的控制(如trust(2,1)),所以只能禁用初始的安全条件结点(如ftp(0,1))。
第二种办法就是修复漏洞利用结点。但是不是所有的漏洞利用结点都可以修复,例如通过禁用FTP服务来禁用FTP(0,2),这对于处理数据的服务器来说是不可接受的。
(二)COBANOT流程图
总共分为两个阶段。第一阶段中,Extract Aj是提取攻击路径,Calculate Aprob(Aj)是计算每条攻击路径的概率,Measure SM是计算安全指标;第二阶段中,γ表示还剩余的预算,预算就是管理员用于修复漏洞的代价。当预算不为0的时候,每轮就递归修复一个最重要的漏洞,当这个漏洞被修复后,漏洞所在攻击路径就被移除,并且安全评估指标SM需要重新计算。当预算不够了,就结束流程。
(三)漏洞得分计算
第一张图是漏洞得分计算公式。第二张图是公式中出现的四个变量的取值。第二张图中右边value值是选项,举例local_bof的漏洞得分是10.0,AC是LOW,PR是N,UI是None,AV取N。这意味着攻击者不需要身份验证,直接在网络上就可以远程利用漏洞。按照归一化原则,把他变成1.0。归一化原则就是把漏洞得分除以10,让漏洞得分落在0-10这个区间中。
另外漏洞的利用难度也可以作为参考指标之一,如果一些漏洞已经有一些现成的工具能够自动化的去使用了,那可以将路径长度阈值设置的更大一些。这个阈值的作用是攻击者用来评估这条攻击路径需要花费的代价,假如这条攻击路径中存在的一些漏洞都比较容易触发,那可以适当的延长攻击路径长度的阈值。一般来说攻击者选取攻击路径的时候,攻击路径长度不会超过4,但是扩大这个阈值之后,攻击者还是有可能选择长度为5 6 甚至更高的一些攻击路径。
(四)攻击路径概率
当一条攻击路径长出现几个相同的漏洞的时候,攻击者在已经利用一个漏洞之后,利用其他这类型的漏洞时会更容易。举例:ftp_rhost(0,1)->rsh(0.1)->rsh(1,2)->local_bof(2)。针对这种情况,可以设置参数θ,范围是0-1之间。0表示其他漏洞的攻占和当前这个漏洞的相关性为0,θ越大,攻击者攻击同类型的漏洞的成功率就越大。如果θ取1,表示对于多个相同漏洞来说,攻击者一旦利用其中一个漏洞,那其他同类型的漏洞也一定能被利用。那么在计算概率的时候,如果一条路径中有这样的重复漏洞,只记录一个的概率。举例:ftp_rhost(0,1)->rsh(0.1)->rsh(1,2)->local_bof(2),正常计算概率应该是这四件事情的概率相乘,但是θ取1后,两个rsh只计算一次。
Eprob(Ei)表示Ei结点发生的概率,φ表示在Ei结点之前有多少个和Ei结点表示含义相同的结点。结合上文中提到的θ取1的情况,也就是假设漏洞代价只被计算一次,当攻击路径中没有出现重复结点时,当前路径的概率就是每个结点发生概率的乘积,因为这时候φ一直是0。当第一次出现重复结点时,φ取1,不难计算出当前这一项概率就是等于1。当再次出现这一结点时,φ>1,数学不难推导出后面的式子已经大于1了,结合min取小,最终这一项的概率还是1。这是符合上面的定义的。
(五)安全评估指标SM
如(二)流程图部分介绍,第一阶段的最后需要计算一个SM指标,SM计算式如下:
Aprob(Aj)是攻击路径的概率,SM就是将所有攻击路径的概率加起来,这和流程图中第二阶段中的每一个循环判断SM是否为0也对上了,SM是一个实时计算的量,当你修复了一个漏洞,就会减少一条攻击路径,SM也就会减小,当SM取0的时候,就表示预算充足,漏洞已经全部修复。
(六)con(x)和β的计算
con(x)表示攻击图中的漏洞被利用概率,β表示付出单位预算能减少多少风险值。
公式中的Ei表示漏洞利用结点,Aj表示攻击路径,Ik表示初始条件结点。Con(Ei)表示这个漏洞利用的概率,需要将所有攻击路径中出现这个漏洞的概率加起来。
α是修复一个漏洞结点需要的代价。参数α和con(x)统一为有效成本β,β表示付出单位预算能减少多少风险值。
安全管理员应该修复漏洞的先后顺序需要根据下面的规则,这个规则要求在α不超过预算γ的节点中删除一个β最小的。
三、实验案例分析
实验案例的攻击图用例如下:
纯文本部分表示安全条件结点(security conditions),椭圆形结点表示漏洞利用结点(exploit),一共有11个漏洞利用结点,7个初始安全条件结点。
上表展示了漏洞结点利用成功概率和代价。所有初始条件结点都有相同的disable代价,代价是10,但是user(0)不能disable,因为这是攻击者。安全管理员的预算是25。攻击长度阈值设置为4,攻击路径概率阈值设置为0.01。θ设置为0.5。
下面对应每个阶段的计算细节展开描述,第一阶段需要找到攻击路径并计算攻击路径概率,并计算SM指标。攻击图中存在9条攻击路径,分别是:
攻击图中存在9条攻击路径,最终选择前四条(粉色)。紫色的路径长度为5,超过了阈值长度4。四条红色路径的起点不是初始条件结点user(0),也被过滤掉。
过滤留下的四条路径的概率如下表,SM就等于四条攻击路径的概率之和。SM=0.576 + 0.512 + 0.64 + 0.64 = 2.368。(每条攻击路径概率计算方法在下面)
接着进入第二阶段,在这个阶段中会修复漏洞结点。先说结论,在这个攻击图中会先修复2号结点,并删除路径4;接着删除3号结点,删除路径2和3;最后删除1号结点,删除路径1。这时SM已经变成0了,花费的代价是20,小于预算25。我们还设置了一个攻击路径概率阈值,阈值设置为0.01,但是并没有用到,因为所有的路径概率都大于0.01。结合前面的公式和α的值可以计算出每一条攻击路径的概率。举例:
A1=0.8 × 0.8 × (0.8 + (1 − 0.8) × 0.5) × 1.0 = 0.576
A2=0.8 x 0.8 x 0.8 x 1.0 = 0.512
A3=0.8 x 0.8 x 1.0 = 0.64
A4同理略
con(x)和β的计算如下表,攻击者需要根据每一次修复β取值最小的漏洞结点去修复。
下面对表中的数据进行说明,con(x)是把路径中出现这个点的路径的概率加到一起,β是用α/con(x)求得。以ftp_rhost(0,1)中step1的两个参数计算为例,con(x)的计算在前面已经列式计算过了,β=5/0.576=8.680。再看rsh(0,1)对应step1的两个参数,con(x)已经在前面计算过了,β=15/0.576=26.041。其他的数据计算同理,有几行反常数据,对应攻击图元素的ftp(0,1)和ftp(0,2)和sshd(0,1),这三个没有按照表中的α取值,而是选择α取10。表中的step1,step2,step3分别对应着修复的三个漏洞,每一步修复一个漏洞,表中有三种颜色绿蓝黄。绿色是第一次修复的点,对应攻击图中的2号结点,蓝色是第二次修复的点,对应攻击图中的三号结点,黄色是第三次修复的结点,对应攻击图中的1号结点。选取规则是取这一列中最小的β。