快檢查一下你的sudo:無需密碼就能獲取root權限,還是個10年老bug

Python實戰社羣

Java實戰社羣

長按識別下方二維碼,按需求添加

掃碼關注添加客服

進Python社羣▲

掃碼關注添加客服

進Java社羣

賈浩楠 魚羊 發自 凹非寺
量子位 報道 | 公衆號 QbitAI

“本文經AI新媒體量子位(公衆號 ID: QbitAI)授權轉載,轉載請聯繫出處”

“這可能是近期內最需要重視的sudo漏洞。”

程序員都知道,一句sudo可以“爲所欲爲”。

而現在,來自Qualys的安全研究人員發現,sudo中存在一個嚴重的漏洞:

任何本地用戶,無需身份驗證(密碼),也能獲得root權限

也就是說,攻擊者完全可以利用這個漏洞,直接接管主機系統!

什麼樣的漏洞

Qualys的研究人員指出,此漏洞是基於堆的緩衝區溢出。

利用這一漏洞,攻擊者無需知道用戶密碼,一樣可以獲得root權限。並且,是在默認配置下。

攻擊效果

這一漏洞名爲CVE-2021-3156(又名Baron Samedit)。Qualys分析認爲,漏洞發生的原因在於sudo錯誤地轉義了參數中的反斜槓

通常,通過shell(sudo -s或sudo -i)運行命令行時,sudo會轉義特殊字符。

但 -s 或 -i 也可能被用來運行sudoedit,在這種情況下,實際上特殊字符沒有被轉義,這就可能導致緩衝區溢出。

利用該漏洞,研究人員在多個Linux發行版上成功獲得了完整的root權限,包括Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2)。

並且,Qualys認爲,在這種情況下,sudo支持的其他操作系統和Linux發行版也很容易受到攻擊,並不能排除風險。

漏洞10年前就存在

能讓攻擊者跳過身份驗證,直接獲取root權限,這個漏洞本身的嚴重程度,按理說應該引起大部分用戶和開發者注意。

事實上,這個漏洞2011年7月開始就已經存在,是由8255ed69這個commit引入的。

匪夷所思的是,從2011年7月29日提交到現在,一直沒有人發現、修復由此引發的漏洞。

也就是說,這個漏洞一直存在於sudo1.9.0到1.9.5p1的所有穩定版本,和1.8.2到1.8.31p2的所有舊版本的默認配置中。

按照慣例,在Qualys公佈這一漏洞的詳細消息之前,sudo已經正式修復這個漏洞。

所以,升級到sudo的1.9.5p2或是更高版本,就能化解風險。

如何測試你現在使用的sudo版本是否存在漏洞呢?

首先你需要以非root用戶的身份登錄,並運行“sudoedit -s /”命令。

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

爲啥10年未修復?

爲什麼提交近10年間,這個漏洞都沒人理會呢?

在Hacker News上,有網友給出了推斷:

他認爲,包括但不限於sudo這樣的Linux程序的用戶提交聲明,是從來沒有經過測試的

提交沒有測試的bug聲明,原作者是沒有充足的理由相信bug的真實性,也就無所謂bug是否修復了。

比如去年,有蘋果的安全人員也發現了一個類似的安全漏洞,Linux Mint上的sudo在非默認配置下,也允許用戶跳過身份驗證獲得root權限。

而類似這樣的漏洞補丁,大部分也沒有經過測試,所以,對用戶來說,即使安裝漏洞修復,也還存在漏洞修補不完全,以及引起新漏洞的風險。

還有人說,sudo官方沒有“審稿人”的職能,對於用戶的提交,沒有確定的安全標準,所以也不會有的測試和審覈。

普通用戶怎麼辦呢?

很遺憾,現在根本沒有一套完美的解決辦法。

面對可能存在的漏洞,你能做的,就是格外留意自己的系統安全,避免不信任的用戶碰到你的電腦。

參考鏈接:
https://www.theregister.com/2021/01/26/qualys_sudo_bug/
https://news.ycombinator.com/item?id=25919235
https://bit.ly/36hvlal


—  —

本文系網易新聞•網易號特色內容激勵計劃簽約賬號【量子位】原創內容,未經賬號授權,禁止隨意轉載。

程序員專欄 掃碼關注填加客服 長按識別下方二維碼進羣


近期精彩內容推薦:  

 幾句話,離職了

 中國男性的私密數據大賞,女生勿入!

 爲什麼很多人用“ji32k7au4a83”作密碼?

 一個月薪 12000 的北京程序員的真實生活 !


在看點這裏好文分享給更多人↓↓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章