《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Docker的漏洞驗證框架的設計與實現(xiàn)
基于Docker的漏洞驗證框架的設計與實現(xiàn)
2018年電子技術應用第11期
陳一鳴,,寇小強,王永利
華北計算機系統(tǒng)工程研究所,,北京100083
摘要: 漏洞是信息安全研究的重要對象,,但目前漏洞種類繁多,,驗證方法復雜。針對搭建安全漏洞環(huán)境困難,、復現(xiàn)漏洞困難的問題,,基于Docker虛擬化技術,設計了一種將漏洞環(huán)境部署在容器中,,并使用相應漏洞利用腳本實現(xiàn)驗證的框架系統(tǒng),。此框架系統(tǒng)驗證過程需要提供Dockerfile文件或Docker鏡像以及相匹配的漏洞驗證腳本。首先,,系統(tǒng)運行一個擁有漏洞程序的Docker容器,。然后,框架再調(diào)用與此漏洞相匹配的驗證或攻擊腳本來驗證漏洞可用性,。經(jīng)過測試,,此系統(tǒng)可以大幅提高漏洞復現(xiàn)速度,同時降低了漏洞復現(xiàn)難度與技術門檻,。
中圖分類號: TP311
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.180753
中文引用格式: 陳一鳴,,寇小強,王永利. 基于Docker的漏洞驗證框架的設計與實現(xiàn)[J].電子技術應用,,2018,,44(11):99-101,106.
英文引用格式: Chen Yiming,,Kou Xiaoqiang,,Wang Yongli. Design and implementation of vulnerability verification framework based on Docker[J]. Application of Electronic Technique,2018,,44(11):99-101,,106.
Design and implementation of vulnerability verification framework based on Docker
Chen Yiming,,Kou Xiaoqiang,,Wang Yongli
National Computer System Engineering Reasearch Institute of China,Beijing 100083,China
Abstract: Vulnerability is an important object in the research of information security, but there are many kinds of vulnerabilities at present, and the verification is complex. In view of the difficulties of building security vulnerabilities and the difficulties of vulnerabilities reappearing, a framework system is designed to deploy vulnerabilities in containers based on Docker virtualization technology, and the corresponding verification script is used to implement the framework system. The framework system verification process needs to provide Dockerfile file or Docker mirrors, as well as matching vulnerability verification scripts. Firstly, the system runs a Docker container with a vulnerability program. The framework then calls the verification or attack scripts that match the vulnerability to verify the availability. After testing, the system can greatly improve the speed of the vulnerabilities recovery, and reduce the difficulty and the technical threshold for the reappearing of the vulnerabilities.
Key words : information security,;vulnerability verification,;Docker;virtualization

0 引言

    隨著信息技術的發(fā)展,,信息安全問題也愈演愈烈,,漏洞的存在可以使攻擊者在未授權的情況下訪問或破壞系統(tǒng)[1]。每天都會有新的漏洞被挖掘出來,,研究這些漏洞的成因或利用方法是安全人員必須完成的工作之一[2]?,F(xiàn)階段的漏洞種類繁多,按照產(chǎn)生漏洞的程序分類,,包括Web漏洞,、系統(tǒng)漏洞、應用程序漏洞,、Web中間件漏洞等[3],。按照漏洞利用方式分類,包括遠程利用漏洞,、本地利用漏洞,,再往下細分又可以分為命令執(zhí)行、溢出,、提權等漏洞[4],。不同的漏洞所依靠的運行環(huán)境也不相同,有些漏洞甚至需要多個軟件或系統(tǒng)的組合才能順利復現(xiàn)成功[5],。為簡化漏洞復現(xiàn)過程,,本文研究了使用Docker容器技術來進行漏洞場景的打包和發(fā)布技術,并且通過漏洞驗證模塊來驗證此漏洞場景,。

    關于漏洞驗證程序的編寫格式,,現(xiàn)階段已經(jīng)有數(shù)個漏洞驗證框架:Beebeeto、Pocsuite,、Bugscan,、Tangscan等。Beebeeto是由眾多安全研究人員所共同維護的一個規(guī)范化觀點證明(Proof of Concept,,POC)/漏洞利用(Exploit,,EXP)平臺,安全研究人員可以在互聯(lián)網(wǎng)上獲取漏洞信息,,然后按照BB2開發(fā)標準編寫出相應的POC或EXP提交到平臺,。Pocsuite是由知道創(chuàng)宇安全研究團隊打造的一款開源的遠程漏洞測試框架。BugScan是西安四葉草信息技術有限公司旗下BugScan社區(qū)出品的國內(nèi)首款基于社區(qū)的分布式漏洞掃描框架,。TangScan是一款在線安全漏洞檢測服務,,一個由眾多安全研究人員維護的企業(yè)在線安全體檢平臺,。上述框架都擁有一套自己的驗證程序腳本的編寫規(guī)范。對此,,文中也研究了將這些不同的編寫規(guī)范相兼容的方法,,以達到快速編寫驗證程序的目的。

