Oracle数据库补丁问题研究

2014-01-24 12:25刘立康
电子设计工程 2014年20期
关键词:版本号安全漏洞补丁

姜 文,刘立康

(1.文思海辉技术有限公司西安分公司 陕西 西安710075;2.西安电子科技大学 通信工程学院,陕西 西安710071)

Oracle数据库是一个对象一关系数据库管理系统。它提供开放的、全面的、和集成的信息管理方法。Oracle数据库具有场地自治性(Site Autonomy)和实现数据存储透明性。由于这些特性,Oracle数据库各组件存在安全漏洞[1],漏洞可能会被各种类型的所协议利用,使未经身份验证的远程攻击者可利用漏洞影响Oracle数据库各版本的机密性、完整性、可用性。同时数据库在用户使用过程中会不断暴露各种功能和性能BUG,也会影响Oracle数据库的正常使用。

为了解决这些问题,Oracle的技术人员编写各种补丁。除去修改功能和性能BUG的补丁,还有应对安全漏洞的安全补丁。Oracle官方网站会定期向用户提供不同版本和不同操作系统环境下的Oracle补丁。

文中详细叙述了Oracle数据库补丁类别和各类补丁的特点,Oracle补丁管理工具Opatch,最后介绍一个实施Oracle安全补丁的安装实例。实际应用表明及时实施补丁安装可以确保Oracle数据库系统安全稳定运行。

1 Oracle数据库补丁类别

Oracle数据库的补丁通常有以下几种[2-6]。

1.1 PSR(Patch Set Release)和 PSU(Patch Set Update)

PSR(Patch Set Release)是按 Oracle数据库标准产品发布“补丁包“。Oracle数据库的主要版本号是8i,9i,10g,11g,每一版本会陆续有两至三个发行版,如 10.1,10.2,和 11.1,11.2分别是10g和11g的两个发行版。对于每一个发行版软件中发现的BUG,给出相应的修复补丁。每隔一定时期,会将所有补丁集成到软件中,经过集成测试后,进行发布,也称为PSR(Patch Set Release)。

Oracle公司对处于标准技术支持的产品不定期地提供PSR,每个PSR修改5位版本号的第4位。以11.1为例,11.1.0.1.0是基础发行版,11.1的PSR为11.1.0.4.0。

这些在主版本号上发布的补丁集,修复了较多的Bug,可能会包含一些增强功能(Enhancement)。比如11.2.0.1是一个主版本,那么11.2.0.2、11.2.0.3就是2个不同的Patch set。这种补丁集经过了严格的集成测试,也是累积型的,推荐安装最新的Patch Set。

由于数据库在信息系统的核心地位,对其性能和安全性的要求非常高。应及时安装所有重要补丁(Interim Patch),但是这些补丁(Interim Patch)之间可能相互影响,从而影响系统的性能。而等待下一个版本PSR,一般又需要一年时间。因此,出现了 PSU(Patch Set Update)。

PSU具有如下特点:

1)Oracle选取被用户下载数量多的,并且被验证过具有较低风险的补丁放入每个季度的PSU中。每个PSU中包含25至100个重要补丁,作为一个整体进行严格测试,解决冲突问题,保证系统的稳定性。PSU不仅包括对功能、性能修复的一般补丁,也包括最新的安全补丁CPU。

2)PSU是PSR的补充,在两次PSR发布之间发布多个PSU,加快更新速度。每个PSU修改5位版本号的第5位。每个数据库版本都有自己的PSU,PSU版本号体现在数据库版本的最后一位,比如10.2.0.5的PSU是10.2.0.5.3,而11.2.0.2的PSU则是11.2.0.2.2。

3)PSU定期(一年四期)发布,发布日期与CPU发布日期相同。由于PSU包括同期发布的CPU,只要安装PSU即可。(对部分平台,仍提供单独的CPU,供客户选择)

4)PSU是累积型的,最新的PSU自动包括以前所有PSU的内容。

