您的位置:首页 > 参评方案展示 > 网络安全

上海交通大学:VulTracker漏洞管理与自动化跟踪平台

  编辑点评:本文描述了一个漏洞管理管理和自动化追踪系统的设计、实现与部署。对于学校改善信息安全提供了很好的参考。该系统不仅可以使用自行开发的漏洞检测代码,还可以利用现有漏洞扫描器加大扫描力度。其自动化追踪系统可大大降低管理人员劳动强度,提供工作效率。

  实际部署已经验证了其有效性。

  1 引言

  漏洞管理是信息安全管理中的一项重要工作。漏洞管理涵盖了资产发现、漏洞扫描、漏洞评估、漏洞修复、补丁管理、合规检查等全过程[1],面对不断涌现的新漏洞,漏洞管理工作面临着前所未有的压力,通过自动化的手段提高漏洞管理效率成为众多企业和机构的迫切需求。

  端口扫描和服务发现技术已相当成熟,一些开源和商业软件也已能做到对主机漏洞和Web漏洞的自动化检测,但对于漏洞发现之后的修复管理和进度跟踪仍然十分欠缺[2]。一些商业产品在主机漏洞扫描软件基础上增加了漏洞管理功能,但可扩展性受制于其单一的检测引擎。由于漏洞来源和种类的多样性,使用现有方案很难在一个统一的平台上对所有漏洞进行有效管理。

  本文针对漏洞管理工作面临的困境,设计并实现了Vul Tracker漏洞自动化跟踪平台。基于此平台可使用任意语言编写的测试程序对已知漏洞进行复测,无需人工介入即可自动跟踪漏洞修复状态,并可对接IT资产数据库实现责任人归属和通报流程全面自动化,大幅提升漏洞处置效率。

  2 技术背景

  2.1 漏洞扫描

  信息系统安全漏洞是长久以来一直存在的问题,围绕着漏洞检测出现了众多工具和系统,为安全研究和管理提供了极大便利。

  漏洞扫描过程通常分为服务发现和漏洞检测两个阶段。服务发现即通过ping、SNMP和端口扫描等方法搜索网络中的主机和设备,以及它们开放的端口和服务种类。漏洞检测一般又分为主机漏洞检测和Web漏洞检测。主机漏洞检测发现操作系统及服务器软件漏洞,通过对服务端口远程测试,或在提供系统登录口令的情况下进行认证扫描。Web漏洞检测针对网站进行爬取,然后对各页面做SQL注入等常见Web漏洞利用测试。

  最知名的主机漏洞扫描软件有Nessus、Nexpose和开源的OpenVAS,他们都具备从服务发现到漏洞检测全过程自动化的能力,支持认证和非认证扫描,且具备一定的Web漏洞检测功能。而针对网站漏洞,专业的Web漏洞扫描器具备更强的检测能力,常用的有Acunetix WVS和IBM Security AppScan等。尽管这些自动化工具极大简化了漏洞扫描工作,但它们普遍存在较高的漏检[3, 4],且在结果中包含众多低优先级的问题和误报,后续对报告解读处理的工作量庞大。

  除了准确率偏低以外,性能是现有自动化扫描软件的另一大瓶颈,它们通常无法适用百万目标甚至更大范围的扫描,利用开源软件自行构建漏洞扫描流程成为必需。服务发现阶段,ZMap提供了极佳的端口扫描性能,利用千兆链路甚至可在45分钟内遍历整个IPv4空间的特定端口[5],而Nmap丰富的NSE脚本则可实现强大的服务探测、信息获取、密码穷举和部分漏洞利用功能。

  新的漏洞公开后,许多安全研究人员会编写相应的验证或漏洞利用程序,所用的语言五花八门[6],常见的有Python、C,以及在Metasploit框架下开发使用的Ruby。Web类型的漏洞则通常直接给出攻击所用的HTTP请求。对这些漏洞利用代码修改定制后,可用作无害的漏洞检测。

  2.2 漏洞管理

  尽管漏洞扫描是漏洞管理中的一个重要环节,但从漏洞被发现到修复仍有很长的距离。漏洞扫描结果通常根据漏洞类型和CVSS评分确定优先级,而漏洞的实际影响与访问控制、防护体系、业务及价值密切相关,合理的漏洞评级一般需要人工评定。漏洞修复工作则更为复杂,需由开发和运维团队共同配合实施,此过程也需要密切的进度跟踪[7]。

  安全公司已推出的漏洞管理产品大多基于各自的漏洞扫描软件进行延伸,如Rapid7的Nexpose和以Nessus为核心的Tenable SecurityCenter,通过按计划执行扫描任务记录变化趋势,漏洞修补则以工单形式派发。Qualys基于云的SaaS漏洞管理服务,可对其扫描到的漏洞自动测试修复状态。尽管这些商业解决方案将漏洞扫描与管理集成简化了用户操作,但也将其漏洞管理能力限制在了由其单一的扫描引擎所能发现的漏洞范围。软件自动化所能发现的漏洞仅占所有漏洞的一小部分,当下漏洞信息来源多种多样,除了企业自身利用各种安全工具发现的以外,许多第三方平台,如乌云、补天、漏洞盒子和CNVD,汇聚了众多白帽黑客提交的各式漏洞。漏洞种类也不再局限于服务器软件漏洞和弱口令等,信息泄露、逻辑缺陷、后门植入等已超出传统漏洞扫描范畴。现有漏洞管理产品与第三方集成侧重资产、工单和防火墙设备,即将其漏洞扫描结果输出而非整合第三方的漏洞检测能力和漏洞信息。

  正因为目前没有一个很好的漏洞管理解决方案,许多企业仍使用Excel表格人工记录漏洞并跟踪处理进度[2],或者使用服务工单系统和软件开发常用的缺陷跟踪系统来管理漏洞。这些系统并非为漏洞管理设计,缺乏必要的自动化和集成,增加了人工投入。一些开源软件已尝试整合扫描器资源,如Dradis[8]能解析十多种漏洞扫描器的输出,生成合并的报告,但它无法主动调用扫描器进行扫描,Seccubus[9]则可主动调动多款扫描器定期执行扫描任务并比较结果,但它所能对接的扫描器种类较少,且不能复测单个漏洞,重复执行整个任务的时间和资源花销决定了其重复频率不可能太高。此外,两款软件仍然没有解决扫描器之外其他渠道获得的漏洞信息管理问题。

  3 系统设计与实现

  3.1 设计要求

  针对企业信息系统漏洞管理的现实需求和现有解决方案的缺陷,我们设计并开发了Vul Tracker漏洞管理和自动化跟踪平台,平台设计的基本要求如下:

  1)能够管理和跟踪各种来源提交的安全漏洞,包括使用扫描器自动检测的、人工渗透测试发现的,以及乌云、补天、CNVD等第三方渠道报告的漏洞;

  2)通过程序自动检测漏洞是否已修复,或者已消失的漏洞是否再次出现;具有较高的检测频率,及时反映漏洞状态变化,并且能够适应不断增长的漏洞数量,检测性能具有可伸缩性;

  3)具备开放的接口,能够与现有的IT管理系统和流程对接;

  不同于现有漏洞管理系统侧重于对扫描器的集成,Vul Tracker旨在解决已发现漏洞的跟踪处置问题。

  3.2 系统架构

  Vul Tracker平台整体架构如图1。漏洞数据库记录所有已知的信息系统漏洞及其相关信息,漏洞信息可通过Web界面录入、编辑和查询。

  每个漏洞对应一个用于检测其是否已修复的检测程序路径和启动参数,任务管理程序自动执行检测程序并将结果更新到数据库中。未修复状态的漏洞每两小时复测一次,而已修复状态的漏洞系统也仍会每12小时回访一次以防在之前测试中认为已修复的漏洞再次出现,这种情况在网络和服务不稳定时较为常见。任务管理程序以多进程方式实现并行,从而容易扩展到多机分布式运行,只需能够访问共享的数据库即可。各进程每次获取一个等待执行的检测任务,进程间的互斥由数据库锁机制保证。

  一系列数据接口实现漏洞数据库与外部系统的对接,已实现的接口程序包括:1)依据IT资产数据库中的IP地址分配和域名注册信息自动识别漏洞所在的信息系统、服务器或设备所在位置、归属部门及负责人;2)根据各部门登记的信息安全联络人自动发送邮件提醒;3)通过API进行漏洞批量导入;4)提供接口允许其它IT管理系统访问本平台维护的漏洞数据,以便查询和生成统计报表。

  Vul Tracker完全使用PHP语言开发,数据存储在MySQL数据库中,因而具有跨平台的特性,但考虑到大多数漏洞检测程序更便于在Linux环境下开发和运行,一般使用Linux系统部署本平台。

  图1 Vul Tracker系统架构

来源:CERNET第二十三届学术年会论文集作者:章思宇、姜开达