官术网_书友最值得收藏!

3.1.1 容器鏡像存在的風險

所有容器都來自容器鏡像。因此,我們首先研究容器鏡像的風險。

與虛擬機鏡像不同的是,容器鏡像是一個不包含系統內核的聯合文件系統(Unionfs),即為進程的正常運行提供基本、一致的文件環境。另外,容器是動態的,鏡像是靜態的。考慮到這一特點,我們從鏡像的內容和鏡像的流通、使用等幾方面開展分析。

1.不安全的第三方組件

隨著容器技術的成熟和流行,大部分流行的開源軟件都提供了Dockerfile和容器鏡像。在實際的容器化應用開發過程中,人們很少從零開始構建自己的業務鏡像,而是將Docker Hub上的鏡像作為基礎鏡像,在此基礎上增加自己的代碼或程序,然后打包成最終的業務鏡像并上線運行。例如,為了提供Web服務,開發人員可能會在Django鏡像的基礎上,加上自己編寫的Python代碼,然后打包成Web后端鏡像。

毫無疑問,這種積累和復用減少了造輪子的次數,大大提高了開發效率和軟件質量,推動了現代軟件工程的發展。如今,一個較為普遍的情況是,用戶自己的代碼依賴若干開源組件,這些開源組件本身又有著復雜的依賴樹,甚至最終打包好的業務鏡像中還包含完全用不到的開源組件。這導致許多開發者可能根本不知道自己的鏡像中到底包含多少以及哪些組件。包含的組件越多,可能存在的漏洞就越多,大量引入第三方組件的同時也大量引入了風險。2020年,有研究報告[1]顯示,在使用最為廣泛的鏡像倉庫Docker Hub中,約有51%的鏡像至少包含一個危險(critical)級別的安全漏洞。這意味著,使用這些鏡像或基于這些鏡像制作目的鏡像都將使最終業務面臨安全風險——無論業務自身代碼程序的安全性如何。

2.大肆傳播的惡意鏡像

除了有漏洞的可信開源鏡像外,以Docker Hub為代表的公共鏡像倉庫中還可能存在一些惡意鏡像。如果使用了這些鏡像或把這些鏡像作為基礎鏡像,其行為相當于引狼入室,風險不言自明。在3.3節,我們將介紹一個在Docker Hub投放惡意挖礦鏡像的案例。截至Docker Hub官方移除這些惡意鏡像之時,它們已經累計被下載超過500萬次。

3.極易泄露的敏感信息

容器的先進性之一在于它提供了“一次開發,隨處部署”的可能性,大大降低了開發者和運維人員的負擔。但凡事有利就有弊。為了開發、調試方便,開發者可能會將敏感信息——如數據庫密碼、證書和私鑰等內容直接寫到代碼中,或者以配置文件形式存放。構建鏡像時,這些敏感內容被一并打包進鏡像,甚至上傳到公開的鏡像倉庫,從而造成敏感數據泄露。

[1] https://prevasio.com/static/web/viewer.html?file=/static/Red_Kangaroo.pdf。

主站蜘蛛池模板: 桦川县| 海城市| 吉首市| 民县| 西宁市| 响水县| 交口县| 南昌市| 棋牌| 苍南县| 双江| 章丘市| 揭阳市| 甘泉县| 斗六市| 梅河口市| 郎溪县| 团风县| 远安县| 云阳县| 翁源县| 桃源县| 安陆市| 玉屏| 新巴尔虎左旗| 随州市| 铜鼓县| 南陵县| 英超| 广灵县| 宝鸡市| 桓台县| 松桃| 博兴县| 彩票| 莱阳市| 黄龙县| 白城市| 马鞍山市| 开远市| 双鸭山市|