【最新】CVE-2021-3156漏洞預警

星河Salaxy發表於2021-04-01

一.   簡介


2021年1月26日,Linux安全工具sudo被發現嚴重的基於堆緩衝區溢位漏洞。利用這一漏洞,攻擊者無需知道使用者密碼,一樣可以獲得root許可權,並且是在預設配置下。此漏洞已分配為CVE-2021-3156,危險等級評分為7分。

當sudo透過-s或-i命令列選項在shell模式下執行命令時,它將在命令引數中使用反斜槓轉義特殊字元。但使用-s或-i標誌執行sudoedit時,實際上並未進行轉義,從而可能導致緩衝區溢位。因此只要存在sudoers檔案(通常是/etc/sudoers),攻擊者就可以使用本地普通使用者利用sudo獲得系統root許可權。研究人員利用該漏洞在多個Linux發行版上成功獲得了完整的root許可權,包括Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2),並且sudo支援的其他作業系統和Linux發行版也很容易受到攻擊。

目前漏洞細節已公開,請受影響的使用者儘快採取措施進行防護。



二.   影響版本

Sudo 1.8.2 - 1.8.31p2

Sudo 1.9.0 - 1.9.5p1




三.   漏洞檢測


 首先以非root使用者的身份登入,並執行“sudoedit -s /”命令。

有漏洞的系統會丟擲一個以“sudoedit:”開頭的錯誤,而打過補丁的系統則會顯示一個以“usage:”開頭的錯誤。

圖片



四.   防禦建議


 1. 官方升級

目前官方已在sudo新版本1.9.5p2中修復了該漏洞,請受影響的使用者儘快升級版本進行防護,官方下載連結:https://www.sudo.ws/download.html

注:建議使用者在升級前做好資料備份工作,避免出現意外

2.臨時防護措施

Red Hat相關使用者若暫時無法進行升級操作,建議使用以下方法緩解:

1). 安裝所需的systemtap軟體包和依賴項:

    systemtap yum-utils kernel-devel-"$(uname -r)"


    RHEL 7安裝命令:

      kernel debuginfo:debuginfo-install -y kernel-"$(uname -r)"


      RHEL 8安裝命令:

        sudo debuginfo:debuginfo-install sudo

        2). 建立以下系統呼叫指令碼:(將檔案命名為sudoEd-lock.stap)

          probe process("/usr/bin/sudo").function("main")  {
                 command = cmdline_args(0,0,"");
                 if (strpos(command, "edit") >= 0) {
                          raise(9);        }}

          3). 使用以下命令安裝指令碼:(使用root許可權)

            nohup stap -g sudoedit-block.stap &

            該指令碼將使得易受攻擊的sudoedit二進位制檔案停止工作。Sudo命令仍然可以正常工作。

            注:上述修改在重啟後失效,必須在每次重啟後重新應用。

            一旦安裝了新的補丁包,系統分頁尾本就可以被刪除,可以透過取消systemtap程式來刪除systemtap指令碼。例如,透過執行以下命令:

              kill -s SIGTERM 7590 (where 7590 is the PID of the systemtap process)

              警告:不要試圖透過刪除符號連結來禁用sudo編輯,因為這不是一個好的緩解選項。



              五.   參考連結


              https://access.redhat.com/security/vulnerabilities/RHSB-2021-002

              https://www.sudo.ws/alerts/unescape_overflow.html


              相關文章