安全研究

News information

关于漏洞你需要了解这些知识

<<返回

2019年08月16日 10:40


1.   什么是漏洞?

漏洞是计算机信息系统在需求、设计、实现、配置、运行等过程中,有意或无意产生的缺陷。这些缺陷以不同的形式存在于计算机信息系统的各个层次和环节之中,通常情况下不影响软件的正常功能,但如果被恶意主体所利用,有可能驱使软件去执行一些额外的恶意代码,就会对计算机信息系统的安全造成损害,从而影响计算机信息系统的正常运行,引发严重的后果。最常见的漏洞有缓冲区溢出漏洞、整数溢出漏洞、指针覆盖漏洞、权限绕过等。

2.   与漏洞相关的一些概念

搞网络安全的人经常会碰到漏洞库、设备库、指纹库、漏挖、漏扫、防火墙、审计、渗透测试攻击、poc、snort、cnnvd等这些名词,其实这些东西与漏洞都存在着千丝万缕的联系,下图是依据我们六方云超弦攻防研究实验室理解而绘制的一幅漏洞关系图,此图以漏洞为核心,表现出了相关名词概念与漏洞之间的关联关系。接下来我们将对这些与漏洞相关的名词概念进行简单描述。

                                             

image.png

图1:漏洞关系

2.1   漏洞扫描工具

漏洞扫描工具是用来扫描信息系统和设备(如操作系统、应用软件、网站、工业控制系统、工业控制设备等)漏洞的工具。其以漏洞数据库、设备信息数据库、指纹库为基础,对本地或远程主机进行检查。漏洞扫描工具可以用来做安全审计和安全评估、软硬件上线前测试等。

比较知名的开源漏扫工具有Nessus、OpenVAS等。Nessus是最受欢迎的漏洞扫描工具,支持身份验证和未身份验证的扫描,包括网络漏洞扫描,内部和外部PCI扫描,恶意软件扫描,移动设备扫描,政策合规性审计,Web应用程序的测试,补丁审核等,它采用超过70,000插件扫描目标主机。OpenVAS(开放式漏洞评估系统)是一个全面而强大的漏洞扫描和漏洞管理解决方案的框架,它是开源和免费的。

网络安全公司也会开发自己的漏洞扫描工具,例如六方云工业漏扫系统,这是一款面向工控领域的漏洞扫描工具。能够全面、精准地检测信息系统中存在的各种脆弱性问题,包括各种安全漏洞、安全配置问题、不合规行为等,在信息系统受到危害之前为管理员提供专业、有效的漏洞分析和修补建议。其漏洞扫描过程是无损的,对工控系统和设备没有任何危害。六方云工业漏扫系统支持跨IT和OT的漏洞扫描,支持各种工控协议和工控系统及设备,具有海量的工控漏洞。

image.png

漏洞扫描有两种方式,第一种是直接扫描方式,每个漏洞对应一个漏洞扫描脚本,漏洞库即扫描脚本库,这种漏洞扫描方式存在一定风险,可能会对被扫描设备造成损坏,Nessus和OpenVAS就采用这种扫描方式。另一种是间接扫描方式,漏洞扫描工具首先调用设备识别指纹对目标设备进行识别,接着从设备信息库中查找到该设备,然后再通过该设备信息记录的漏洞编号从漏洞库中检索出漏洞,最后将漏洞信息、修复方案等展示给用户。这种扫描方式不会对设备造成任何影响,是无损的,六方云工业漏扫系统就采用这种方式。

2.2   漏洞库及漏洞信息共享平台

漏洞库是存储漏洞信息的数据库,是漏洞信息的集合。通常在漏洞扫描工具、等保检查工具箱中需要用到。每家安全公司的漏扫产品使用的数据库形式可能不太一样,如六方云漏扫产品用的是SQLite,Nessus和OpenVAS每条漏扫脚本对应一个文件,他们称之为插件。

网络安全产品中的漏洞库的信息输入大部分来自于开源漏洞信息共享平台,比如CNNVD、CNVD、NVD等,也可能来自安全厂商自己发现的0 Day漏洞。

2.2.1 国家信息安全漏洞库(CNNVD)

