- 云原生安全:攻防實踐與體系構建
- 劉文懋 江國龍 浦明 阮博男 葉曉虎
- 721字
- 2021-11-04 18:12:28
3.2 針對容器化開發測試過程的攻擊案例
過去,開發者關心的安全要素主要是代碼安全性,如寫的代碼是否足夠健壯、代碼是否正確處理了異常且不會引起拒絕服務、代碼是否能夠有效阻止各種注入漏洞、是否有溢出等。誠然,代碼安全性非常重要。但是,隨著以容器為代表的云原生技術的興起,開發環境與生產環境的差異被“容器化”逐漸消解,容器技術順理成章地參與到開發者的編碼、調試、打包過程中。然而,這同樣意味著,容器自身的安全問題可能會給上述開發階段的各個過程帶來風險。
SDL(Security Development Lifecycle,安全開發生命周期)實踐告訴我們,做安全越早越好,從開發階段就開始對安全性進行合理的評估和控制能夠有效提升整個工程質量。反之亦然,如果在開發階段就引入安全問題,那么它往往是最隱蔽的,在運行時再檢測這些問題將會頗為棘手。
本節研究一個針對容器化開發測試過程的攻擊案例——容器與宿主機間文件復制的安全問題,希望能夠提高開發者的安全開發意識。
在2019年歐洲開源峰會上,議題“In-and-out-Security of Copying to and from Live Containers”[7]通過梳理、展示多個安全漏洞,揭示了容器與宿主機間文件復制功能存在的安全問題。
這些安全問題主要與docker cp和kubectl cp等復制文件命令有關,而這些命令主要是為了方便開發者在開發環境、測試環境中進行測試。在真實的云原生業務環境中,應用程序應該完全按照從打包、測試到集成部署的統一步驟來管理。在生產環境的容器被創建、運行后,無論是從容器中復制文件或是將文件復制到容器中,都應該是被禁止的。
我們將對兩個具有代表性的高危漏洞——CVE-2018-15664和CVE-2019-14271的原理進行簡單分析和漏洞復現。
經過分析,大家將會發現,這一類容器與宿主機間文件復制功能的安全問題實際上還是一些經典安全問題在新環境下的表現,如符號鏈接的安全問題、動態鏈接庫劫持和相對路徑的安全問題等。