OracleDatabaseServer'TNSListener'遠程數(shù)據(jù)投毒漏洞

關(guān)于CVE-2012-1675

綠盟掃描系統(tǒng),報告了一個安全漏洞,研究了下

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

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供塔什庫爾干塔吉克網(wǎng)站建設(shè)、塔什庫爾干塔吉克做網(wǎng)站、塔什庫爾干塔吉克網(wǎng)站設(shè)計、塔什庫爾干塔吉克網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、塔什庫爾干塔吉克企業(yè)網(wǎng)站模板建站服務(wù),十余年塔什庫爾干塔吉克做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

oracle 安全警告

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

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

這個漏洞的發(fā)現(xiàn)者和描述

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

該漏洞主要影響監(jiān)聽器。

最主要的危害為,攻擊者可以自行創(chuàng)建一個和當(dāng)前生產(chǎn)數(shù)據(jù)庫同名的數(shù)據(jù)庫,將其向生產(chǎn)數(shù)據(jù)庫的監(jiān)聽注冊。

這樣將導(dǎo)致用戶連接被路由指向攻擊者創(chuàng)建的實例,造成業(yè)務(wù)響應(yīng)中斷

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

 

受到影響的版本

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

 

如何查找攻擊者

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

當(dāng)時測試出可行的方法為關(guān)閉數(shù)據(jù)庫實例和所有的連接,檢查仍然連接到1521端口的機器

監(jiān)聽日志中沒有注冊者的IP和主機名信息

TRC 監(jiān)聽無法找到注冊監(jiān)聽者的IP和主機名

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

1.     設(shè)置監(jiān)聽器不接受動態(tài)注冊,所有實例靜態(tài)注冊(單實例以及不做load_balance的RAC)

 

2.     設(shè)置只允許特定的IP訪問監(jiān)聽器

 

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

 

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

 

如果不安裝補丁,只允許限制IPC協(xié)議的動態(tài)監(jiān)聽注冊,無法限制默認的TCP協(xié)議動態(tài)監(jiān)聽注冊

 

如果監(jiān)聽與數(shù)據(jù)庫間使用TCP協(xié)議,需要安裝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 

 

單實例,不準(zhǔn)備啟用服務(wù)端負載均衡的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

 

需要服務(wù)端負載均衡的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.應(yīng)用解決方案

?3.驗證修補情況

?4.Reference

1.確定解決方案

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

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

根據(jù)此鏈接得到解決方法:


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.

目前這里環(huán)境不是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.應(yīng)用解決方案

2.1 確定現(xiàn)狀

監(jiān)聽配置文件:listener.ora

存放路徑:cd %ORACLE_HOME%/network/admin

內(nèi)容(保證安全,所有IP相關(guān)信息已二次處理):

?
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

數(shù)據(jù)庫監(jiān)聽信息,原始都是空值:

?
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 嘗試應(yīng)用解決方案

2.2.1 停止監(jiān)聽

lsnrctl stop listener

2.2.2 修改監(jiān)聽配置文件


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)

實際修改過程:

切換到監(jiān)聽配置文件所在路徑:

cd %ORACLE_HOME%/network/admin

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


1
SECURE_REGISTER_LISTENER = (TCP)

2.2.3 啟動監(jiān)聽

啟動監(jiān)聽:


1
lsnrctl start listener

立即注冊動態(tài)監(jiān)聽:


1
SQL> alter system register;

2.2.4 設(shè)置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 查看監(jiān)聽服務(wù)信息


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)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務(wù) "orcl" 包含 1 個例程。
例程 "orcl" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:3 已被拒絕:0
LOCAL SERVER
命令執(zhí)行成功

3.驗證修補情況

3.1 注釋COST規(guī)則驗證監(jiān)聽情況

3.1.1 注釋掉listener.ora文件的COST規(guī)則并重啟監(jiān)聽


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

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


1
#SECURE_REGISTER_LISTENER = (TCP)

重啟監(jiān)聽:


1
2
lsnrctl stop listener
lsnrctl start listener

3.1.2 設(shè)置remote_listener后查看監(jiān)聽服務(wù)信息

設(shè)置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

快速動態(tài)監(jiān)聽注冊:


