摘要:本文尝试从多个视角一起探讨一下漏洞扫描业务相关的诸多基本问题。 本文分享自华为云社区《5W2H 分解漏洞扫描 - WHAT》,作者: water^3 。
首先什么是漏洞?
国内外各种规范和标准中关于漏洞(也称脆弱性,英文对应Vulnerability)的定义很多,摘录如下:
- 互联网工程任务组RFC4949[1]: 系统设计、部署、运营和管理中,可被利用于违反系统安全策略的缺陷或弱点。
- 中国国家标准 信息安全技术-网络安全漏洞标识与描述规范 GB/T 28458-2020[2]: 网络安全漏洞是网络产品和服务在需求分析、设计、实现、配置、测试、运行、维护等过程中,无意或有意产生的、有可能被利用的缺陷或薄弱点。
- 中国国家标准 信息安全技术-术语 GB/T 25069-2010[3]: 脆弱性(Vulnerability)是资产中能被威胁所利用的弱点。
- 美国国家标准与技术研究所NIST[4]: 信息系统、系统安全规程、内部控制或实施中可能被威胁源利用或触发的弱点。
- 国际标准化组织-信息安全管理体系 ISO27000[5]: 资产或控制中可能被一个或多个威胁利用的弱点。
- 国际标准化组织-漏洞披露 ISO29147[6]: 违反默示或明示安全策略的产品或服务的功能性行为。
- 维基百科[7]: 计算机安全中,漏洞是威胁可以利用的弱点,例如攻击者可利用漏洞在计算机系统内跨越权限边界。
- 百度百科[8]: 漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,可以使攻击者能够在未授权的情况下访问或破坏系统。
从各种定义中可以得到漏洞的一系列共性描述:系统的缺陷/弱点、可能被利用于违反安全策略、可能导致系统的安全性被破坏。 漏洞会涉及管理、物理、技术多种类型,我们说的漏洞一般默认是指技术型的漏洞。
如何描述具体漏洞?
针对已公开披露的漏洞
通常以CVE编号进行描述。为了达成交流共识,更好的识别、定义和修复已知漏洞,由MITRE公司发起的公共漏洞枚举CVE项目[9],可以为每个典型的软硬件产品/公共组件的已知漏洞分配一个唯一的CVE编号,这一做法得到全球主流IT厂商/组织的支持(截止目前全球范围内已有近200个CVE编号授权机构[10]),CVE已成为产业界的国际事实标准。
需补充的是,美国国家漏洞库NVD[11]全面兼容了CVE并提供了若干增强信息:如漏洞的分类、影响等级、受影响的供应商产品版本列表等。CVE存在的价值在于支撑公共安全预警和协同修复,它一般不含漏洞利用信息。通俗一点的描述就是:通知!XX供应商的XX产品的XX版本上有XX已知漏洞,影响评分XX分,如果您使用了受影响的产品版本,请尽快修复!修复版本为XX! 也正是基于这种正向的预警的属性,CVE漏洞基本都已有较成熟的修复或缓解方案,以帮助受影响的用户减少不必要的伤害。
此外中国国家信息安全漏洞库CNNVD[12]也兼容CVE,但它使用的是CNNVD编号,精确到年月。例如:CNNVD编号CNNVD-202110-1568映射到CVE编号CVE-2021-22965,它们描述的是同一个漏洞 。
已公开披露的漏洞只是冰山一角,其主要涉及面向个人或企业的公共的商用软硬件产品或开源软件/组件。由于软硬件的使用场景不同,有些已知漏洞只会受限披露甚至不会被披露。而由于软硬件系统的复杂性与多样性,未知的漏洞则会更多。业界安全研究人员、软件厂商的测试部门每天都在持续不断的发现着新漏洞,正如体检中心每天都会发现新病人。
针对未公开披露的漏洞
通常会采用类型描述,而不会分配具体的CVE编号。MITRE公司的安全研究人员分析了大量已公开披露的CVE漏洞,抽象化并提取了公共缺陷枚举CWE[13]用来对此类型的漏洞进行描述。当前CWE项目中的缺陷已有超过900个小类,其中与软件开发相关的有400多个小类,40个大类。缺陷是漏洞的根因,因此每一个CVE编号都可以映射到一个或多个CWE编号。其他典型的可用作类型描述的还有针对Web应用系统的OWASP Top 10[14]。
比较典型的是基于具体业务的应用程序的漏洞似乎永远不会被主动公开披露,只会悄悄被修复。这是为了避免企业商业形象受损,另外也因为业务应用一般不是标准产品,具有独特性,不涉及协同修复的属性(即便涉及,也在小范围内)。除非漏洞已被利用,造成了公共损失,不得不进行披露,否则知道这种负面信息的人越少越好是共识。
最后回到什么是漏洞扫描?
大部分业界规范或标准中用到的相关概念是漏洞评估,并直接将漏洞扫描作为一种选择和要求。
以国际标准ISO/IEC 27005[15]信息安全风险管理为例,在其附录D2中给出相关描述:评估技术型漏洞的方法有哪些?给出的第一个建议就是“使用自动化漏洞扫描工具”,另外三条建议分别是: 安全测试评估、渗透测试、代码审计。
在中国国标GB/T 28449的”附录E 等保测评方式及工作任务“的“E.4 测试”部分中则明确指出:需要对服务器、数据库管理系统、网络设备、安全设备、应用系统等进行漏洞扫描。此外还需要对应用系统完整性、保密性进行协议分析;对系统进行内部和外部的渗透攻击等等。
而在金融行业支付卡数据安全标准PCI DSS[16]针对漏洞扫描给出了两个较为明确可操作的定义,如下面2图。
对应用程序漏洞的安全评估
对系统从外部及内部的漏洞扫描
因此笔者认为漏洞扫描指的就是通过工具去扫描远端或本地运行的系统的行为,以期达到快速识别系统中已知或未知漏洞的目的。它的关键是对漏洞的识别进行工具化,降低识别漏洞的人工参与和技术门槛。漏洞扫描是漏洞评估的一种方法。漏洞扫描通常是渗透测试过程中的一个前置步骤。
与漏洞扫描相关的工具通常有哪些呢?
在知名信息技术咨询公司Gartner的定义中,按扫描结果类别的不同可以大致分为AST(Application Security Testing)应用安全测试类工具、SCA(Software Composition Analysis)软件成分分析类工具、VA(Vulnerability Assessment)漏洞评估工具, AST工具用于测试发现应用程序未知的安全缺陷,SCA工具用于发现静态软件中引用的开源组件的已知漏洞,VA工具则通常用于发现动态运行的系统中是否存在已知的漏洞。
按扫描对象状态的不同又可以划分为静态工具和动态工具,静态工具扫描源代码或二进制包,动态工具扫描运行的系统。静态工具包括静态Static-AST工具(SAST), 源码SCA工具, 二进制SCA工具。 动态工具包括 交互式Interactive-AST工具(IAST)、动态Dynamic-AST工具(DAST)、模糊测试(Fuzzing)工具、漏洞评估(Vulnerability Assessment)工具。 在这其中,受到资源可获得性的限制,在系统上线以后经常会被用到的漏洞扫描工具主要是: DAST工具和VA工具, 而这也正是PCI DSS实践指南中列出的。
WHY 为什么做漏洞扫描?
漏洞扫描能发现漏洞,扫描的结果能用来支撑漏洞评估、漏洞修补、风险评估相关工作,以降低系统安全性的风险。还有其他目的吗? 且听下回分解。
文末福利:华为云漏洞扫描服务 VSS 基础版限时免费体验>>>
参考链接:
[1] https://datatracker.ietf.org/doc/html/rfc4949
[2] http://std.samr.gov.cn/gb/search/gbDetailed?id=B4C25880C3E91CB3E05397BE0A0A92D0
[3] http://std.samr.gov.cn/gb/search/gbDetailed?id=71F772D7D71AD3A7E05397BE0A0AB82A
[4] https://csrc.nist.gov/glossary/term/vulnerability
[5] https://www.iso.org/standard/73906.html
[6] https://www.iso.org/standard/72311.html
[7] https://en.wikipedia.org/wiki/Vulnerability_(computing)
[8] https://baike.baidu.com/item/漏洞/1688129
[9] https://cve.mitre.org/
[10] https://www.cve.org/PartnerInformation/ListofPartners
[11] https://nvd.nist.gov/
[12] http://www.cnnvd.org.cn/web/index.html
[13] https://cwe.mitre.org/
[14] https://owasp.org/www-project-top-ten/
[15] https://www.iso.org/standard/75281.html
[16] https://www.pcisecuritystandards.org/document_library
点击关注,第一时间了解华为云新鲜技术~
|