国家信息安全漏洞库,英文名称"China National Vulnerability Database of Information Security "简称"CNNVD",于2009年10月18日正式成立,是中国信息安全测评中心为切实履行漏洞分析和风险评估的职能,负责建设运维的国家信息安全漏洞库,面向国家、行业和公众提供灵活多样的信息安全数据服务,为我国信息安全保障提供基础服务。CNNVD是中国信息安全测评中心为切实履行漏洞分析和风险评估职能,在国家专项经费支持下,负责建设运维的国家级信息安全漏洞数据管理平台,旨在为我国信息安全保障提供服务。CNNVD通过自主挖掘、社会提交、协作共享、网络搜集以及技术检测等方式,联合政府部门、行业用户、安全厂商、高校和科研机构等社会力量,对涉及国内外主流应用软件、操作系统和网络设备等软硬件系统的信息安全漏洞开展采集收录、分析验证、预警通报和修复消控工作,建立了规范的漏洞研判处置流程、通畅的信息共享通报机制以及完善的技术协作体系,处置漏洞涉及国内外各大厂商上千家,涵盖政府、金融、交通、工控、卫生医疗等多个行业,为我国重要行业和关键基础设施安全保障工作提供了重要的技术支撑和数据支持,对提升全行业信息安全分析预警能力,提高我国网络和信息安全保障工作发挥了重要作用。

2.2.2 国家信息安全漏洞共享平台(CNVD)

国家信息安全漏洞共享平台(China National Vulnerability Database,简称CNVD)是由国家计算机网络应急技术处理协调中心(中文简称国家互联应急中心,英文简称CNCERT)联合国内重要信息系统单位、基础电信运营商、网络安全厂商、软件厂商和互联网企业建立的国家网络安全漏洞库。

建立CNVD的主要目标即与国家政府部门、重要信息系统用户、运营商、主要安全厂商、软件厂商、科研机构、公共互联网用户等共同建立软件安全漏洞统一收集验证、预警发布及应急处置体系,切实提升我国在安全漏洞方面的整体研究水平和及时预防能力,进而提高我国信息系统及国产软件的安全性,带动国内相关安全产品的发展。

CNNVD和CNVD两者都同步CVE的漏洞信息并翻译成中文,两者都接受漏洞报送,但是两者信息不会相互共享。两者独立收录的漏洞信息也不会和CVE同步。CNVD实际维护团队是恒安嘉新,CNNVD是正式的国家官方漏洞库,维护团队也是官方正式人员。

2.2.3 美国国家漏洞数据库(NVD)

美国国家漏洞数据库(NATIONAL VULNERABILITY DATABASE,简称NVD),NVD是使用安全内容自动化协议(SCAP)表示的基于标准的漏洞管理数据的美国政府存储库。此数据可实现漏洞管理,安全性测量和合规性的自动化。NVD包括安全检查表引用数据库,安全相关软件缺陷,错误配置,产品名称和影响度量标准。NVD是使用安全内容自动化协议(SCAP)表示的基于标准的漏洞管理数据的美国政府存储库。此数据可实现漏洞管理,安全性测量和合规性的自动化。NVD包括安全检查表引用数据库,安全相关软件缺陷,错误配置,产品名称和影响度量标准。

NVD最初创建于2000年(称为Internet - Attackingization of Attacks Toolkit或ICAT),经过多次迭代和改进,并将继续提供服务。NVD是NIST计算机安全部门,信息技术实验室的产品,由美国国土安全部国家网络安全部门赞助。

NVD的漏洞信息来源基本都是CVE,CVE是非官方的民间组织,其实是MITRE公司在负责维护,总的来说漏洞的编号是CVE做的,NVD会同步数据,补充更多的信息,我们长期观察下来得出的结论是:CVE网站上的信息更及时,但是信息匮乏;NVD提供的是同样信息,只是不及时但更准确,更详细。

image.png

图:NVD与CVE关系

其实对我们来说就将NVD和CVE当成是一个组织好了,毕竟提供的数据是同一套。

