很多人经常喜欢下载一些漏洞扫描软件,这扫扫,那扫扫,自然也扫出很多“高危漏洞”。看到这些高危漏洞,你是不是有点小紧张呢?那么看完这篇文章,你会了解这Oracle patch的原理,也就豁然了。
针对常见的漏洞扫描软件,Oracle官方明确表达,不授权和认可任何第三方软件的漏洞扫描结果。
而事实上,漏洞扫描软件,也真的没有做到高大上的功能,它们并没有技术能力发现Oracle软件自身的漏洞。很多漏洞都是在一些黑客攻击之后,Oracle原厂自行修复,并提供相应的补丁来防止相关风险的发生。很多扫描软件,不但没有做到高大上,在Oracle漏洞方面,做的却非常业余。
只不过通过检查Oracle的软件补丁发布情况,和DB是否应有最新的Patch,而报出漏洞的信息,来吓唬客户,体现自身低微的价值。
这些第三方软件所做的工作,对应Oracle来说,就是很简单的一个检查步骤(一条命令,两个文档列表),就能解决是否存在漏洞的问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一个命令:
$ORACLE_HOME/OPatch/opatch lsinventory
Patch列表
Quick Reference to Patch Numbers for Database/GI PSU, SPU(CPU), Bundle Patches and Patchsets (Doc ID 1454618.1)
和CVE漏洞信息列表
http://www.oracle.com/technetwork/topics/security/public-vuln-to-advisory-mapping-093627.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. 既然扫描软件扫描到漏洞,好吧,我们来看看他们的建议是什么呢?自然是打补丁了,但是打什么补丁呢?CPU,CPU,CPU啊,重要的事情说三遍。
看看下面两个漏洞的建议,需要应用两个不同的CPU来解决这个问题(两个CPU是不能同时打的,冲突)。
每当我遇到这个建议的时候,都想说:“大哥,出来混,专业一点好不好?做扫描软件,超贵的License费用,你就给我看这个?”
2. 下图就是扫描软件提供的报告