1 系統(tǒng)結構

    系統(tǒng)整體結構分為Docker管理模塊,、POC驗證模塊和數(shù)據(jù)庫,。

    如圖1所示,Docker管理模塊分為容器,、鏡像,、倉庫三個部分[6]。容器模塊負責本地容器的創(chuàng)建,、運行,、終止和刪除。鏡像模塊負責從倉庫中獲取鏡像,、添加標簽,、上傳鏡像和刪除鏡像。倉庫模塊負責存儲制作好的鏡像和提供鏡像的下載服務,。驗證模塊分為執(zhí)行,、框架和庫三個部分,執(zhí)行模塊是驗證過程的入口,,所有的驗證程序都由執(zhí)行模塊執(zhí)行,,為了兼容不同類型的POC,執(zhí)行模塊會根據(jù)不同類型的POC來調(diào)取相應的框架來解析執(zhí)行,,具體的驗證代碼則是存放在POC庫中,。最后如果驗證通過,證明漏洞存在并且POC有效,,就會將相應的鏡像,、容器啟動的參數(shù)、倉庫的地址和驗證代碼等具體信息存放到數(shù)據(jù)庫中[7],。

jsj1-t1.gif

    系統(tǒng)的使用者需要提供給系統(tǒng)所需的資源來啟動處理過程,,包括搭建環(huán)境所需要的Docker鏡像、漏洞的詳細信息,、漏洞利用程序等資源,。

    如圖2所示,系統(tǒng)首先會加載漏洞所需要的資源,,一個完整的漏洞資源包括Docker鏡像或Dockerfile,、漏洞的詳細信息、漏洞的種類,、漏洞的危害程度,、漏洞的評分,、漏洞的利用程序等資源。

jsj1-t2.gif

    判斷資源完整性后,,如果資源完整,說明可以產(chǎn)生一個Docker容器,,并且提供了相應的驗證程序,。接下來,框架會根據(jù)提供的驗證程序信息調(diào)用不同的驗證框架來嘗試驗證Docker容器中運行的有漏洞的程序,。在驗證程序驗證完成后,,系統(tǒng)會根據(jù)驗證的結果來判斷漏洞提交者所提交的資源是否有效,若有效,,則將相關的信息存入數(shù)據(jù)庫中,;否則終止驗證過程,重新調(diào)整資源,。

2 Docker容器虛擬化技術

    Docker是PaaS提供商dotCloud開源的一個基于LXC(Linux Container)的應用容器引擎,,讓開發(fā)者可以將應用程序、依賴的運行庫文件打包并移植到一個新的容器中,,然后發(fā)布到任何系統(tǒng)為Linux的機器上,,也可以實現(xiàn)虛擬化解決方案[8]

    Docker的三大核心概念是鏡像,、容器和倉庫,。Docker鏡像類似于虛擬機鏡像,可以理解為創(chuàng)建Docker容器的模板,,它是創(chuàng)建容器的基礎,。Docker鏡像是必須向此漏洞驗證系統(tǒng)所提交的資源之一。

    容器是完全沙箱機制的實現(xiàn)方式,,任意容器之間不會有任何接口,,具有安全訪問資源的特性,而且容器的運行資源開銷小,,可以很容易地在機器和數(shù)據(jù)中心中運行,。容器是從鏡像創(chuàng)建的應用運行實例,可以將其啟動,、開始,、停止、刪除[9],。

    Docker倉庫是Docker集中存放鏡像文件的場所,,倉庫可以分為共有倉庫和私有倉庫兩種形式。漏洞驗證框架驗證后的Docker鏡像就會存放在私有倉庫中,。

    如圖3所示,,鏡像是容器的前提,,鏡像可以通過Pull操作從Docker倉庫中下載,完整制作的鏡像也可以通過Push操作向Docker倉庫中推送,。下載鏡像到本地后,,就可以使用鏡像來創(chuàng)建容器了,容器不同于鏡像,,容器擁有運行時需要的可讀寫層,,而鏡像只是靜態(tài)的只讀文件。通過run命令啟動的容器處于運行狀態(tài),,對于運行狀態(tài)的容器可以使用stop來終止,,終止狀態(tài)的容器并沒有消失,可以使用start操作來重新啟動,。如果希望容器暫停工作一段時間,,可以使用pause操作將容器切換到暫停狀態(tài),處于暫停狀態(tài)的容器不會占用CPU資源,,直到通過unpause操作恢復運行,。

