CentOS 7 離線更新 sudo 套件

Posted by Joseph on June 21, 2021 · 3 mins read

這次是因為CVE-2021-3156 指出 Linux 環境下存在著 sudo 指令漏洞,可以非法取得 sudo 權限,相關文章可以參考 CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit),剛好我要更新的主機環境沒有辦法連網路,所以在這邊記錄自己的處理方式。

如果主機環境有網路環境,可以直接透過 yum 下載更新即可,如果沒有,則可以參考這邊記錄的方法處理。

漏洞檢測

這邊的環境是使用 osboxes.org 網站下載的 CentOS 7-1804 版本來測試。

要看主機是否有 sudo漏洞,測試方式是輸入下列指令,如果出現 Segmentation fault則表示套件存在漏洞

$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault

更新 sudo package

主機沒有網路則必須先在其他主機上下載檔案,再將檔案搬移到要更新的主機,下面是離線安裝的方法: 首先至 https://pkgs.org 查詢 sudo 套件,找到 CentOS 7,在CentOS Updates x86_64 區塊找到sudo-1.8.23-10.el7_9.1.x86_64.rpm,從裡面的紀錄可以看到這個版本修復了 CVE-2021-3156問題。

可以用下列兩種方式取得 sudo 套件

  1. 至Centos下載 sudo package: http://mirror.centos.org/centos/7/updates/x86_64/Packages/

  2. 使用下列指令下載,會下載最新的版本,並下載到指定的目錄,如果要指定版本的套件,則將 sudo 改為 sudo-version即可。

     $ yum install --downloadonly --downloaddir=/home/osboxes sudo
    

下載完檔案後,接著將檔案搬移放至主機,接續執行下列指令

$ yum localinstall -y --nogpgcheck path_to_your_package

# 如果有多個 dependencies可以試試看下面的指令(擇一)
$ yum localinstall -y --nogpgcheck folder/*
$ yum install folder/*

更新完再執行一次指令,就不會有前面看到的錯誤了。

$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...

參考文章

CVE-2021-3156 Sudo 安全漏洞

修復 Sudo Buffer Overflow 漏洞 (CVE-2021-3156)