NVD的每条漏洞信息会对应一条或多条CPE信息(在我们的漏扫工具和等保工具箱中称之为设备库)。CPE (Common Platform Enumeration)即“通用平台枚举”,其实是一套规范,用来描述漏洞在哪个资产上。需要说明的是CNNVD和CNVD的维护的漏洞不包含CPE信息。

CPE2.2标准格式为:

cpe:/<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>

part:资产类型(硬件、软件、系统等)

vendor:厂商

product :产品名称

version:版本号

2.2.4 漏洞编号

每个漏洞共享平台都会为每个漏洞分配一个唯一的编号。CNNVD的漏洞编号为:CNNVD-年月-顺序号(如CNNVD-201907-1598);CNVD的漏洞编号为:CNVD-年份-顺序号(如CNVD-2019-26836);NVD的漏洞编号为:CVE-年份-顺序号(如CVE-2019-14770)。

各漏洞平台也会相互引用漏洞信息(美国的NVD相对强大、权威,因此都是CNNVD和CNVD在同步引用NVD)。如CNVD的CNVD-2019-26836漏洞与NVD的CVE-2019-14770漏洞是同一个漏洞,CNNVD的CNNVD-201907-1598漏洞与NVD的CVE-2019-1901漏洞是同一个漏洞。

2.3   渗透测试工具与POC

为了发现系统系统存在的不足之处,还可以利用渗透测试的方法进行检测。渗透测试完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节,能直观地让系统管理员知道自己网络所面临的问题。所以渗透测试是安全评估的方法之一。

渗透测试是一个渐进的并且逐步深入的过程。自动化安全测试工具在渗透测试中扮演了重要的角色,但是成功执行一个渗透测试不仅仅是需要安全工具,更多的是靠人工、思维、经验、灵感。

工控系统渗透测试应选择不影响工控系统正常运行的攻击方法进行的测试(如离线仿真环境)。

要成功进行漏洞利用渗透测试,需要有相应漏洞的POC。POC(proof of concept 观点验证程序)是漏洞验证程序,它可能由验证过程文档及验证脚本等构成。渗透测试工具就是集成了POC的漏洞验证工具。

2.4   防火墙、审计和入侵检测规则

黑客往往利用信息系统存在的漏洞发起攻击,哪如何在网络中及时发现黑客的漏洞利用攻击行为呢?这就可以使用防火墙、审计、IPS、IDS等产品。这些产品集成了IPS入侵检测规则,能够及时发现漏洞利用攻击行为。

Snort和Suricate是两个比较优秀的开源入侵检测引擎,许多防火墙、审计、IPS、IDS等产品内部使用的入侵检测引擎都可能是Snort或Suricate。

Snort和Suricate都有自己的入侵检测规则格式,因Suricate是由Snort发展而来,因此;两者的入侵检测规则也基本相似,Suricate可兼容Snort规则。

除了购买Snort和Suricate官方的入侵检测规则,我们也可以自己编写,要编写漏洞利用的入侵检测规则,首先需要获取到该漏洞的POC才可以做到。

入侵检测规则库和前面提到的漏洞库、设备库、指纹库,以及其它安全产品中的白名单库、黑名单库等统称为安全产品的“特征库”。

2.5   漏洞挖掘

对于已知漏洞,可用漏扫工具检测,可以用渗透测试工具进行验证。那么对于系统或设备存在的未知漏洞又该如何发现呢?这就得依赖漏洞挖掘了,漏洞挖掘通常采用漏洞挖掘工具自动挖掘,也可以采用人工的方式进行挖掘,或者两者结合挖掘。