jsj1-t3.gif

2.1 Docker容器與傳統(tǒng)虛擬化的不同

    傳統(tǒng)的服務器虛擬化解決的核心問題是計算資源的調(diào)配,而Docker容器解決的核心問題是應用開發(fā),、測試和部署,。如圖4所示,虛擬機技術通過Hypervisor層抽象底層基礎設施資源提供相互隔離的虛擬機,,通過統(tǒng)一配置,、統(tǒng)一管理,計算資源的可運維性,,資源利用率能夠得到有效的提升,。同時,虛擬機提供客戶機操作系統(tǒng),,客戶機變化不會影響宿主機,,能夠提供可控的測試環(huán)境,更能夠屏蔽底層硬件甚至基礎軟件的差異性,,讓應用做到廣泛兼容,。然而虛擬化技術因為要多模擬出一層操作系統(tǒng),都不可避免地出現(xiàn)計算,、IO,、網(wǎng)絡性能的損失[10]。而容器技術嚴格來說并不是虛擬化,,沒有客戶機操作系統(tǒng),,是共享內(nèi)核的。容器可以視為軟件供應鏈的集裝箱,,能夠把應用需要的運行環(huán)境,、緩存環(huán)境,、數(shù)據(jù)庫環(huán)境等封裝起來,以最簡潔的方式支持應用運行,,輕裝上陣,,性能更佳[11]

jsj1-t4.gif

    Docker鏡像特性則讓這種方式簡單易行,。當然,,因為Docker共享內(nèi)核的特性,所以容器隔離性沒有虛擬機那么好[12],。

2.2 獲取Docker鏡像

    Docker鏡像可以通過pull操作直接從倉庫中下載,,也可以通過Dockerfile來創(chuàng)建,。

    Dockerfile是由一系列命令和參數(shù)構成的腳本,,這些命令應用于基礎鏡像并最終創(chuàng)建一個新的鏡像。它們簡化了從頭到尾的流程并極大地簡化了部署工作,。

    如圖5所示,,Dockerfile從FROM命令開始,緊接著跟隨者各種方法,、命令和參數(shù),,其產(chǎn)出為一個新的可以用于創(chuàng)建容器的鏡像。

jsj1-t5.gif

3 POC驗證模塊

    為了提高驗證模塊的兼容度,、降低驗證程序編寫的學習成本,,此系統(tǒng)采用插件式的驗證框架設計,驗證過程由驗證引擎啟動,根據(jù)驗證程序的類型說明,,由分類器來決定輸入的參數(shù)和使用哪種框架來執(zhí)行程序[13],,Docker容器的啟動所產(chǎn)生的屬于漏洞環(huán)境的IP地址將作為參數(shù)輸入到驗證系統(tǒng)中[14],在經(jīng)過相應的框架執(zhí)行完成后,,不同的框架會產(chǎn)生不同的返回值,,甚至返回一個布爾值,這些返回值都將交給結果處理器來匯總處理,。在驗證程序驗證成功后,,在數(shù)據(jù)庫中就會將相應的漏洞信息標記為有效。

