中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle Database Server 'TNS Listener'遠程數據投毒漏洞

發布時間:2020-08-10 18:20:33 來源:ITPUB博客 閱讀:326 作者:strivechao 欄目:關系型數據庫

關于CVE-2012-1675

綠盟掃描系統,報告了一個安全漏洞,研究了下

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

oracle 安全警告

在安全警告CVE-2012-1675中進行了描述:

http://www.oracle.com/technetwork/topics/security/alert-cve-2012-1675-1608180.html


這個漏洞的發現者和描述

http://seclists.org/fulldisclosure/2012/Apr/204

該漏洞主要影響監聽器。

最主要的危害為,攻擊者可以自行創建一個和當前生產數據庫同名的數據庫,將其向生產數據庫的監聽注冊。

這樣將導致用戶連接被路由指向攻擊者創建的實例,造成業務響應中斷

應用程序報告 ORA-12545: Connect failed because target host or object does not exist

 

受到影響的版本

雖然安全警告描述的是10203開始,但是實際是從8i開始的任何版本

 

如何查找攻擊者

如果遭遇到攻擊,查看攻擊者機器不太方便。

當時測試出可行的方法為關閉數據庫實例和所有的連接,檢查仍然連接到1521端口的機器

監聽日志中沒有注冊者的IP和主機名信息

TRC 監聽無法找到注冊監聽者的IP和主機名

  如何避免受該安全漏洞影響?

1.     設置監聽器不接受動態注冊,所有實例靜態注冊(單實例以及不做load_balance的RAC)

 

2.     設置只允許特定的IP訪問監聽器

 

3.     設置Class of Secure Transport,用來只允許本機實例或特定機器的實例注冊到監聽器。

 

該特性是10203引入,但存在Bug 12880299 - TCP handlers block if listener registration is restricted to IPC with COST [ID 12880299.8]

 

如果不安裝補丁,只允許限制IPC協議的動態監聽注冊,無法限制默認的TCP協議動態監聽注冊

 

如果監聽與數據庫間使用TCP協議,需要安裝Patch22880299,各版本最新的PSU中都有包含(10203不包含)

 11.2.0.4.   Patch Set Update

11.2.0.3.3 Patch Set Update

11.2.0.2.7 Patch Set Update

11.1.0.7.12 Patch Set Update

10.2.0.5.8 Patch Set Update

10.2.0.4.13 Patch Set Update 

 

單實例,不準備啟用服務端負載均衡的RAC,參考

Using Class of Secure Transport (COST) to Restrict Instance Registration [ID 1453883.1]

https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1453883.1

 

需要服務端負載均衡的RAC,參考

Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC [ID 1340831.1]

https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1340831.1



?1.確定解決方案

?2.應用解決方案

?3.驗證修補情況

?4.Reference

1.確定解決方案

安全廠家給出的解決辦法:

鏈接: http://www.oracle.com/technetwork/topics/security/alert-cve-2012-1675-1608180.html

根據此鏈接得到解決方法:


1
2
3
4
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)

找到兩種解決方案:

?
1
2
3
4
5
6
7
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相關信息已二次處理):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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

數據庫監聽信息,原始都是空值:

?
1
2
3
4
5
6
7
8
9
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 修改監聽配置文件


1
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文件,在文件的末尾添加一行:


1
SECURE_REGISTER_LISTENER = (TCP)

2.2.3 啟動監聽

啟動監聽:


1
lsnrctl start listener

立即注冊動態監聽:


1
SQL> alter system register;

2.2.4 設置local_listener


1
2
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 查看監聽服務信息


1
2
3
4
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
正在連接到 (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
命令執行成功

3.驗證修補情況

3.1 注釋COST規則驗證監聽情況

3.1.1 注釋掉listener.ora文件的COST規則并重啟監聽


1
Comment the COST rule in listener.ora and restart the listener.

直接修改listener.ora文件,在之前添加的一行前面加上"#"注釋此行。


1
#SECURE_REGISTER_LISTENER = (TCP)

重啟監聽:


1
2
lsnrctl stop listener
lsnrctl start listener

3.1.2 設置remote_listener后查看監聽服務信息

設置remote_listener:


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

快速動態監聽注冊:


1
SQL> alter system register;

查看監聽服務信息,發現有“REMOTE SERVER”字樣,說明此時漏洞存在:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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規則重啟監聽并快速注冊,驗證監聽服務信息

去掉監聽文件末尾行前的“#”號:


1
SECURE_REGISTER_LISTENER = (TCP)

重啟監聽:


1
2
lsnrctl stop listener
lsnrctl start listener

快速注冊動態監聽:


1
SQL> alter system register;

驗證監聽服務信息,按官檔描述,正常應該沒有“REMOTE SERVER”字樣:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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信息,跟官檔一致:


1
2
3
4
5
6
7
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設置


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

3.2.4 查看監聽服務信息


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
命令執行成功

4.Reference

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开阳县| 信阳市| 双柏县| 松江区| 米脂县| 乐山市| 汝南县| 原平市| 阿拉尔市| 桂林市| 东山县| 化隆| 百色市| 滨海县| 罗甸县| 资讯| 西城区| 上栗县| 天柱县| 托克逊县| 大名县| 固镇县| 柘荣县| 东兴市| 远安县| 合山市| 厦门市| 调兵山市| 霍山县| 泊头市| 志丹县| 新邵县| 桐柏县| 池州市| 天水市| 九寨沟县| 那坡县| 柳林县| 墨竹工卡县| 曲水县| 张家口市|