我是靠谱客的博主 快乐乌冬面,最近开发中收集的这篇文章主要介绍攻击图剪枝策略和评分规则介绍一、摘要二、相关技术介绍三、结合实例进行分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Assessing Attack Impact on Business Processes by Interconnecting Attack Graphs and Entity Dependency Graphs

文章目录

  • 一、摘要
  • 二、相关技术介绍
    • (一)CVSS得分
    • (二)业务流程中的三种依赖关系
  • 三、结合实例进行分析


一、摘要

本文通过攻击图来评估攻击漏洞产生的影响。核心思想是所有攻击都是通过利用企业网络中的漏洞来执行的。因此,业务流程的影响得分是漏洞的严重性以及脆弱性和业务流程之间的关系的功能结果。

二、相关技术介绍

(一)CVSS得分

脆弱性评分系统(CVSS)提供了一种衡量漏洞影响并为攻击影响计算得分的方法。该分数系统包括三个度量,基本得分指标,时间分数指标,环境评分指标。其中时间和环境评分指标主要是对评分的一个完善。评分从0-10分,越大表示越容易被利用,也更脆弱。每一个度量都有一个计算公式可以计算得分,可以参考下https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:L

(二)业务流程中的三种依赖关系

业务流程中存在三种依赖关系:and-依赖,or-依赖,flow-依赖。如果task与task1和task2是and-依赖关系,那么当task1和task2任何一个受到影响时,task都会受到影响;如果task与task1和task2是or-依赖关系,当task1和task2都受到影响时,task会受到影响;如果task与task1和task2是flow-依赖关系,那么当task2受到影响后,task会受到影响,其中task2是在task1之后完成的。(后面会结合例子详细介绍)

对于and-依赖,or-依赖,flow-依赖,添加自定义规则如下:

interaction_rule( 	/*and-依赖*/
	(nodeImpact(Task):-
		node(Task,and,Task1,Task2),
		nodeImpact(Task1),
	rule_desc('An impact child task affects an And task')
).
interaction_rule( 	/*or-依赖*/
	(nodeImpact(Task):-
		node(Task,or,Task1,Task2),
		nodeImpact(Task1),
		nodeImpact(Task2),
	rule_desc('Both impact child task affects an or task')
).
interaction_rule( 	/*flow-依赖*/
	(nodeImpact(Task):-
		node(Task,flow,Task1,Task2),nodeImpact(Task2),
	rule_desc('A flow node is impacted from its flow')
).

通过上述mulval扩展规则,可以得到and-依赖的攻击图如下:
在这里插入图片描述

三、结合实例进行分析

下面举例说明,例子为一种旅行预订系统,业务流程包括7个任务,T1:搜索旅行信息;T2:预定票和酒店选择;T3:提示登陆或注册;T4:如果登陆,则加载偏好和促销代码;T5:如果签名,请保留一家酒店和票据作为会员;T6:如果未签名,将以游客身份保留票据;T7:提示付款并确认预定。对于上述任务,可以得到四种业务流程:
1.T1T2T3T4T5T7
2.T1T3T2T4T5T7
3.T1T2T3T6T7
4.T1T3T2T6T7
1和2,3和4之间的区别都是T2T3的顺序。1和3,2和4的区别都是是否登录,也就是说T4T5和T6只能二选一;此外,T5取决于T4获得的信息,因此应该在T4之后出现T5。这种逻辑关系也就对应这前面提到的三种依赖关系。如下图所示:

fig3b

对上述系统进行系统软件建模,结构图如下:

fig4

vm1,vm2,vm3是三台虚拟机,vm1在Hypervisor 1中运行,vm2和vm3在Hypervisor 2中运行。web server1在vm1中运行,web server2在vm2中运行。数据库服务在docker3的容器1中运行,票据服务在容器2中运行;旅馆服务在docker1的容器3中运行;支付服务在docker2中的容器4运行。设定docker1在workstation1中工作,docker2在workstation2中工作,docker3在workstation3中工作。从desktop有根权限访问vm3和容器1的数据库。系统中存在五个漏洞,分别是:CVE-2016-0777, CVE-2016-7479 和 CVE-20166325(这三个漏洞位于desktop中,能使得攻击者权限升级),CVE2014-3499(能使攻击者从docker中逃脱),CVE-2016-6258(用于破坏虚拟机)。很明显能看出系统中存在两条攻击路径(红线表示),第一条路径是攻击者首先利用Web应用程序中的漏洞或SSH应用程序中的漏洞来控制开发人员桌面,该桌面具有登录VM 3的凭据3,通过利用KVM软件中的漏洞,攻击者可以通过破坏虚拟机和主机之间的隔离来直接访问主机,然后,攻击者可以访问托管Web Service 2并在此虚拟​​机上执行任意代码;第二条路径是desktop有登录容器1的凭据,因此攻击者可以访问容器1,并在能在数据库中修改数据。

根据上述情况,用mulval得到的攻击图如下:
在这里插入图片描述
这个攻击图很复杂,可以利用剪枝对其简化,剪枝的规则如下:
1.修剪掉所有非漏洞的叶节点
叶节点指的就是攻击图中的矩形节点,它包括漏洞节点和一些配置信息。配置信息对于计算得分没有用,可以修剪掉。
2.修剪掉只有一个祖先的节点
如果一个节点只有一个祖先节点,不管这个节点有多少子节点,都可以把这个节点去掉,使得祖先节点和该节点的子节点直接相连。对应攻击图,这种只有一个祖先的几点通常是漏洞节点的派生节点。
3.修剪掉没有祖先的节点,除了漏洞节点。
如果一个节点没有祖先节点,而且不是漏洞节点,那这种点对计算评分没有价值,可以修剪掉。
4.找到一个从漏洞节点到目标节点的最短路径,并合并这些路径
如果攻击者能用一种简单的方式来利用漏洞影响目标节点,那他就不会选更复杂的攻击方式。如果漏洞节点和目标节点之间存在不同的攻击路径,那就应该选择最短路径。
5.如果两个节点之间存在多条边,那只留下一条即可,多余的修剪掉。
利用剪枝规则得到如下攻击图:
在这里插入图片描述

接下来介绍一下系统评分规则:

vi=CVSSi/10
and-依赖计算公式:vi and vj = vi * vj
or-依赖计算公式:vi or vj =vi + vj - vi * vj

对于旅行预订系统中,存在五个漏洞,详细信息如下表:
table1

根据生成的攻击图可以得到该系统评分计算公式为:

M = (((CVE−2016−0777 OR CVE−2016−7479) AND CVE−2016−6325) AND
CVE−2016−6258) OR CVE−2016−3499

结合公式,进行计算,过程如下:
CVE−2016−0777 OR CVE−2016−7479 = 0.65+0.98-0.65 * 0.98 = 0.93
(CVE−2016−0777 OR CVE−2016−7479) AND CVE−2016−6325 = 0.993 * 0.78 = 0.77454
((CVE−2016−0777 OR CVE−2016−7479) AND CVE−2016−6325) AND CVE−2016−6258) = 0.7754 * 0.88 = 0.6816

(((CVE−2016−0777 OR CVE−2016−7479) AND CVE−2016−6325) AND CVE−2016−6258) OR CVE−2016−3499 = 0.6816 + 0.72- 0.6816 * 0.72 = 0.91

最终得到的0.91就是系统的评分

最后

以上就是快乐乌冬面为你收集整理的攻击图剪枝策略和评分规则介绍一、摘要二、相关技术介绍三、结合实例进行分析的全部内容,希望文章能够帮你解决攻击图剪枝策略和评分规则介绍一、摘要二、相关技术介绍三、结合实例进行分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部