5)个别补丁(Interim Patch)与PSU的关系分为三类:完全独立;是PSU的一部分;与PSU冲突。第一类的个别补丁与PSU相互没有影响,可以独立的安装或删除。对于第二类,在安装PSU之后,自然没有必要安装。若在PSU之前已安装,则在安装PSU时会被自动删除。对于第三类个别补丁,如在PSU之前已安装,必须在安装PSU时删除。

1.2 CPU(Critical Patch Update)补丁

除去修改功能和性能BUG的补丁,还有应对安全漏洞的安全补丁。Oracle公司定期(一年四期)发布安全补丁集,称之为CPU(Critical Patch Updates)。安全补丁用来修复软件的安全漏洞。这类问题本来不属于软件错误,在正常使用中不会出现任何问题。但是别有用心的人可以通过运行非常精巧设计的代码,绕过数据库系统的安全管理机制,达到非授权存取的目的。一个CPU内包含了对多个安全漏洞的修复,并且也包括相应必需的非安全漏洞的补丁。CPU是累积型的,其中包括之前发布的所有CPU的内容。

Oracle公司只对处于标准技术支持和延长支持期间的产品提供CPU更新,对处于维持支持范围的产品不提供新的CPU.(对于9.2以前的版本,只对处于ECS和EMS期间的版本提供CPU更新。)

2012年10月CPU (Critical Patch Update)已经更名为Security Patch Update(SPU)

1.3 Interim Patch

Interim Patch是常说的小补丁,也称为个别补丁(oneoff patch 或 Patch Set Exception)。

由于PSR的发行有一定间隔,如果有些Bug对用户有比较大的影响,Oracle公司也会向用户公开和提供这些补丁,而对于最终补丁发行版而言,由于不再有下一个PSR,当发现影响系统的新Bug时,个别补丁成为唯一选择。

在某个PSR之后编写的补丁,在还没有加入到下一个PSR之前,以个别补丁(Interim Patch)的形式提供给客户。某个个别补丁是针对Oracle公司发现的或客户报告的某一个BUG编写的补丁,多个个别补丁之间同时安装可能会有冲突。即便在安装时没有发现冲突,由于没有进行严格的集成测试,运行过程中由于相互作用而发生意外也不能完全排除。这种补丁推荐在测试库上测试无误后再安装在数据库上。

个别补丁 (Interim Patch)是针对特定的情况下触发的Bug,没有经过Oracle系统的认证,Oracle会根据Bug的严重性和需要在下一次的patch set中包含此Interim patch。Interim patch对环境和版本有特定的要求,即不同操作系统平台和数据库版本的会有不同的Interim patch。

1.4 Com posite Patch

从2012年4月份的 Database PSU 11.2.0.3.2和11.2.0.2.0.7开始,推出一种新的概念叫Composite Patches。这是一种新型的补丁包,它不同于其他的累积型补丁包。如果是第一次安装Composite Patches,那么该Composite Patches所包括的全部补丁都会被安装,后续安装的Composite Patches,只会安装对比前一次Composite Patches有变化的部分和新增加的补丁。

Composite Patche的改进包括减少补丁安装时间,减少回滚以前应用的overlay patches的需要。 新的Composite Patches格式,使以前PSU应用的overlay patches和新安装的PSU并存成为可能。

1.5 diagnostic patch

诊断用补丁(diagnostic patch)不是用来解决问题的,而是用来寻找问题。这类补丁只在Oracle技术支持部门要求安装时,才需要安装。在得到需要的诊断信息后,应立即卸载这一补丁。

2 Oracle补丁管理工具

从9.2版开始,Oracle公司设计实现了个别补丁(Interim Patch)安装管理工具Opatch[7-8],使用称为 inventory的系统数据结构(严格说是与oui共享inventory),集中管理所有已安装的个别补丁;个别补丁的安装和卸载都使用Opatch命令完成,冲突检测也由Opatch在安装时自动完成;提供列表命令可以很方便得到已安装个别补丁的信息。10g(10.1)和11g(11.1)版本中,Opatch作为一个标准工具,在软件安装时自动安装。(安装在$ORACLE_HOME/OPatch下。)而对于9.2版,需要从metalink下载Opatch。无论数据库是哪一个版本,系统中是否已经安装Opatch,在使用之前,应从metalink下载最新版本的Opatch。由于系统实现的问题,11.1使用的Opatch与之前版本(10.1和9.2)使用的Opatch不兼容,不能混用。

Opatch命令的存放位置在$ORACLE_HOME下的Opatch目录下。

Opatch命令格式为:

Opatch[][-h[elp]]

命令有:apply(安装个别补丁)、rollback(卸载个别补丁)、lsinventory(对 inventory 进行列表)、query(显示某一个别补丁的详细信息)、version(显示Opatch版本信息)。在 Opatch目录下,有用户使用指南文件(Users_Guide.txt),其中有详细的命令格式和使用示例。Opatch执行操作时,除在屏幕输出结果外,还生成日志文件。

Opatch也用于安装管理PSU补丁和CPU安全补丁。

3 实施Oracle安全补丁的安装实例

本文环境为:Suse Linux 10 x86,Oracle 11g,Oracle 数据库版本为11.1.0.7.0。Oracle数据库自带的补丁管理工具是Opatch,工具的版本是11.1.0.6.0。本文选择的补丁是安全补丁CPU-Oct-2012(2012年10月Oracle公司发布的CPU补丁),对应的安装包是:p14275623_111070_LINUX.zip。实施安装步骤为Oracle系统漏洞扫描,Opatch工具升级和Oracle补丁安装。

3.1 安全扫描工具(绿盟扫描软件)扫描Oracle系统

绿盟远程安全评估系统 (NSFOCUS Remote Security Assessment System, 简称:NSFOCUSRSAS)是一个好的“漏洞管理专家”,使用绿盟扫描软件对Oracle系统进行扫描,可发现表1所示的漏洞。

表1 绿盟扫描漏洞列表Tab.1 The table of the vulnerabilities to the NSFOCUSRSAS

CVE的 英 文 全 称 是 “Common Vulnerabilities&Exposures”公共漏洞和暴露。CVE就像是一个字典表,CVE是安全信息共享的“关键字”。如果在漏洞报告中指明的漏洞有CVE名称,就可以快速地在任何其它CVE兼容的数据库中找到相应修补的信息,解决安全问题。

绿盟扫描结束之后,会生成一个扫描报告,对扫描出来的每一条漏洞都会给出相应的受影响Oracle数据库版本号、相应的漏洞描述以及解决建议。用户可以根据扫描报告给出的建议来改进自己的系统。

3.2 Opatch工具升级

使用Opatch工具打CPU补丁,升级数据库到11.1.0.7.x时,就必须要求Opatch的版本达到11.1.0.8.0以上,而目前的Opatch的版本是11.1.0.6.0达不到所需的要求。如果不升级Opatch工具的版本就直接使用原有的Opatch工具实施安全补丁安装,实施过程中会出现:Opatch failed with error code 73,提示Opatch工具的版本过低。

更新Opatch工具需要从Oracle官方网站上下载高版本的Opatch。本文下载的Opatch安装包为p6889880_111070_LINUX.zip,Opatch安装包解压后覆盖到 ORACLE_HOME下的Opatch目录。 当然覆盖之前,最好将原有的Opatch工具备份一下。升级后的Opatch工具的版本是11.1.0.9.9。

3.3 实施Oracle安全补丁

实施Oracle补丁安装步骤如下所示:

1)确认Oracle数据库与监听已经关闭,分别执行指令lsnrctl status查看监听是否已经停止,以及执行指令ps-ef|grep oracle查看Oracle数据库是否还有进程在启动中,如果还有进程未停止,则执行指令:kill-9进程号,杀掉未停止的进程。如果在仍有进程处于未停止的状态下,就实施Oracle安全补丁安装,实施过程中会出现:Opatch failed with error code 42,提示Oracle数据库未停止;

