风险评估是信息安全保障工作的重要环节,《GB/T 27921-2011 风险管理风险评估技术》将评估过程总结为三个步骤,即风险识别、风险分析、风险评价。风险评估对风险管理过程的推动作用图如图1所示。风险识别的目的是确定可能影响系统或组织目标得以实现的事件或情况。风险分析是增进对风险的理解,它为风险评价、决定风险是否需要应对以及最适当的应对策略和方法提供信息支持。风险评价利用风险分析过程中所获得的对风险认识,与预先设定的风险准则相比较,对风险进行决策,如风险是否需要应对、风险应对的优先级、采取哪些途径等。
图 1风险评估对风险管理过程的推动作用
1、风险评估要素
1.1. 风险要素
由风险定义可知,风险包含三要素:资产、脆弱性、威胁。风险识别则是对这些风险要素的识别。
1) 资产是对系统具有价值的信息或资源,是安全措施保护的对象。资产识别是对资产价值的识别,但此价值非金钱价值,而是安全价值,即资产在保密性、完整性、可用性等安全属性上的价值由其不同达成程度造成的影响来决定。威胁或安全控制都会影响安全属性达成程度,并进一步影响安全事件造成的损失。由于资产价值特异性较强,往往由管理者依据专家知识指定资产在保密性、完整性、可用性等方面的需求和价值。
2) 脆弱性是指可以被利用的资产薄弱环节。脆弱性识别是对资产本身存在的脆弱性进行识别。这些脆弱性可能是设计缺陷导致的,如软硬件漏洞,也可能是配置缺陷导致的。漏洞本身具有攻击向量、攻击复杂度等多种静态和动态属性,属性值会影响对其严重程度的判定,而不同严重程度的漏洞又会影响安全事件的可能性,以及安全事件造成的损失,为此,需对资产脆弱性进行识别。
针对漏洞数据库收录的脆弱性,可借用漏洞扫描工具如Nessus进行识别,其原理是通过对不同网络资产端口扫描,发现活跃端口与开放的服务,并将这些信息与漏洞库进行匹配,从而进行脆弱性识别。针对不易发现的脆弱性,可以借助攻防演练模拟网络入侵过程,发现可能存在的脆弱性。此外,系统可能还存在着暂未发掘的漏洞,可采用软件漏洞挖掘技术发现漏洞。软件漏洞挖掘技术主要分为静态分析方法(如对程序源代码的审计)和动态分析方法(分析代码执行过程中的动作或行为)。静态分析方法主要通过对程序源代码或者反汇编代码中的控制流和数据流等信息分析来发现漏洞,动态分析方法则通过软件运行过程中程序状态、执行路径等发现漏洞。结合动静态的分析方法往往能够得到更准确的检测结果。当然,为了减少人工成本,一些自动化或半自动化的检测工具已被设计和应用,如Bochspwn可利用污点追踪技术检测引发数据泄漏的漏洞,Syzkaller可利用模糊测试检测linux内核漏洞。随着软件代码规模以及复杂度的增加,以人工经验构造漏洞分析规则成本增加,且定制化较强,导致静态检测方法适用性差。而动态分析方法由于路径爆炸、约束求解困难等问题在处理大型软件漏洞检测中能力受限。为此,研究者们一边尝试优化现有算法,一边利用机器学习算法可从海量数据中学习的能力,尝试突破检测瓶颈。
3) 威胁是导致风险的潜在起因,威胁识别是对系统存在的潜在威胁进行识别。以表现形式来分,系统中存在软硬件故障、物理环境影响、管理不到位、操作失误、恶意代码、网络攻击、物理攻击等威胁。网络攻击威胁是网络防护设备的主要关注对象,学术界和工业界常将通过监控网络识别发现网络攻击行为的技术统称为网络入侵检测技术,且一直是研究的重点。
1.2. 风险评估要素关系
国家安全评估标准GB/T 20984-2007将风险评估基本要素总结为威胁、脆弱性、资产、安全措施、风险,并清晰的解释了各要素之间的关联关系,具体如图2所示。图中椭圆表示风险评估要素,长方形表示要素关联属性,连接线表示他们之间的关联关系。具体风险评估要素关联关系解释如下:
图 2风险评估要素关系
组织的业务战略依赖于系统资产实现,依赖程度越高,可接受其风险越小。
资产具有价值,且其价值与业务战略的依赖程度呈正比。
脆弱性是未被满足的安全需求,威胁可利用脆弱性生成安全事件危害暴露的资产,形成风险。脆弱性越多,安全事件发生的可能性越大。
威胁是风险起因,系统存在的威胁越多,安全事件发生概率越高,资产风险越大。
基于系统风险情况可推导出安全需求,可以通过安全措施满足这些需求,需结合资产价值考虑安全防护成本。
安全措施用于抵御威胁,降低安全风险,同时可能由于其失效或不当,系统存留残余风险。
残留的安全风险可能诱发新的安全事件。从风险管理角度看,残留风险应是综合考虑防护成本与效益后的可接受的风险。
由以上风险评估要素关联关系可见:风险取决于威胁、脆弱性以及安全措施;未被有效控制的威胁利用脆弱性演变为攻击事件影响资产,形成风险;对系统安全风险的及时准确评估可得到当前安全需求,并进一步采取控制措施,降低风险。
2、网络动态风险评估框架
2.1. 风险分析原理
基于对风险评估要素的关系分析,参考国家评估标准GB/T 20984-2007,提出本文依据的风险分析原理,如图3所示。风险因素通过影响安全事件的发生和损失程度,影响着系统安全风险。为此,从安全事件的发生和安全事件的损失两方面综合分析风险。安全事件发生与否受威胁出现概率以及脆弱性被利用的难易程度影响,为此需对威胁和脆弱性进行识别。安全事件在保密性、完整性、可用性等属性的价值损失受资产价值以及脆弱性对价值的损害程度所影响,为此也需对资产进行识别。
图 3风险分析原理
2.2. 风险评估框架与流程
结合系统性的研究调查,现构建网络动态安全风险评估框架如图4所示。框架以网络系统资产、网络系统拓扑、漏洞数据库、传感器等作为数据输入源,在风险识别与风险分析过程之后,风险评价根据风险的分析结果确定风险等级,完成风险评估流程。具体评估实施流程如下:
1) 风险识别
第一步:资产识别。识别系统中分布的资产情况,并标识资产在保密性、完整性、可用性等方面的价值。
第二步:脆弱性识别。识别系统资产中存在的脆弱性,并描述其利用难易程度、对资产影响程度等属性。
第三步:威胁识别。识别系统中存在的威胁,分析威胁的出现频率。
图表 4网络动态风险评估框架
2) 风险分析
第四步:依据风险识别结果,结合预先构建好的风险分析模型进行风险分析。风险分析模型依据威胁、脆弱性、资产等安全要素与安全事件的可能性、安全事件的损失之间的关联性构建。
3) 风险评价
第五步:依据风险分析过程获得的各类风险值评价风险优先级,提交管理者以导出安全需求和决策风险控制措施。
从评估流程中可见,风险识别与风险分析在风险评估中占有重要地位。面向系统运行中持续评估的需求,评估系统需具有动态风险感知的能力:
(1)可对资产价值的变化、脆弱性利用难易程度的变化、正在发生威胁等动态影响因素捕获;
(2)使用的分析模型可及时输出这些因素变化引发的动态风险。
网络攻击威胁发生频率较高,对系统动态安全风险影响巨大,且具有演变性,对网络攻击威胁的识别一直是业界研究的重点和难点。
作者:胡波 王婷婷 王蕾祺
声明:本文来自中国保密协会科学技术分会,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。