3. 我们来了解一下Oracle的Patch结构,大家就清楚了。为什么第三方扫描软件的不专业。
One of Patch:针对一个bug,解决的方法
Merge Patch:针对多个bug,需要多个patch修复。但是patch的应用,原本就是oracle software的文件替换,在多个patch修改同一个文件的不同位置时,就会出现冲突的情况。为了解决这个冲突,oracle提供了Merge patch,即将两个小patch需要修改的代码,融合到一个替换文件中。
Bundle patch:补 丁集,修复多个Bug。在Windows平台上的Oracle没有小补丁,只有这种Bundle Patch。 这种补丁集会周期性的发布(至少每季一次)。这种补丁集是累积型的(cumulative),也就是每个Bundle patch 会包含之前的所有的Bundle Patch。 比如Windows Bundle Patch 16,它会包含之前所有15个Bundle Patch,所以我们总是推荐安装最新的Bundle Patch。Oracle的集群软件和数据库软件的Window Bundle Patch是同一个,比如Windows Bundle Patch 16(补丁号16167942,既可以打在集群上,也可以打在数据库上) 。
要了解Windows Bundle Patch的补丁号,可以参考MOS文档:
Note 161549.1 Oracle Database, Networking and Grid Agent Patches for Microsoft Platforms
Critical Patch Update (CPU):每季度发布一次,用来修复安全方面的一些补丁,是累积型的。目前已经更名为Security Patch Update (SPU)。
点击下面的链接查看各个CPU所修复的具体问题:
http://www.oracle.com/technetwork/topics/security/alerts-086861.html
Patch Set Update (PSU):每 季度发布一次,修复比较严重的一些问题,包含每季的CPU,是累积型的。虽然在描述PSU的时候会用到数据库版本第5位,比如Database PSU 11.2.0.3.5,但实际上打完PSU后并不会真正改变数据库的版本,从v$version中看到的版本还是4位的(11.2.0.3.0),第5位 仍然是0。注意,Windows上没有CPU和PSU,Oracle的集群软件和数据库软件使用不同的PSU。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上面引用Oracle官方blog https://blogs.oracle.com/database4cn/oracle-v4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4. 这里,我们比较关心的是CPU和PSU的关系,到底是什么?
下面这段官方描述,解释他们的关系:
Critical Patch Updates (CPU) address security vulnerabilities, Patch Set Updates (PSU) address proactive, critical fixes and security vulnerabilities.
The Patch Set Updates and Critical Patch Updates that are released each quarter contain the same security fixes. However, they use different patching mechanisms, and Patch Set Updates include both security and recommended bug fixes. Consider the following guidelines when you are deciding to apply Patch Set Updates instead of Critical Patch Updates.
Critical Patch Updates are applied only on the base release version, for example 10.2.0.4.0.
Patch Set Updates can be applied on the base release version or on any earlier Patch Set Update. For example, 11.1.0.7.2 can be applied on 11.1.0.7.1 and 11.1.0.7.0.
Once a Patch Set Update has been applied, the recommended way to get future security content is to apply subsequent Patch Set Updates. Reverting from an applied Patch Set Update back to the Critical Patch Update, while technically possible, requires significant time and effort, and is not advised.
For more information on Patch Set Updates, see Note 854428.1, Patch Set Updates for Oracle Products.
总结:就是PSU包含CPU, PSU可以累加往上应用,但是CPU必须先回滚,才能继续应用。
Oracle Support很多年,似乎客户都是使用PSU来修复问题,极少有客户使用CPU的,毕竟PSU的延续性,似乎更好。
5. 概念都了解之后,我们再回头看扫描软件扫描出的漏洞,我们该如何解决。
漏洞查询网址如下
http://www.oracle.com/technetwork/topics/security/public-vuln-to-advisory-mapping-093627.html
(如果这个连接失效,使用下面步骤进入到CVE的信息查询页面
OPN.oracle.com -> Topic Centers (www.oracle.com/technetwork/topics/index.html) -> Security -> View the most recent Critical Patch Update Advisory -> Map of Public Vulnerability to Advisory/Alert
6. 例如,下面提示的漏洞,根据漏洞发现时间,结合文档,根据修复日期,查找相对应的PSU/CPU复Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets (Doc ID 1454618.1)
可以查询到11.2.0.3.13(发布的时间是 JAN2015)版本之后的PSU,就已经修复了下面这些问题了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oracle Database Server JPublisher组件代码执行漏洞(CVE-2014-6546) -------------CVE-2014-6546 Oracle Critical Patch Update October 2014
Oracle Database Server JPublisher组件代码执行漏洞(CVE-2014-6545) -------------CVE-2014-6545 Oracle Critical Patch Update October 2014
Oracle Database Server Java VM组件代码执行漏洞(CVE-2014-6467) -------------CVE-2014-6467 Oracle Critical Patch Update October 2014
Oracle Database Server SQLJ组件代码执行漏洞(CVE-2014-6455) -------------CVE-2014-6455 Oracle Critical Patch Update October 2014
Oracle Database 远程安全漏洞(CVE-2014-2406) -------------CVE-2014-2406 Oracle Critical Patch Update April 2014
Oracle Database 远程安全漏洞(CVE-2014-2408) -------------CVE-2014-2408 Oracle Critical Patch Update April 2014
Oracle Database Server远程安全漏洞(CVE-2014-4236) -------------CVE-2014-4236 Oracle Critical Patch Update July 2014
Oracle Database Server Jpublisher组件漏洞(CVE-2014-6477) -------------CVE-2014-6477 Oracle Critical Patch Update October 2014
Oracle Database Server Spatial组件本地安全漏洞(CVE-2014-0378) -------------CVE-2014-0378 Oracle Critical Patch Update January 2014
Oracle Database Server Core RDBMS组件远程安全漏洞(CVE-2013-5858) -------------CVE-2013-5858 Oracle Critical Patch Update January 2014
Oracle Database Server Core RDBMS组件远程信息泄露安全漏洞(CVE-2014-0377) -----CVE-2014-0377 Oracle Critical Patch Update January 2014
Oracle Database Server远程安全漏洞(CVE-2014-4237) -------------CVE-2014-4237 Oracle Critical Patch Update July 2014
Oracle Database Server远程安全漏洞(CVE-2014-4245) -------------CVE-2014-4245 Oracle Critical Patch Update July 2014
Oracle Database Server Java VM组件代码执行漏洞(CVE-2014-6560) ------------- CVE-2014-6560 Oracle Critical Patch

