Oracle golden gate的重要漏洞分(fēn)析

發布日期:2017-07-11首頁 > 安全資(zī)訊

20170710093345620.jpg



    在這篇文章中(zhōng),我(wǒ)們會再一(yī)次證明過度依賴自動化工(gōng)具會讓人們忽視掉很多潛在危險,同時,我(wǒ)們也将會讨論一(yī)些有關Oracle Golden Gate技術層面的重要弱點(漏洞),并且向大(dà)家展示又(yòu)一(yī)個信息安全産業産品質量不過關的案例。

    事情的起因

    不久之前,在一(yī)次内部易受攻擊性的評測中(zhōng),我(wǒ)們注意到Nmap顯示出了一(yī)段類似于下(xià)圖、未被認出的代碼。
    \

    有經驗的人能夠輕易認出對于标準服務要求(standard service request),上述的未經認出的代碼會導緻“MGR Did Not Recognize Command”這樣一(yī)則錯誤信息的産生(shēng)。簡單的網絡搜索可以發現,人們在一(yī)些讨論帖上抱怨稱上述的錯誤信息出現在Oracle Golden Gate的錯誤日志(zhì)中(zhōng)。經過更深一(yī)步的研究發現,TCP/7809端口(port)是Oracle Golden Gate的默認端口,這個調查結果與之前的結果一(yī)緻,這個結果給我(wǒ)們的研究帶來了極大(dà)的信心。

    引用Vendor公司網站的說明:“Oracle Golden Gate是一(yī)款在多樣IT環境下(xià)做出實時數據整合并且做出相應反應的軟件包。” 這也就意味着使用者可以程序化地定義在某種模式下(xià)的數據要怎樣轉化爲另一(yī)種模式的數據,然後即便在HA switch-over(應當是專業術語)或者其他複雜(zá)環境下(xià)Oracle Golden Gate也能将這些數據安全的轉移,并且保證數據的準确性。

    另外(wài),一(yī)次Nessus對于脆弱性的掃描表明:Golden Gate還是無法識别。于是我(wǒ)們又(yòu)在Google上面進行深入調查,并且發現了一(yī)些可怕的ZDI報告:

    ZDI-16-022

    ZDI-16-023

    CVSS(通用弱點評價系統) 10.0 表明這些弱點在沒有授權的情況下(xià),可以通過互聯網被輕易地利用,而且在報告中(zhōng)提到的會受影響的端口也和我(wǒ)們的調查一(yī)緻。這也就是爲什麽我(wǒ)們會建立一(yī)個測試系統或者是一(yī)個類似的版本,然後攻擊他的弱點來檢測這個弱點是否真實存在。但是這一(yī)次,雖然我(wǒ)們的測試處理了一(yī)些重要數據,但是在下(xià)一(yī)次“寒潮”來臨前我(wǒ)們并沒有足夠的空間來測試甚至建立好測試系統。

    我(wǒ)們現在能做的就是在我(wǒ)們的報告中(zhōng)涵蓋有關這個問題的信息說明,并且祈禱在短時間内可以有人解決這個問題,或者架設起一(yī)些被動的監控措施。就目前來說,這個漏洞還沒有被大(dà)範圍利用,但我(wǒ)們已經開(kāi)始架設測試系統,因爲這個漏洞仍然在困擾着我(wǒ)們。

    漏洞及其相關特點

    這是爲數不多的獲取并且架設産品比找到第一(yī)個漏洞花的時間、功夫還要長的案例,一(yī)部分(fēn)是因爲這款軟件的Linux(一(yī)個電(diàn)腦操作系統,比如說Windows也是一(yī)款電(diàn)腦操作系統)版本擁有完全的debug(他們肯定都懂什麽意思,就是消除錯誤)信息,并且這些信息也被編譯爲二進制(儲存在軟件中(zhōng))。因此,我(wǒ)們不會過多讨論這部分(fēn),也不會更多的關注某個個體(tǐ)特定的問題,而是将更多的注意力放(fàng)在普遍的問題上。

    管理器進程模拟了一(yī)個HTTP服務器并且執行了一(yī)個自定義的協議。結果是,雖然我(wǒ)們執行了一(yī)些權限控制(關于這一(yī)點我(wǒ)們之後會提到),但是不需要任何授權。

    HTTP服務器交互界面洩露了包括版本号在内大(dà)量關于服務器建立的信息,這些信息可以幫助我(wǒ)們确認這個目标是否已經打過補丁。當然我(wǒ)們想知(zhī)道的還遠不止于此。

    我(wǒ)們建立HTTP服務器所用的自定義協議十分(fēn)簡單。其中(zhōng)最重要的一(yī)些細節可以從收集自初始建立階段的測試主機中(zhōng)的packet dump推敲出來:
    \

    一(yī)個兩字節的前綴編碼了這些信息長度,其後跟随了一(yī)段TAB鍵(Word軟件中(zhōng)用于每段起始錯後兩字節的按鍵,這裏指圖片中(zhōng)第二段編碼比第一(yī)段錯後兩字節)分(fēn)開(kāi),人們能夠讀懂的指令。而關于這段編碼的回複也是同樣的格式。這段樣本足以在check_messages() 程式中(zhōng)快速定位執行于其中(zhōng)的二進制信息分(fēn)析程序(message parser function of binary).

    在确定過程創造邏輯(process creation logic)可以以某種方式激發execv()方程防止不重要的指令輸入之後,我(wǒ)們把我(wǒ)們的目光移向了OBEY指令。除了那吸引人的名字之外(wài),official documentation(官方文件)顯示GG可以被腳本化,而且腳本的文件名稱通常爲“OBEY files”。這些文件可以包含”SHELL“指令——這個指令可以在OS解譯過程中(zhōng)執行它自身的參數,而這使得OS成爲一(yī)個完美的攻擊目标。
    \

    現在,唯一(yī)的問題就是,如何往目标的文件系統中(zhōng)放(fàng)置一(yī)個合适的OBEY文件?一(yī)個很古老的方法可以幫助我(wǒ)們解決這個問題:管理器進程會把所有無效的指令記錄在正在工(gōng)作的ggserr.log目錄文件中(zhōng)。既然我(wǒ)們可以在發送到管理器端口的指令中(zhōng)嵌入line break,而且腳本的語法分(fēn)析程序不會在無效的line上停止,那麽我(wǒ)們就可以在目錄中(zhōng)加入一(yī)行以”SHELL”開(kāi)頭的指令,從而使管理器将它自己的log文件解讀爲OBEY文件,以此實現指令的執行。

    同時Claudio公布了另一(yī)個漏洞(ZDI-16-022 –CVE-2016-0451)的一(yī)些細節。這個漏洞會導緻文件随意被上傳,從而導緻人們可以更輕易的利用這個漏洞。(腳本運行速度慢(màn)是我(wǒ)們的方法的一(yī)大(dà)限制,這導緻我(wǒ)們需要花很多時間搜尋被添加的指令)

    如果你希望看到更多有關信息,請查看我(wǒ)們所發布的exploit。在Windows系統上的Single-shot exploitation可以作爲讀者的一(yī)個小(xiǎo)練習。

    保守的防護

    Golden Gate 通過在信息語法分(fēn)析中(zhōng)激活 MGRSEC_check_client_access() 程式來檢查access(使用權,途徑)。這個程式通過運行一(yī)系列的現成的規則來檢查連接的客戶是否被允許發送信息,對于有缺陷的版本也同樣如此。而在Oracle發布的補丁中(zhōng),它又(yòu)添加了一(yī)些默認規定,使得隻有來自于 127.0.0.1 and ::1de信息可以被接受。
    \

    當然這個辦法也有很多問題:第一(yī),這個補丁會打破原本依賴于遠程管理器連接的架構。第二,即使上述的檢查失敗,仍然有一(yī)部分(fēn)信息會被進行分(fēn)析——在我(wǒ)們的測試中(zhōng),我(wǒ)們意外(wài)地找到了很多未經授權的DoS問題(NULL指示器廢棄NULL pointer dereferences)。第三,GG暴露了很多潛在危險(原文爲expose a huge attack surface,直譯爲暴露了很大(dà)的攻擊面,可以理解爲有很多地方可被攻擊),而且基于我(wǒ)們對于樣本編碼的觀察,我(wǒ)們猜測可能還有很多未授權(或者繞過檢測的)問題還沒有被發現。
    \

    因此,我(wǒ)們強烈建議對于所有Golden Gate端口施加嚴格的防火(huǒ)牆監控(注意!這個軟件可以将上傳的文件動态鏈接至超過7800個端口)以防止不受信任的主機的TCP連接。通過我(wǒ)們關于威脅的模拟,我(wǒ)們預測,任何已連接的主機都可以輕易地compromise(妥協,實在是理解不了這個詞在這裏是什麽意思)GG服務器。

    除了軟件自身的問題之外(wài),我(wǒ)們還應當注意,在ZDI公告和Oracle的補丁發布16個月、我(wǒ)們告知(zhī)Tenable有關檢測缺失的問題13個月以及公衆第一(yī)次利用漏洞4個月後,我(wǒ)們仍然無法找到任何關于IDS/IPS工(gōng)具或者弱點掃描儀器的方案(ZDI/TippinPoint可能會有)。對我(wǒ)們來說,這大(dà)大(dà)阻礙了我(wǒ)們對問題的解決及緩解。
    \

    我(wǒ)們理解因爲信息的缺失,想要爲所有的公衆信息建立檢測機制是不可能的,但是信息産業對公衆信息洩露的漠視是衆所周知(zhī)的。難道我(wǒ)們不應該思考:這些供應商(shāng)真的希望使用者的隐私不被暴露,還是說他們隻是想讓顧客相信他們的産品是安全的(意味着隻是做表面功夫,但卻從來不采取實際措施)?

    不過值得慶幸的是,我(wǒ)們到現在都還可以收到那些關于DTLS漏洞的高危警示(諷刺,諷刺廠商(shāng)隻是提供警示,但是沒有采取實際措施)。

    積極主動研究探索的重要性

    從另外(wài)一(yī)個角度來講,這則小(xiǎo)故事也證明了積極主動的研究調查的重要性: 如果沒有這些真正想要解決問題的人(而不是那些假惺惺做出報告而不解決問題的人)的話(huà),這些在非常重要的系統中(zhōng)的漏洞甚至可以一(yī)直存在。這個故事也同時證明了,如果漏洞的可利用性不高,那麽這個漏洞很有可能被當作可以接受、存在的漏洞處理,而不是最終被解決。

    所以,我(wǒ)們需要具有探索精神的人去(qù)發現并且糾正這些漏洞,否則話(huà),人們将永遠活在100%安全的謊言之下(xià)。