2)将Oracle安全补丁安装包p14275623_111070_LINUX.zip拷贝至 opt路径下, 使用指令 unzip 14275623_111070_LINUX.zip解压Oracle安全补丁安装包;

3)在/opt/14275623路径下执行指令$ORACLE_HOME/Opatch apply,安装Oracle安全补丁14275623,执行结果显示如下内容(由于显示内容过多就不全部列出)。显示结果主要包括如下内容:

1)Oracle数据库相关目录的配置信息。

2)Opatch工具的版本信息:11.1.0.9.9和OUI版本信息:11.1.0.7.0。

3)Log文件的定位信息和输出文件的定位信息。

4)Oracle数据库的版本信息:Oracle Database 11g 11.1.0.6.0和打补丁后的版本信息:Oracle Database 11g Patch Set 1 11.1.0.7.0。

5)补丁(Patch)的相关信息和修复Bugs的编号。6)Opatch succeeded。

3.4 实验结果

实施安全补丁之后,再次使用绿盟软件对系统进行扫描,发现之前扫描出来的Oracle数据库安全漏洞已经不存在了。由此可见实施Oracle数据库安全补丁安装可以有效地解决Oracle数据库存在的安全漏洞。

4 结束语

Oracle数据库在用户使用过程中会不断暴露各种功能和性能BUG;同时恶意攻击者利用Oracle数据库的安全漏洞绕过数据库系统的安全管理机制,达到非授权存取的目的,甚至控制数据库。从而影响Oracle系统的安全稳定运行。

随时关注Oracle官网上发布的Oracle数据库补丁信息,及时实施相应的Oracle补丁安装,从而修改功能和性能BUG,修复软件的安全漏洞。

长期的实际应用表明为了确保数据库的正常运行,及时更新补丁是必不可少的。

[1]Rajesh Shah.Oracle On Demand Best Practices:Critical Patch Update[R].Oracle Corporation,2008.

[2]Steve Callan.Database Security and Patches-Part 1[EB/OL].(2005-11-8).[2013-11-30].http://www.databasejournal.com/features/oracle/article.php/3562181/Database-Security-and-Patches-150-Part-1.htm.

[3]Steve Callan.Database Security and Patches-Part 2[EB/OL].(2005-11-22)[2013-11-30].http://www.databasejournal.com/features/oracle/article.php/3565096/Database-Security-and-Patches-150-Part-2.htm.

[4]Steve Callan.Database Security and Patches-Part 3[EB/OL].(2005-12-4).[2013-11-30].http://www.databasejournal.com/features/oracle/article.php/3569941/Database-Security-and-Patches-150-Part-3.htm.

[5]Steve Callan.Database Security and Oracle Patches-Part 4[EB/OL].(2005-12-23).[2013-11-30].http://www.databasejournal.com/features/oracle/article.php/3571991/Database-Security-and-Oracle-Patches-150-Part-4.htm.

[6]Steve Callan.Database Security and Patches-Part 5[EB/OL].(2006-1-25).[2013-11-30].http://www.databasejournal.com/features/oracle/article.php/3579306/Database-Security-and-Patches-150-Part-5.htm.

[7]彭贤海,全国庆,张健.基于Oracle的管理信息系统数据库自动升级方法研究及实现 [J].计算机工程与应用,2004,40(10):193-194.PENG Xian-hai,OUAN Guo-ging,ZHANG Jian.A study of auto-upgrading for database ofmanagement information system based on Oracle[J].Computer Engineering and Applications,2004,40(10):193-194.

[8]刘志斌.给Oracle数据库打补丁[N].计算机世界·技术与应用,2006.

猜你喜欢
版本号安全漏洞补丁
基于大数据技术的软件安全漏洞自动挖掘方法研究
ETCS基线3的系统版本管理方法
基于模糊测试技术的软件安全漏洞挖掘方法研究
健胃补丁
绣朵花儿当补丁
认识vSphere安装程序
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
补丁奶奶
深入浅出 全面获知系统版本号
大病医保期待政策“补丁”