漏洞挖掘工具一般采用模糊测试,使用漏洞挖掘工具通常可挖出拒绝服务类漏洞,堆栈溢出类漏洞等。模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。在模糊测试中,用随机坏数据(也称做 fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。模糊测试的技巧在于,它是不符合逻辑的:自动模糊测试不去猜测哪个数据会导致破坏,而是将尽可能多的杂乱数据投入程序中。模糊测试是一项简单的技术,但它却能揭示出程序中的重要 bug。它能够验证出现实世界中的错误模式并在您的软件发货前对潜在的应当被堵塞的攻击渠道进行提示。

人工漏洞挖掘方法相对灵活,比如白盒测试、软件逆向等。人工挖掘更容易挖到权限绕过类漏洞、代码注入类漏洞等。

3.   漏洞分类与评分、分级

如何评价一个漏洞对系统的危害方式,以及危害的程度,这就需要对漏洞进行分类和评分、分级。

3.1   CNNVD漏洞分类

CNNVD 将信息安全漏洞划分为26 种类型,分别是:配置错误、代码问题、资源管理错误、数字错误、信息泄露、竞争条件、输入验证、缓冲区溢出、格式化字符串、跨站脚本、路径遍历、后置链接、SQL 注入、注入、代码注入、命令注入、操作系统命令注入、安全特征问题、授权问题、信任管理、加密问题、未充分验证数据可靠性、跨站请求伪造、权限许可和访问控制、访问控制错误、资料不足。

漏洞分类有一个层次关系,如下图。该分类模型包含多个抽象级别,高级别漏洞类型可以包含多个子级别。低级别的的漏洞类型提供较细粒度分类。

image.png

图:漏洞分类层次树

 

3.2   CNNVD漏洞评分

CNNVD漏洞评分包括两组指标,分别是可利用性指标组和影响性指标组。可利用性指标组描述漏洞利用的方式和难易程度,依据脆弱性组件进行评价,影响性指标组描述漏洞被利用后造成的危害,依据受影响组件进行评价。

可利用性指标组反映脆弱性组件的特征,即漏洞利用的难易程度和技术要求等。可利用性指标组包含四个指标,分别是攻击途径、攻击复杂度、权限要求和用户交互,每一个指标的取值都应当根据脆弱性组件进行判断。漏洞的可利用性评分详见《CNNVD漏洞分级指南》。

影响性指标组反映漏洞成功利用后对受影响组件造成的影响。漏洞的成功利用可能危害一个或多个组件,影响性指标组的分值应当根据遭受最大危害的组件进行评定。如果影响范围未发生变化,影响性指标组反映的是对脆弱性组件的危害;如果影响范围发生变化,则可能对脆弱性组件和受影响组件均会造成破坏,影响性指标,则可能对脆弱性组件和受影响组件均会造成破坏,影响性指标组组反映对遭受破坏反映对遭受破坏最严重的组件的影响。最严重的组件的影响。影响性指标组包括三个指标,分别是机密性影响、完整性影响和可用性影响。漏洞的影响性评分详见《CNNVD漏洞分级指南》。

漏洞的危害可采用评分或分级的方式进行评价,漏洞的评分由可利用性评分和影响性评分两部分共同组成,漏洞的危害等级可根据其评分进行划分。

漏洞的分值在0到10之间,漏洞的评分规则如下:

(1)如果可利用性评分+影响性评分>10漏洞评分=10

(2)漏洞评分=可利用性评分+影响性评分

(3)漏洞分值保留到小数点后1位,如果小数点后第二位的数字大于0,则小数点后第一位数字加1。

CNNVD将漏洞的危害等级从高至低依次分为超危、高危、中危和低危,划分方式如下:

image.png

图:CNNVD漏洞分级

3.3   NVD漏洞分类与评分分级

NVD采用CWE对漏洞进行分类。CWE (Common Weakness Enumeration)即通用弱点枚举,是对漏洞的分类规范,大概有一千多个分类,而且从三个个角度(开发者,研究人员,架构师)来划分漏洞类型归属的树状,详情可参考NVD官方网站。

NVD的漏洞评分叫做“通用漏洞评分系统(CVSS)”,它提供了一个开放框架,用于表达漏洞的特征和影响。通用漏洞评分系统有2个版本分别为:v2.0和v3.0标准。欲了解CVSS评分计算方法详细情况,请参考NVD官方网站。

image.png

图:CVSS v2.0和v3.0漏洞分级表

4.   参考资料

(1)    《CNNVD 漏洞分类指南》;

(2)    《CNNVD漏洞分级指南》;

(3)    NVD官网,https://nvd.nist.gov

(4)    六方云LinSec系列产品资料;

(5)    《漏洞挖掘基础知识简介》:https://baijiahao.baidu.com/s?id=1594186411523778706。