环境:Windows 2008 R2 + Oracle 10.2.0.3

应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)

1.确定解决方案

安全厂家给出的解决办法:
链接:http://www.oracle.com/technetwork/topics/security/alert-cve-2012-1675-1608180.html

根据此链接得到解决方法:

Solution

Recommendations for protecting against this vulnerability can be found at:

My Oracle Support Note 1340831.1 for Oracle Database deployments that use Oracle Real Application Clusters (RAC).

My Oracle Support Note 1453883.1 for Oracle Database deployments that do not use RAC.

目前这里环境不是RAC,参考文档1453883.1:

Using Class of Secure Transport (COST) to Restrict Instance Registration (文档 ID 1453883.1)

找到两种解决方案:

SOLUTION

There are two methods that can be used to protect the listener using COST "SECURE_REGISTER_listener_name =" in stand alone database installations.

  1. Restricting registration to the TCP protocol (Requires the fix for BUG:12880299)

     - or -
  2. Restricting registration to the IPC protocol (The patch for BUG:12880299 is NOT required for the IPC method)

Either method accomplishes the same goal but it is your choice which type to implement subject to the restriction* noted below. Both methods will be discussed.

  • The second method (using IPC) cannot be used if the database is a member of an Oracle Data Guard broker configuration.

我这里选择第一种解决方案:

  1. Restricting registration to the TCP protocol (Requires the fix for BUG:12880299)。

2.应用解决方案