1
SQL> alter system register;

查看監(jiān)聽服務(wù)信息,發(fā)現(xiàn)有“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)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務(wù) "orcl" 包含 2 個例程。
例程 "orcl" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
例程 "orcl" , 狀態(tài) READY, 包含此服務(wù)的 2 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態(tài):ready
LOCAL SERVER
"DEDICATED" 已建立:0 已拒絕:0 狀態(tài):ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY =EXTPROC1521)))
服務(wù) "orclXDB" 包含 1 個例程。
例程 "orcl" , 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
處理程序:
"D000" 已建立:0 已被拒絕:0 當(dāng)前: 0 最大: 1002 狀態(tài): ready
DISPATCHER <machine: INSPUR-IRMS-138, pid: 6728>
(ADDRESS=(PROTOCOL=tcp)(HOST=INSPUR-IRMS-138)(PORT=52676))
服務(wù) "orcl_XPT" 包含 1 個例程。
例程 "orcl" , 狀態(tài) READY, 包含此服務(wù)的 2 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態(tài):ready
LOCAL SERVER
"DEDICATED" 已建立:0 已拒絕:0 狀態(tài):ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY =EXTPROC1521)))
命令執(zhí)行成功

3.2 取消注釋COST規(guī)則驗證監(jiān)聽情況

3.2.1 取消注釋COST規(guī)則重啟監(jiān)聽并快速注冊,驗證監(jiān)聽服務(wù)信息

去掉監(jiān)聽文件末尾行前的“#”號:


1
SECURE_REGISTER_LISTENER = (TCP)

重啟監(jiān)聽:


1
2
lsnrctl stop listener
lsnrctl start listener

快速注冊動態(tài)監(jiān)聽:


1
SQL> alter system register;

驗證監(jiān)聽服務(wù)信息,按官檔描述,正常應(yīng)該沒有“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)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務(wù) "orcl" 包含 2 個例程。
例程 "orcl" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:1 已被拒絕:0
LOCAL SERVER
例程 "orcl" , 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態(tài):blocked
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY =EXTPROC1521)))
服務(wù) "orclXDB" 包含 1 個例程。
例程 "orcl" , 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
處理程序:
"D000" 已建立:0 已被拒絕:0 當(dāng)前: 0 最大: 1002 狀態(tài): ready
DISPATCHER <machine: INSPUR-IRMS-138, pid: 6728>
(ADDRESS=(PROTOCOL=tcp)(HOST=INSPUR-IRMS-138)(PORT=52676))
服務(wù) "orcl_XPT" 包含 1 個例程。
例程 "orcl" , 狀態(tài) READY, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已拒絕:0 狀態(tài):blocked
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY =EXTPROC1521)))
命令執(zhí)行成功
實際發(fā)現(xiàn)有“REMOTE SERVER”字樣,但是對應(yīng)的監(jiān)聽都是blocked.

3.2.2 查看監(jiān)聽日志

cd %ORACLE_HOME%/network/log

listener.log日志文件已經(jīng)有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: 監(jiān)聽程序命令未到達安全傳輸
21-9月 -2016 11:01:54 * service_register_NSGR * 1194
TNS-01194: 監(jiān)聽程序命令未到達安全傳輸
21-9月 -2016 11:02:54 * service_register_NSGR * 1194
TNS-01194: 監(jiān)聽程序命令未到達安全傳輸

 3.2.3 還原remote_listener設(shè)置

測試完成,還原remote_listener設(shè)置


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

3.2.4 查看監(jiān)聽服務(wù)信息


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)))
服務(wù)摘要..
服務(wù) "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:0 已被拒絕:0
LOCAL SERVER
服務(wù) "orcl" 包含 1 個例程。
例程 "orcl" , 狀態(tài) UNKNOWN, 包含此服務(wù)的 1 個處理程序...
處理程序:
"DEDICATED" 已建立:1 已被拒絕:0
LOCAL SERVER
命令執(zhí)行成功

4.Reference

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

分享名稱:OracleDatabaseServer'TNSListener'遠程數(shù)據(jù)投毒漏洞
標(biāo)題鏈接:http://bm7419.com/article4/jdecoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、App設(shè)計、定制開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管