美創(chuàng)安全實(shí)驗(yàn)室 | Docker逃逸原理
Docker是時(shí)下使用范圍最廣的開(kāi)源容器技術(shù)之一,具有高效易用等優(yōu)點(diǎn)。由于設(shè)計(jì)的原因,Docker天生就帶有強(qiáng)大的安全性,甚至比虛擬機(jī)都要更安全,但你可曾想過(guò)“堅(jiān)不可摧”的Docker也會(huì)被人攻破,Docker逃逸所造成的影響之大幾乎席卷了全球的Docker容器。本期美創(chuàng)安全實(shí)驗(yàn)室將會(huì)帶大家研究造成Docker逃逸的根本原理以及相應(yīng)的防御方法。
Docker簡(jiǎn)介
Docker是一種容器,容器的官方定義是:將軟件打包成標(biāo)準(zhǔn)化單元、以用于開(kāi)發(fā)、交付和部署。容器的特點(diǎn)在于格式統(tǒng)一,運(yùn)行速度快,所需資源小,并且可以層層重疊。
與虛擬機(jī)的架構(gòu)進(jìn)行一下對(duì)比就可以看出,Docker整體的架構(gòu)更加輕巧,靈活。而且由于Docker是直接利用宿主機(jī)的系統(tǒng)內(nèi)核,所以可以做到幾秒鐘之內(nèi)創(chuàng)建大量的容器,他們的啟動(dòng)速度是在數(shù)量級(jí)上的差距。
圖1:虛擬機(jī)與Docker的架構(gòu)對(duì)比圖
(左為虛擬機(jī)架構(gòu)、右為Docker架構(gòu))
Docker逃逸原理
因?yàn)镈ocker所使用的是隔離技術(shù),就導(dǎo)致了容器內(nèi)的進(jìn)程無(wú)法看到外面的進(jìn)程,但外面的進(jìn)程可以看到里面,所以如果一個(gè)容器可以訪問(wèn)到外面的資源,甚至是獲得了宿主主機(jī)的權(quán)限,這就叫做“Docker逃逸”。
目前產(chǎn)生Docker逃逸的原因總共有三種:
一、由內(nèi)核漏洞引起。
二、由Docker軟件設(shè)計(jì)引起。
三、由特權(quán)模式與配置不當(dāng)引起。
接下來(lái)依次對(duì)這三種逃逸方法做簡(jiǎn)單說(shuō)明。
01由于內(nèi)核漏洞引起的逃逸
因?yàn)镈ocker是直接共享的宿主主機(jī)內(nèi)核,所以當(dāng)宿主主機(jī)的內(nèi)核存在安全漏洞時(shí)會(huì)一并影響Docker的安全,導(dǎo)致可能會(huì)造成Docker逃逸。具體流程如下:
①使用內(nèi)核漏洞進(jìn)入內(nèi)核上下文
②獲取當(dāng)前進(jìn)程的task struct
③回溯task list 獲取pid = 1的task struct,復(fù)制其相關(guān)數(shù)據(jù)
④切換當(dāng)前namespace
⑤打開(kāi)root shell,完成逃逸
02由于Doker軟件設(shè)計(jì)引起的逃逸
比較典型的例子是Docker的標(biāo)準(zhǔn)化容器執(zhí)行引擎----runc。Runc曾在2019年2月被爆出來(lái)過(guò)一個(gè)Docker逃逸漏洞CVE-2019-5736。其漏洞原理是,Docker、Containerd或其他基于runc的容易在運(yùn)行時(shí)存在安全漏洞,攻擊者可以通過(guò)特定的容器鏡像或者exec操作獲取到宿主機(jī)runc執(zhí)行文件時(shí)的文件句柄并修改掉runc的二進(jìn)制文件,從而獲取到宿主機(jī)的root執(zhí)行權(quán)限,造成Docker逃逸。
03由于特權(quán)模式+目錄掛載引起的逃逸
這一種逃逸方法較其他兩種來(lái)說(shuō)用的更多。特權(quán)模式在6.0版本的時(shí)候被引入Docker,其核心作用是允許容器內(nèi)的root擁有外部物理機(jī)的root權(quán)限,而此前在容器內(nèi)的root用戶只有外部物理機(jī)普通用戶的權(quán)限。
使用特權(quán)模式啟動(dòng)容器后(docker run --privileged),Docker容器被允許可以訪問(wèn)主機(jī)上的所有設(shè)備、可以獲取大量設(shè)備文件的訪問(wèn)權(quán)限、并可以執(zhí)行mount命令進(jìn)行掛載。
當(dāng)控制使用特權(quán)模式的容器時(shí),Docker管理員可通過(guò)mount命令將外部宿主機(jī)磁盤設(shè)備掛載進(jìn)容器內(nèi)部,獲取對(duì)整個(gè)宿主機(jī)的文件讀寫權(quán)限,此外還可以通過(guò)寫入計(jì)劃任務(wù)等方式在宿主機(jī)執(zhí)行命令。
除了使用特權(quán)模式啟動(dòng)Docker會(huì)引起Docker逃逸外,使用功能機(jī)制也會(huì)造成Docker逃逸。Linux內(nèi)核自版本2.2引入了功能機(jī)制(Capabilities),打破了UNIX/LINUX操作系統(tǒng)中超級(jí)用戶與普通用戶的概念,允許普通用戶執(zhí)行超級(jí)用戶權(quán)限方能運(yùn)行的命令。例如當(dāng)容器以--cap-add=SYSADMIN啟動(dòng),Container進(jìn)程就被允許執(zhí)行mount、umount等一系列系統(tǒng)管理命令,如果攻擊者此時(shí)再將外部設(shè)備目錄掛載在容器中就會(huì)發(fā)生Docker逃逸。
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
最新活動(dòng)更多
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
精彩回顧立即查看>> 2024中國(guó)國(guó)際工業(yè)博覽會(huì)維科網(wǎng)·激光VIP企業(yè)展臺(tái)直播
-
精彩回顧立即查看>> 【產(chǎn)品試用】RSE30/60在線紅外熱像儀免費(fèi)試用
-
精彩回顧立即查看>> 2024(第五屆)全球數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)大會(huì)暨展覽會(huì)
-
精彩回顧立即查看>> 【線下會(huì)議】全數(shù)會(huì)2024電子元器件展覽會(huì)
-
精彩回顧立即查看>> 三菱電機(jī)紅外傳感器的特性以及相關(guān)應(yīng)用領(lǐng)域
編輯推薦
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市