## 2.1 确定现状 ##
监听配置文件:listener.ora
存放路径:cd %ORACLE_HOME%/network/admin
内容(保证安全,所有IP相关信息已二次处理):
```
# listener.ora Network Configuration File: E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.138)(PORT = 1521))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ANY")

)

(SID_DESC =

(GLOBAL = orcl)

(ORACLE_HOME = E:\oracle\product\10.2.0\db_1)

(SID_NAME = orcl)

)

)

ADR_BASE_LISTENER = E:\oracle

数据库监听信息,原始都是空值:

SQL> show parameter local_listener

NAME TYPE VALUE


local_listener string

SQL> show parameter remote_listener;

NAME TYPE VALUE


remote_listener string

SQL>

## 2.2 尝试应用解决方案 ##
**2.2.1 停止监听**
lsnrctl stop listener
**2.2.2 修改监听配置文件**
> Add the COST TCP protocol restriction "SECURE_REGISTER_[listener_name] = (TCP)" to the listener.ora.
> Match the COST parameter variable listener_name with the name of the listener you are using in the listener.ora, e.g., If your listener name is "LISTENER_PROD" then use SECURE_REGISTER_LISTENER_PROD = (TCP) 实际修改过程:
切换到监听配置文件所在路径:

cd %ORACLE_HOME%/network/admin

直接修改listener.ora文件,在文件的末尾添加一行:

SECURE_REGISTER_LISTENER = (TCP)

**2.2.3 启动监听**
启动监听:
lsnrctl start listener
立即注册动态监听:
SQL> alter system register;
**2.2.4 设置local_listener**

alter system set local_listener='(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.138)(PORT = 1521)))' scope = both;

show parameter local_listener

**2.2.5 查看监听服务信息**
lsnrctl services listener

E:\oracle\product\10.2.0\db_1\network\ADMIN>lsnrctl services listener

LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 21-9月 -2016 10:2

2:02

Copyright (c) 1991, 2006, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

服务 "orcl" 包含 1 个例程。

例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:3 已被拒绝:0

LOCAL SERVER

命令执行成功

<h1 id="3">3.验证修补情况</h1>
## 3.1 注释COST规则验证监听情况 ##
**3.1.1 注释掉listener.ora文件的COST规则并重启监听**
Comment the COST rule in listener.ora and restart the listener.
直接修改listener.ora文件,在之前添加的一行前面加上"#"注释此行。

SECURE_REGISTER_LISTENER = (TCP)

重启监听:

lsnrctl stop listener

lsnrctl start listener

**3.1.2 设置remote_listener后查看监听服务信息**
设置remote_listener:

SQL> alter system set remote_listener='(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.138)(PORT = 1521))' scope=memory;

SQL> show parameter remote_listener

快速动态监听注册:

SQL> alter system register;

查看监听服务信息,发现有“REMOTE SERVER”字样,说明此时漏洞存在:

E:\oracle\product\10.2.0\db_1\network\ADMIN>lsnrctl services listener

LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 21-9月 -2016 10:4

4:18

Copyright (c) 1991, 2006, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

服务 "orcl" 包含 2 个例程。

例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

例程 "orcl", 状态 READY, 包含此服务的 2 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已拒绝:0 状态:ready

LOCAL SERVER

"DEDICATED" 已建立:0 已拒绝:0 状态:ready

REMOTE SERVER

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服务 "orclXDB" 包含 1 个例程。

例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

处理程序:

"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready

DISPATCHER <machine: INSPUR-IRMS-138, pid: 6728>

(ADDRESS=(PROTOCOL=tcp)(HOST=INSPUR-IRMS-138)(PORT=52676))

服务 "orcl_XPT" 包含 1 个例程。

例程 "orcl", 状态 READY, 包含此服务的 2 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已拒绝:0 状态:ready

LOCAL SERVER

"DEDICATED" 已建立:0 已拒绝:0 状态:ready

REMOTE SERVER

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

命令执行成功

## 3.2 取消注释COST规则验证监听情况  ##
**3.2.1 取消注释COST规则重启监听并快速注册,验证监听服务信息**
去掉监听文件末尾行前的“#”号:

SECURE_REGISTER_LISTENER = (TCP)

重启监听:

lsnrctl stop listener

lsnrctl start listener

快速注册动态监听:

SQL> alter system register;

验证监听服务信息,按官档描述,正常应该没有“REMOTE SERVER”字样:

E:\oracle\product\10.2.0\db_1\network\ADMIN>lsnrctl services listener

LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 21-9月 -2016 11:0

0:23

Copyright (c) 1991, 2006, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

服务 "orcl" 包含 2 个例程。

例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:1 已被拒绝:0

LOCAL SERVER

例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已拒绝:0 状态:blocked

REMOTE SERVER

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服务 "orclXDB" 包含 1 个例程。

例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

处理程序:

"D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready

DISPATCHER <machine: INSPUR-IRMS-138, pid: 6728>

(ADDRESS=(PROTOCOL=tcp)(HOST=INSPUR-IRMS-138)(PORT=52676))

服务 "orcl_XPT" 包含 1 个例程。

例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已拒绝:0 状态:blocked

REMOTE SERVER

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

命令执行成功

实际发现有“REMOTE SERVER”字样,但是对应的监听都是blocked.
**3.2.2 查看监听日志**
cd %ORACLE_HOME%/network/log
listener.log日志文件已经有TNS-01194信息,跟官档一致:

21-9月 -2016 11:00:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Administrator))(COMMAND=services)(ARGUMENTS=64)(SERVICE=listener)(VERSION=169870080)) * services * 0

21-9月 -2016 11:00:54 * service_register_NSGR * 1194

TNS-01194: 监听程序命令未到达安全传输

21-9月 -2016 11:01:54 * service_register_NSGR * 1194

TNS-01194: 监听程序命令未到达安全传输

21-9月 -2016 11:02:54 * service_register_NSGR * 1194

TNS-01194: 监听程序命令未到达安全传输

**3.2.3 还原remote_listener设置**
测试完成,还原remote_listener设置
alter system set remote_listener='' scope=memory;

SQL> alter system set remote_listener='' scope=memory;

**3.2.4 查看监听服务信息**

E:\oracle\product\10.2.0\db_1\network\ADMIN>lsnrctl services listener

LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 21-9月 -2016 11:2

2:17

Copyright (c) 1991, 2006, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:0 已被拒绝:0

LOCAL SERVER

服务 "orcl" 包含 1 个例程。

例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

处理程序:

"DEDICATED" 已建立:1 已被拒绝:0

LOCAL SERVER

命令执行成功


<h1 id="4">4.Reference</h1>
- Using Class of Secure Transport (COST) to Restrict Instance Registration (文档 ID 1453883.1)
- http://blog.itpub.net/17997/viewspace-763695/

Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)解决的更多相关文章

  1. Oracle database server 安装tips

    需要手动解压第二个包的文件合并到第一个包的相同目录中. 以12c为例,需要把 winx64_12102_SE2_database_1of2.zip和winx64_12102_SE2_database_ ...

  2. 关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法

    要想使用grid里的扩展搜索功能,除了要引用ligerui主要的js文件外,还必须引入下面的JS文件: 1.Source\demos\filter\ligerGrid.showFilter.js 2. ...

  3. Oracle TNS Listener Remote Poisoning

    Oracle TNS Listener Remote Poisoning 远程数据投毒漏洞(CVE-2012-1675) 1.漏洞简介: 允许攻击者在不提供用户名/密码的情况下,向远程“TNS Lis ...

  4. robot framework连接Oracle错误:ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

    在使用robot framework的关键字Connect to Database Using Custom params连接Oracle数据库: Connect to Database Using ...

  5. Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

    ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  6. 【转】Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

      阅读目录 目录 Oracle集群概念和原理 RAC概述 RAC 集成集群件管理 RAC 的体系结构 RAC 的结构组成和机制 RAC 后台进程 RAC 共享存储 RAC 数据库和单实例数据库的区别 ...

  7. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  8. Oracle Database常用补丁集Patch号及各版本PSU

    Oracle Database常用补丁集Patch号及各版本PSU------------------------------------------------------------------- ...

  9. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

随机推荐

  1. JVM中对象的销毁

    1.可达性分析算法: 可达性分析算法用来寻找将要销毁的对象,它的基本思路是:通过一系列的称为“GC ROOTs”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GC ...

  2. Python之路Day18-正则及Django

    一. 正则表达式 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配JS正则匹配时本身就是支持多行,此处多行匹 ...

  3. awk使用shell变量

    awk使用shell变量  (可以计算浮点数) 其实在awk里,是不能直接使用shell变量的 方法是:awk -v 选项让awk 里使用shell变量 TIME=60 awk -v time=&qu ...

  4. sublime Text3及其插件的使用

    参考:Sublime Text 3 新手上路:必要的安裝.設定與基本使用教學 Sublime Text 相信是許多開發人員人心目中的最愛,然而對一個 Sublime Text 3 的新手來說,有什麼是 ...

  5. CSDN:你认为一名优秀的技术人应该具备怎样的素质?

    CSDN:你认为一名优秀的技术人应该具备怎样的素质? 王晶昱:我个人认为,符合这个世界要求的就是优秀的.在目前这个时代,我认为一个优秀的技术人员的特质可能是: 兴趣驱动,兴趣是最好的老师,写程序本身就 ...

  6. ASP.NET Web API 接口执行时间监控

    软件产品常常会出现这样的情况:产品性能因某些无法预料的瓶颈而受到干扰,导致程序的处理效率降低,性能得不到充分的发挥.如何快速有效地找到软件产品的性能瓶颈,则是我们感兴趣的内容之一. 在本文中,我将解释 ...

  7. 一步步学习javascript基础篇(6):函数表达式之【闭包】

    回顾前面介绍过的三种定义函数方式 1. function sum (num1, num2) { return num1 + num2; }  //函数声明语法定义 2. var sum = funct ...

  8. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  9. 为jQuery添加Webkit的触摸方法支持

    前些日子收到邮件,之前兼职的一个项目被转给了其他人,跟进的人来问我相关代码的版权问题. 我就呵呵了. 这段代码是我在做13年一份兼职的时候无聊加上去的,为jQuery添加触摸事件的支持.因为做得有点无 ...

  10. Azure SQL Database (22) 迁移部分数据到Azure Stretch Database

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...