4 框架測試

    測試漏洞為已經(jīng)公布的couchdb數(shù)據(jù)庫漏洞,,漏洞編號為CVE-2017-12635,,漏洞于2017年11月15日被披露,任意用戶通過此漏洞可以創(chuàng)建管理員賬戶,,造成垂直權限提升,。向此系統(tǒng)提交漏洞的相關信息,提交的Dockerfile主要內(nèi)容為:(1)從鏡像庫中以Debian系統(tǒng)來作為基礎鏡像,;(2)獲得CouchDB相關的運行腳本,;(3)更新軟件源中的所有軟件列表,;(4)從軟件源中安裝cURL軟件;(5)運行從第二步獲得的腳本,,設置參數(shù)來添加CouchDB普通權限用戶,;(6)運行CouchDB服務。

    在以Dockerfile生成的鏡像的基礎上啟動容器,,啟動容器時設置相關的端口映射使Docker容器中的CouchDB服務端口映射到本地主機上,。

    在容器啟動后,就可以調(diào)用相關的驗證程序進行驗證,。編寫驗證程序時,,可以使用任何一種驗證框架來實現(xiàn)。此漏洞的驗證程序的內(nèi)容為發(fā)送一個經(jīng)過特殊構造的HTTP請求包,,目的是創(chuàng)建一個管理員賬戶,。請求包中包含JSON數(shù)據(jù),而此漏洞的形成原因就是由于Erlang和JavaScript對JSON解析方式的不同,,使得語句執(zhí)行產(chǎn)生差異性導致的,。在數(shù)據(jù)包發(fā)送之后,驗證程序會自動以剛剛創(chuàng)建的管理員賬戶進行登錄,,如果登錄成功,,就會返回漏洞存在的結果。確認返回結果后,,系統(tǒng)將相關的漏洞信息存放到了數(shù)據(jù)庫中,,并關閉了容器,漏洞驗證完畢,。

5 結論

    本文通過對Docker系統(tǒng)和漏洞驗證系統(tǒng)的研究和設計,,利用Docker容器和多框架的漏洞驗證系統(tǒng),設計了一種提供Dockerfile文件或者鏡像后,,可以快速地對漏洞環(huán)境進行驗證的漏洞驗證框架,。通過向系統(tǒng)提供具體的漏洞和驗證程序的測試,結果表明,,本框架大大簡化了漏洞環(huán)境的搭建過程,,同時也提升了漏洞驗證的速度。綜上所述,,本框架為需要頻繁驗證不同的漏洞提供了較有參考價值的解決方案,。

參考文獻

[1] 陳春玲,張凡,,余瀚.Web應用程序漏洞檢測系統(tǒng)設計[J].計算機技術與發(fā)展,,2017,27(8):101-105.

[2] 陳峰,羅養(yǎng)霞,,陳曉江,,等.網(wǎng)絡攻擊技術研究進展[J].西北大學學報(自然科學版),2007,,37(2):208-212.

[3] 羅玉斌.網(wǎng)絡安全漏洞掃描系統(tǒng)的設計與實現(xiàn)[D].長沙:國防科學技術大學,,2007.

[4] 趙智勇.網(wǎng)絡攻擊過程剖析[J].計算機與現(xiàn)代化,2012,,8(8):55-56.

[5] 竇文超.網(wǎng)絡攻擊模擬器及其關鍵技術研究[D].天津:天津理工大學,,2011.

[6] 董博,王雪,,索菲,,等.基于Docker的虛擬化技術研究[J].遼寧大學學報(自然科學版),2016,,43(4):327-330.

[7] 肖小芳,,宋建新.Docker網(wǎng)絡通信研究與實現(xiàn)[J].通訊世界,2017(22):1-2.

[8] 鐘良侃.Docker技術在Web服務系統(tǒng)中的應用研究[J].電腦知識與技術,,2016,,12(26):123-126.

[9] 鄒保平,,黃文思,,張文晉,等.基于Docker的應用部署管理平臺研究[J].電子設計工程,,2017,,25(12):41-44,48.

[10] 陳清金,,陳存香,,張巖.Docker技術實現(xiàn)分析[J].信息通信技術,2015(2):37-40.

[11] 張遙,,王森林.Docker安全性研究[J].網(wǎng)絡安全技術與應用,,2017(8):32-33.

[12] 伍陽.基于Docker的虛擬化技術研究[J].信息技術,2016(1):121-123.

[13] 吳倩倩.綜合型漏洞掃描系統(tǒng)的研究與設計[D].北京:華北電力大學(北京),,2015.

[14] 王良.基于插件技術的漏洞掃描系統(tǒng)設計與應用[D].上海:上海交通大學,,2012.



作者信息:

陳一鳴,寇小強,,王永利

(華北計算機系統(tǒng)工程研究所,,北京100083)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。