首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CVE-2012-1675 TNS Listener 遠程投毒漏洞徹底修復實戰

     編輯:Oracle 資料庫相關知識

漏洞背景

CVE-2012-1675 允許未認證攻擊者透過惡意註冊實例,導致 Listener 將連線導向攻擊者控制的服務(中間人攻擊/資料竊取)。影響範圍:Oracle Database 10g/11g 非 RAC 環境。

環境:Windows Server 2008 R2 + Oracle 10.2.0.3,應用最新 Bundle Patch 後掃描仍報漏洞。

官方修復策略

依據 Oracle MOS Note 1453883.1(非 RAC 環境),採用 Class of Secure Transport (COST) 限制實例註冊協議。提供兩種模式:

  1. TCP 協議限制:需先應用 Patch 12880299
  2. IPC 協議限制:無需額外補丁,**但不可用於 Data Guard Broker 環境**

本文採用 方案一:TCP 協議限制(需確認已打 Patch 12880299)。

修復實施步驟

1. 確認現狀

-- 檢查監聽器配置
LSNRCTL> STATUS

-- 檢查動態註冊參數
SQL> SHOW PARAMETER local_listener;
SQL> SHOW PARAMETER remote_listener;

預期:兩參數均為空(預設動態註冊)。

2. 停止監聽器

LSNRCTL> STOP LISTENER

3. 修改 listener.ora 增加 COST 規則

路徑:%ORACLE_HOME%\network\admin\listener.ora

# 在檔案末尾新增
SECURE_REGISTER_LISTENER = (TCP)

關鍵點:參數名稱中 LISTENER 必須與 listener.ora 中定義的監聽器名稱完全一致(區分大小寫)。

4. 啟動監聽器並強制註冊

LSNRCTL> START LISTENER
SQL> ALTER SYSTEM REGISTER;

5. 設定 local_listener 綁定 TCP 端點

ALTER SYSTEM SET local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.138)(PORT=1521)))' SCOPE=BOTH;
SHOW PARAMETER local_listener;

6. 驗證修復成效

LSNRCTL> SERVICES LISTENER

預期輸出:所有 Handler 狀態為 LOCAL SERVER,**不出現 REMOTE SERVER**。

滲透測試驗證(模擬攻擊場景)

步驟 1:註釋 COST 規則並重啟

#SECURE_REGISTER_LISTENER = (TCP)
LSNRCTL> STOP LISTENER
LSNRCTL> START LISTENER

步驟 2:設定 remote_listener 模擬惡意註冊

ALTER SYSTEM SET remote_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.138)(PORT=1521))' SCOPE=MEMORY;
ALTER SYSTEM REGISTER;

步驟 3:檢查 SERVICES 輸出

Service "orcl" has 2 instances.
Instance "orcl", status READY, has 2 handlers...
Handler: "DEDICATED" ... STATE:ready REMOTE SERVER (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

出現 REMOTE SERVER 即表示漏洞存在(攻擊者可劫持連線)。

步驟 4:恢復 COST 規則並重啟驗證

SECURE_REGISTER_LISTENER = (TCP)
LSNRCTL> STOP LISTENER
LSNRCTL> START LISTENER
SQL> ALTER SYSTEM REGISTER;

步驟 5:再次檢查 SERVICES

Service "orcl" has 2 instances.
Instance "orcl", status READY, has 1 handler...
Handler: "DEDICATED" ... STATE:blocked REMOTE SERVER ...

關鍵指標:雖仍顯示 REMOTE SERVER,但狀態為 blocked,且 listener.log 記錄:

TNS-01194: The listener command did not arrive on a secure transport

證明惡意註冊被阻擋。

步驟 6:清理測試參數

ALTER SYSTEM SET remote_listener='' SCOPE=MEMORY;

補充:Oracle 10g/11g 關鍵參數差異

版本額外必要參數說明
10gLOCAL_OS_AUTHENTICATION_LISTENER = OFF關閉本地 OS 認證回退,強制密碼驗證
11g+預設安全預設啟用基於 OS 群組的權限檢查,無需額外設定

總結

  1. 應用 Patch 12880299(TCP 方案前提)
  2. listener.ora 增加 SECURE_REGISTER_<監聽器名> = (TCP)
  3. 設定 local_listener 綁定 TCP 端點
  4. 驗證 LSNRCTL SERVICES 無 REMOTE SERVER 或狀態為 blocked
  5. 檢查 listener.log 確認 TNS-01194 拒絕記錄

此方案經實測可徹底阻斷 CVE-2012-1675 攻擊向量,建議納入資料庫安全基線檢查清單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved