免責聲明
本文所述漏洞復現方法僅供安全研究及授權測試使用;
任何個人/組織須在合法合規前提下實施,嚴禁用于非法目的;
作者不對任何濫用行為及后果負責,如發現新漏洞請及時聯系廠商并遵循漏洞披露規則。
漏洞簡述
Linux sudo是linux系統管理指令,是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,-h(--host)選項在 2013 年 9 月發布的 Sudo v1.8.8 中實現,此選項允許用戶列出當前主機以外的主機的sudo規則
Linux sudo host 權限提升漏洞(CVE-2025-32462)源于sudo 的-h(--host)選項錯誤應用遠程主機規則到本地,攻擊者可繞過權限提升至root并執行任意代碼
CVE-2025-32462 漏洞自12 年前host選項實現以來就一直隱藏在人們的視線之外,由于它是內置選項,因此無需利用其他漏洞即可提升權限,該漏洞只能通過Host或Host_Alias指令的特定配置才能利用,而這些指令在企業環境中很常見
影響版本
1.9.0 <= sudo <= 1.9.17
1.8.8 <= sudo <= 1.8.32
利用條件
- 本地低權限用戶
- 存在基于主機的權限規則:
/etc/sudoers
中定義Host
或Host_Alias
- 知道允許執行命令的遠程主機名
漏洞復現與原理分析
一、環境搭建
任意找一個sudo版本在受影響區間的linux系統即可,我這里用的是CentOS7.9,sudo版本如下
創建一個新用戶User1,密碼為User1111
二、漏洞復現與原理分析
(一) Host_Alias
以下/etc/sudoers
文件片段展示了為User1用戶定義的兩條規則
此文件分發到三臺服務器(LDAPClient、LDAPServer 和 Pentest),目標是限制對LDAPClient服務器的訪問,但允許User1用戶完全管理LDAPServer服務器
- 前兩行是Host_Alias指令,定義包含主機列表的變量
- 第3行的規則使用Host_Alias指令
- 允許User1用戶在LDAPServer服務器上以 root 身份執行所有命令
- 明確拒絕LDAPClient服務器上的規則
- 第4行的規則明確允許User1用戶在Pentest服務器上執行所有命令
Host_Alias SERVER = LDAPClient, LDAPServer
Host_Alias CLIENT = LDAPClient
User1 SERVER, !CLIENT = NOPASSWD:ALL
User1 Pentest = NOPASSWD:ALL
在LDAPClient服務器執行sudo -l
,可驗證User1不允許在LDAPClient服務器上運行任何 sudo 命令,因為!CLIENT
否定指令明確拒絕了它
(二) -h/--host選項
-h host
或--host=host
選項旨在允許用戶列出其針對不同主機的 sudo 規則
當User1用戶執行設置了host選項的 list 命令時,將顯示指定主機的規則,確認User1用戶被允許在LDAPServer服務器上執行所有 root 命令
sudo -l -h LDAPServer
(三) 漏洞點
執行sudo或sudoedit命令時,如果host選項引用了一條不相關的遠程主機規則,則會導致 sudo 將該規則視為對本地系統有效,因此遠程主機規則允許的任何命令都可以在本地計算機上執行
盡管明確拒絕User1用戶訪問LDAPClient服務器,但可以通過指定LDAPServer服務器的主機選項來實現 root 訪問權限
其中sudo -i
的主要作用是 以 root 用戶(超級管理員)的身份啟動一個交互式的登錄shell
還可以指定Pentest服務器以獲得完全的 root 訪問權限
防御措施
安裝最新的 sudo 軟件包,此問題目前沒有其他解決方法
- Local Privilege Escalation via host option
- Stratascale
- GitHub - cyberpoul/CVE-2025-32462-POC: 🔓 Local privilege escalation PoC for CVE-2025-32462 (sudo -h bypass) – gain root via misconfigured sudoers