1. 程式人生 > 其它 >隱藏了十年的Sudo漏洞爆出:無需密碼就能獲取root許可權

隱藏了十年的Sudo漏洞爆出:無需密碼就能獲取root許可權

技術標籤:Web安全

Sudo,想必但凡接觸過Linux或Unix作業系統的開發者都知道這個可以"為所欲為"的應用程式,系統管理員可通過Sudo讓普通使用者執行部分或全部的root命令。

而就在 1 月 26 日,雲安全和合規解決方案公司 Qualys 披露了Sudo中存在的一個嚴重漏洞(漏洞編號為 CVE-2021-3156,Qualys將其命名為 Baron Samedit):任何本地使用者,無需密碼驗證就可以獲取root許可權!

隱藏了十年的漏洞

Qualys 安全研究人員指出,該漏洞是基於堆的緩衝區溢位,Sudo作者也在1 月 26 日的報告中簡述了這個漏洞的由來:

通常,在shell模式下執行sudo -s 或 sudo -i 命令時,Sudo 會在命令引數中使用反斜槓轉義特殊字元。
但執行sudoedit時同樣可能會用到-s或-i,並設定啟用 shell 模式的標誌,那麼由於此時實際上並沒有執行命令,Sudo 並不會去轉義特殊字元。最終,決定是否刪除轉義字元的程式碼就不會去檢查命令實際上是否正在執行,只是設定了 shell 標誌。這就可能導致可被利用的基於堆的緩衝區溢位。

Qualys 研究小組約兩週前發現該漏洞,並且十分驚人的是,該漏洞已經隱藏了將近十年無人發現!它於 2011 年 7 月由 8255ed69 這個 commit 引入,因此過去十年中Sudo釋出的所有版本在預設配置下都存在這一漏洞,包括從1.8.2 到 1.8.31p2 的所有舊版本及1.9.0 到 1.9.5p1 的所有穩定版本。

鑑於絕大多數Linux 和 Unix系統中都安裝了 Sudo,Qualys 研究人員利用該漏洞對多個Linux 發行版進行了測試,最終都成功獲得了完整的root 許可權,包括 Debian 10(sudo 1.8.27),Ubuntu 20.04(sudo 1.8.31)和 Fedora 33(sudo 1.9.2)。

因此 Qualys 認為,攻擊者也很可能在 Sudo 支援的其他作業系統和 Linux 發行版中利用該漏洞。所以在確認該漏洞後,Qualys及時與 Sudo 作者和開源發行版進行協作並於 1 月 26 日宣佈漏洞的存在。

當然,披露漏洞並不是為了讓攻擊者趁虛而入,Sudo在Qualys公佈之前就已正式修復了這個漏洞,並給出瞭解決方案:Sudo 更新至版本 1.9.5p2 或更高版本即可。

圖片

兩年發現三個漏洞

這並不是 Sudo 第一次被發現存在漏洞,這次的 CVE-2021-3156,是這兩年來 Sudo 被曝出的第三個安全漏洞了。

2019 年 10 月公佈的編號 CVE-2019-14287 、被稱為-1 UID bug 的漏洞,與 2020 年 2 月公佈的編號CVE-2019-18634、被稱為pwfeedback bug 的漏洞,都可以使受限制的使用者執行root 命令,不過慶幸的是,這兩種漏洞很難被利用,因為它們需要複雜且非標準的 Sudo 設定。

而此次曝出的這個漏洞隱藏已久並易於利用,與前兩個漏洞相比危險性最高。

有國外開發者對該漏洞成功蟄伏十年表示詫異,因此嘗試對 Sudo 採用模糊測試來發現漏洞。最後發現,2 小時的 CPU 時間就能在 setuid(Sudo 是 setuid 二進位制檔案)實用程式中找到嚴重的安全漏洞。因此該開發者建議,可以快速使用模糊測試來發現廣泛使用的實用程式中隱藏的嚴重漏洞

被廣泛利用的可能性不大

慶幸的是,易於利用不代表這個漏洞可以被廣泛利用。來自 Linux 基金會的 David A. Wheeler 稱:“該漏洞不可遠端利用,攻擊者只有在易受攻擊的計算機上才能利用此漏洞。”

Kenna Security 安全研究主管 Jerry Gamblin對此也表示贊同:“該漏洞的利用需要預先存在一定級別的訪問許可權,因此廣泛利用它的可能性不大。”即該漏洞雖然危險,由此受到廣泛攻擊的可能性卻很小。

話雖如此,但對於已經擁有 Linux 環境初始訪問許可權的惡意內部人員或攻擊者來說,這個漏洞的存在還是很大的隱患。殭屍網路這個攻擊媒介更是不能忽視,前一陣FreakOut 惡意軟體攻擊 Linux裝置的事件就是前車之鑑。

一週前,據安全公司 Check Point Software 研究人員稱,一種新的惡意軟體,即FreakOut,利用了最近披露的在 Linux 系統上執行的網路連線儲存(NAS)裝置中的漏洞,將計算機加入 IRC 殭屍網路,以發起分散式拒絕服務(DDoS),攻擊並挖掘 Monero 加密貨幣。

因此,Qualys 也表示,如果殭屍網路運營商暴力破解低階服務帳戶,那麼該漏洞可能在攻擊的第二階段就被濫用,入侵者將輕鬆獲得 root 許可權,並完全控制被入侵的伺服器。

除版本更新別無他法

那麼現在的你應該怎麼做呢?

首先,先用以下命令檢測你的 Sudo 版本是否存在漏洞;

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

如果你收到的是usage或錯誤訊息,那麼恭喜,你的Sudo版本不會受到攻擊;如果結果是Segmentation Fault,很遺憾,你的Sudo存在該漏洞。

然後接下來,

你就只能升級到 Sudo 1.9.5p2 版本或更高版本了,畢竟 Sudo 自己都說了:除了更新版本,其他解決方法是“None”

Sudo 1.9.5p2下載地址為:https://www.sudo.ws/stable.html,大家儘快更新吧!

圖片

參考連結:

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

https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

https://milek7.pl/howlongsudofuzz/