如何在CentOS 5/6/7或RHEL 5/6/7上修復並保護Linux伺服器免受Dirty COW漏洞攻擊


本文將介紹如何修復CentOS/Red Hat上的Dirty Cow Linux漏洞。Dirty Cow Linux漏洞於2016年10月19日被披露,這是一個在Linux作業系統核心級別的許可權提升漏洞,被稱為Dirty COW,因為它利用了核心長期存在的COW(寫時複製)機制,導致大多數伺服器面臨風險。實際上,在Red Hat上,它被稱為CVE-2016-5195。這可能會影響Red Hat Enterprise Linux 5、6、7附帶的核心。

Dirty Cow意味著伺服器上的普通使用者或非特權使用者將獲得對所有可讀取檔案的寫訪問許可權,從而提高他們在系統上的訪問許可權。

大多數Linux發行版都已經發布了針對此漏洞的修復程式,因此無需擔心,您可以使用本文中的方法來修復它。

檢查CentOS/RHEL機器上的漏洞

要在CentOS/RHEL機器上檢查漏洞,我們需要執行以下指令碼,該指令碼適用於RHEL和CentOS上的許多核心。

我們可以使用以下連結從Red Hat儲存庫下載指令碼

# wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh
Output:
--2016-11-21 11:41:19--
https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.shResolving access.redhat.com... 104.120.145.18
Connecting to access.redhat.com|104.120.145.18|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16478 (16K) [application/x-sh]
Saving to: “rh-cve-2016-5195_1.sh”
100%[======================================>] 16,478 72.4K/s in 0.2s
2016-11-21 11:41:19 (72.4 KB/s) - “rh-cve-2016-5195_1.sh” saved [16478/16478]

下載檔案後,我們需要為指令碼新增可執行許可權。

# chmod +x rh-cve-2016-5195_1.sh

現在,我們將執行指令碼以檢測機器是否存在漏洞。

# ./rh-cve-2016-5195_1.sh
Output:
Your kernel is 2.6.32-642.6.1.el6.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial
mitigation described at https://access.redhat.com/security/vulnerabilities/2706661 .

修復CentOS/RHEL上的Dirty Cow漏洞

我們可以直接從RHEL/CentOS儲存庫應用修復程式,只需更新核心並重新啟動伺服器即可。

以下是更新CentOS/RHEL機器上所有軟體包的命令。

# sudo yum update
Output:
yum update
Loaded plugins: fastestmirror, security
Setting up Update Process
Determining fastest mirrors
epel/metalink | 4.9 kB 00:00
* base: mirror.fibergrid.in
* epel: epel.scopesky.iq
* extras: mirror.fibergrid.in
* updates: mirror.fibergrid.in
…
…
Resolving Dependencies
--> Running transaction check
---> Package bind-libs.x86_64 32:9.8.2-0.47.rc1.el6_8.1 will be updated
---> Package bind-libs.x86_64 32:9.8.2-0.47.rc1.el6_8.3 will be an update
---> Package bind-utils.x86_64 32:9.8.2-0.47.rc1.el6_8.1 will be updated
---> Package bind-utils.x86_64 32:9.8.2-0.47.rc1.el6_8.3 will be an update
---> Package httpd.x86_64 0:2.2.15-54.el6.centos will be updated
---> Package httpd.x86_64 0:2.2.15-55.el6.centos.2 will be an update
---> Package httpd-tools.x86_64 0:2.2.15-54.el6.centos will be updated
---> Package httpd-tools.x86_64 0:2.2.15-55.el6.centos.2 will be an update
---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.111-2.6.7.2.el6_8 will be updated
---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.121-2.6.8.1.el6_8 will be an upda te
…
kamailio-debuginfo.x86_64 0:4.4.4-1.1
kamailio-mysql.x86_64 0:4.4.4-1.1
kamailio-unixodbc.x86_64 0:4.4.4-1.1
kernel-firmware.noarch 0:2.6.32-642.11.1.el6
kernel-headers.x86_64 0:2.6.32-642.11.1.el6
kexec-tools.x86_64 0:2.0.0-300.el6_8.1
libblkid.x86_64 0:2.17.2-12.24.el6_8.1
libgcrypt.x86_64 0:1.4.5-12.el6_8
libuuid.x86_64 0:2.17.2-12.24.el6_8.1
nss.x86_64 0:3.21.3-2.el6_8
nss-sysinit.x86_64 0:3.21.3-2.el6_8
nss-tools.x86_64 0:3.21.3-2.el6_8
nss-util.x86_64 0:3.21.3-1.el6_8
perf.x86_64 0:2.6.32-642.11.1.el6
policycoreutils.x86_64 0:2.0.83-30.1.el6_8
selinux-policy.noarch 0:3.7.19-292.el6_8.2
selinux-policy-targeted.noarch 0:3.7.19-292.el6_8.2
tzdata.noarch 0:2016i-1.el6
tzdata-java.noarch 0:2016i-1.el6
util-linux-ng.x86_64 0:2.17.2-12.24.el6_8.1
Complete!

更新完成後,我們需要重新啟動機器才能使更新生效,以下是重新啟動機器的命令。

# sudo reboot

更新後驗證系統核心更新

由於我們已經升級了軟體包並更新了機器以修復Dirty Cow漏洞,我們需要檢查核心是否已升級,以下是驗證的命令。

我們可以執行之前步驟中下載的指令碼以檢查漏洞,或者執行以下命令:

./rh-cve-2016-5195_1.sh
Output:
Your kernel is 2.6.32-642.11.1.el6.x86_64 which is NOT vulnerable.

如果指令碼顯示機器不存在漏洞,則表示修復成功。

# uname -r
Output:
2.6.32-642.11.1.el6.x86_64

我們可以看到核心已從2.6.32-642.6.1.el6.x86_64更新到2.6.32-642.11.1.el6.x86_64,因此Linux機器已安全地免受Dirty Cow漏洞的攻擊。

在本文中,我們學習瞭如何使用RHEL提供的指令碼檢查CentOS/RHEL Linux機器上的Dirty Cow漏洞,以及如何修復該漏洞並在更新後進行驗證。

更新於:2020年1月23日

244 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告