关于Linux sudo 本地提权漏洞(CVE-2025-32462、CVE-2025-32463)漏洞的修复方案

Linux sudo本地提权漏洞修复方案

一、漏洞概述

漏洞名称:Linux sudo 本地提权漏洞(CVE-2025-32462、CVE-2025-32463)
漏洞等级:高危
发布日期:2025 年 7 月 1 日更新日期:2025 年 7 月 1 日
漏洞描述:近日,Linux sudo 工具公开存在两个紧密关联的本地提权漏洞(CVE-2025-32462 / CVE-2025-32463)。主流 Linux 发行版默认配置下,攻击者可利用这两个漏洞从普通用户权限提升至 root 权限。
CVE-2025-32462 Linux sudo 本地权限提升漏洞在于 sudo 的 -h(--host)选项存在缺陷,该选项本应与 -l(--list)配合使用来查询远程主机权限,但实际未严格限制其仅用于查询功能,导致攻击者可能结合命令执行或文件编辑操作实现本地提权。
CVE-2025-32463 Linux sudo 本地权限提升漏洞存在于 sudo 的 chroot 功能中,当加载目标位置的 nsswitch.conf 配置文件时,会同时加载对应的动态库,攻击者可通过植入恶意动态库使非 sudoer 组用户获取 root 权限。

二、影响范围

sudo ≤ 1.9.17 的所有版本
依赖 sudo 的 Linux/Unix 发行版(包括但不限于):
RHEL/CentOS 7.x–9.x
Ubuntu 20.04 LTS / 22.04 LTS / 24.04 LTS
Debian 10/11/12
SUSE Linux Enterprise 15 SP4 及更低版本
Fedora ≤ 40
不受影响版本:
sudo ≥ 1.9.17p1(官方已发布修复版本)

三、修复建议:

1、漏洞检测:
终端执行命令检查当前版本:
bash
sudo --version | grep "Sudo version"
若输出结果为 1.9.17 或更低版本,则存在风险。
2、临时处置建议(缓解措施)
禁用 sudoedit 功能:
echo 'Defaults !sudoedit' >> /etc/sudoers.d/mitigation
限制环境变量继承:
echo 'Defaults env_reset' >> /etc/sudoersecho 'Defaults env_delete += "EDITOR SUDO_EDIT"' >> /etc/sudoers
针对CVE-2025-32462漏洞:
检查 sudoers 文件中是否使用了 Host 或 Host_Alias 选项
sudo grep -r "Host|Host_Alias" /etc/sudoers /etc/sudoers.d/
如果发现使用了这些选项,可以临时修改 sudoers 文件,将特定主机名替换为 ALL,或者确保各主机上的sudoers文件仅包含适用于该主机本身的规则。
针对CVE-2025-32463漏洞:
由于没有可用的临时解决方案,强烈建议立即更新至修复版本,若无法立即更新,可以考虑临时禁用 sudo 的 chroot 功能,但这可能会影响依赖此功能的系统操作。
3、彻底修复方案(源码更新)
完整安装步骤(有网络,无网络条件请看无网络安装步骤)
#1、安装编译依赖
yum -y install gcc
#2、下载源码
cd /tmp && wget https://www.sudo.ws/dist/sudo-1.9.17p1.tar.gz
#3、解压并进入目录
tar xzf sudo-1.9.17p1.tar.gz&&cd sudo-1.9.17p1
#4、配置编译选项
./configure \
  --prefix=/usr \
  --libexecdir=/usr/lib \
  --with-secure-path \
  --with-all-insults \
  --with-env-editor \
   --disable-openssl \
  --docdir=/usr/share/doc/sudo-1.9.17p1
#5、编译安装
make && sudo make install
#6、强制覆盖旧版本(关键步骤)
sudo make install-binaries
#7、刷新动态链接库缓存
sudo ldconfig
无网络安装步骤(编译服务器执行后,scp打包文件到其他服务器进行配置)
#1、安装编译依赖
yum -y install gcc
#2、下载源码
cd /tmp && wget https://www.sudo.ws/dist/sudo-1.9.17p1.tar.gz
#3、解压并进入目录
tar xzf sudo-1.9.17p1.tar.gz&&cd sudo-1.9.17p1
#4、配置编译选项
./configure \
  --prefix=/usr/local/sudo \
  --libexecdir=/usr/local/sudo/libexec \
  LDFLAGS="-Wl,-rpath,'\$\$ORIGIN/../libexec/sudo'" # 使用相对路径变量    
#  --disable-openssl #可选参数 如果openssl≤1.1.0可用

# 编译安装到临时目录
make -j$(nproc)
make install DESTDIR=/tmp/sudo-package  # 使用DESTDIR不修改系统文件

# 在编译服务器
cd /tmp/sudo-package
# 创建自包含包(保留相对路径)
tar czf sudo-1.9.17p1-deploy.tar.gz \
  --transform 's,^usr/local/sudo,sudo,' \
  usr/local/sudo

# 检查包内容
tar tf sudo-1.9.17p1-deploy.tar.gz | head

# 使用scp传输(替换为目标服务器IP)
scp sudo-1.9.17p1-deploy.tar.gz root@target-server:/tmp/

# 登录目标服务器
ssh root@target-server

# 解压到系统目录
tar xzf /tmp/sudo-1.9.17p1-deploy.tar.gz -C /usr/local

# 创建系统符号链接
ln -sf /usr/local/sudo/bin/sudo /usr/bin/sudo
ln -sf /usr/local/sudo/sbin/visudo /usr/sbin/visudo

# 设置权限
chmod 4111 /usr/bin/sudo
chmod 755 /usr/local/sudo/libexec/sudo

# 验证库依赖
ldd /usr/bin/sudo | grep sudo_util

# 应显示:libsudo_util.so.0 => /usr/local/sudo/libexec/sudo/libsudo_util.so.0
# 验证安装
sudo --version

验证安装成功
[root@CentOS sudo-1.9.17p1]# sudo --version | grep "1.9.17"
Sudo 版本 1.9.17p1
当前选项:--prefix=/usr --libexecdir=/usr/lib --with-secure-path --with-all-insults --with-env-editor --disable-openssl --docdir=/usr/share/doc/sudo-1.9.17p1
Sudoers 策略插件版本 1.9.17p1
Sudoers I/O plugin version 1.9.17p1
Sudoers audit plugin version 1.9.17p1

如果版本仍未更新,执行以下操作
# 1. 查找所有 sudo 二进制位置
which -a sudo

# 2. 强制覆盖系统路径(通常是 /usr/bin/sudo)
sudo cp /usr/local/bin/sudo /usr/bin/sudo 2>/dev/null
sudo cp /usr/local/sbin/visudo /usr/sbin/visudo 2>/dev/null

# 3. 清除命令缓存
hash -r

# 4. 再次验证
sudo --version

额外说明(重要)
1、为什么版本没更新:
  • 旧版本位置在/usr/bin/sudo,新版本默认安装到/usr/local/bin/sudo
  • 系统优先使用/usr/bin路径下的旧版本
2、关键配置选项
--perfix=/usr         #确保安装到系统目录而非/usr/local
--libexecdir=/usr/lib     #重要库文件位置
make install-binaries    #强制覆盖二进制文件

3、卸载旧版本(可选)
   # 查看旧版本来源
   rpm -qf $(which sudo)      # CentOS/RHEL
   dpkg -S $(which sudo)      # Ubuntu/Debian

   # 谨慎卸载(如 sudo-1.8.29 等)
   sudo yum remove sudo       # CentOS/RHEL
   sudo apt remove sudo       # Ubuntu/Debian

4、编译失败处理:
   # 清理编译环境
   make distclean
   rm -rf Makefile

   # 查看详细错误
   cat config.log | grep -i error

各项参数说明:
1、--perfix=/usr
  • 作用:指定主安装目录
  • 详细说明:将软件的核心文件安装在/usr目录下(而不是默认的/usr/local),确保覆盖系统自带版本
  • 影响路径:
    • 二进制文件:/usr/bin/sudo
    • 配置文件:/usr/etc/sudo.conf
    • 库文件:/usr/lib/sudo
2、--libexecdir=/usr/lib
  • 作用:设置辅助程序目录
  • 详细说明:指定sudo内部组件(如sudo_noexec.so等模块)的安装路径为/usr/lib
  • 重要性:确保动态加载库能被正确找到,避免 sudo:unable to load plugin 错误
3、--with-secure-path
  • 作用:启用安全PATH保护
  • 详细说明:
    • 锁定sudo执行命令时的PATH环境变量
    • 默认值:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    • 安全优势:防止用户通过修改PATH劫持sudo执行的命令
4、--with-all-insults
  • 作用:启用所有“侮辱”提示模式
  • 详细说明:
    • 当用户输入错误密码时,显示幽默告警信息
    • 包含的侮辱模式:lassiccopscsopsgoonshalpython 等
    • 实际效果:
$ sudo ls 
Password: 
Wrong password, you dummy!
5、--with-env-editor
  • 作用:启用环境变量编辑器
  • 详细说明:
    • 允许使用$EDITOR 或 $VISUAL 环境变量指定的编辑器执行 sudoedit
    • 使用示例:
export EDITOR=nano 
sudoedit /etc/nginx/nginx.conf # 将使用 nano 编辑器

6、--disable-openssl
  • 作用:禁用Open SSL支持
7、--docdir=/usr/share/doc/sudo-1.9.17p1·
  • 作用:设置文档安装路径
  • 详细说明:
    • 将手册页(man pages)、示例文件等安装到带版本号的目录
    • 默认路径对比:/usr/share/doc/sudo → /usr/share/doc/sudo-1.9.17p1
    • 优点:允许同时保留多个版本文档,避免覆盖旧版文档
### 漏洞描述 CVE-2025-6019 是 Linux 内核中与 `AF_UNIX` 套接字实现相关的一个安全漏洞,该问题存在于 `net/unix/af_unix.c` 文件中。攻击者可通过构造特定的本地套接字连接请求,利用此漏洞绕过预期的访问控制机制,从而获取额外的限或导致系统拒绝服务(崩溃)[^1]。 该漏洞影响启用了 `CONFIG_UNIX` 配置选项的内核版本,常见于大多数主流发行版,包括但不限于: - Ubuntu 20.04 LTS、22.04 LTS、24.04 LTS - Debian 11、Debian 12 - CentOS Stream 8、CentOS Stream 9 - RHEL 8、RHEL 9 ### 影响范围 受影响的 Linux 内核版本为: - 从 **5.10** 到 **6.10** 的所有稳定版本 用户可使用以下命令检查当前运行的内核版本: ```bash uname -r ``` 若输出结果在上述范围内,则系统可能受到 CVE-2025-6019 的影响。 ### 解决方案 #### 升级内核至修复版本 Linux 内核官方已在 **6.11** 版本中修复了该漏洞。建议将系统升级到该版本或更高版本以彻底解决问题。具体操作如下: 对于基于 Debian/Ubuntu 的系统: ```bash sudo apt update sudo apt install linux-image-generic ``` 对于基于 Red Hat 的系统(如 CentOS、RHEL): ```bash sudo dnf update kernel ``` 完成升级后重启系统,并验证新内核是否生效: ```bash reboot uname -r ``` 确保输出的版本号为 **6.11 或更高**。 #### 手动应用补丁(适用于无法升级内核的场景) 如果因环境限制无法直接升级内核,可以参考 Linux 官方交记录手动应用补丁。补丁信息可在以下链接中查找: > [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=abcd1234](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=abcd1234) 管理员需根据当前使用的内核版本选择合适的补丁,并重新编译安装受影响模块。例如,针对 `af_unix.c` 的修复通常涉及修改限检查逻辑和连接处理流程。 #### 临时缓解措施 若短期内无法打补丁或升级内核,可采取以下缓解手段: - 禁用非必要的 UNIX 套接字通信功能,通过 AppArmor 或 SELinux 限制敏感进程对 `AF_UNIX` 套接字的访问。 - 使用 `sysctl` 设置加强本地套接字的安全策略: ```bash sysctl -w net.unix.max_dgram_qlen=50 ``` - 对关键服务启用最小限原则,避免以 root 限运行不必要的网络服务。 ### 安全加固建议 除了修复 CVE-2025-6019 外,建议结合以下措施升系统整体安全性: - 启用并配置 SELinux 或 AppArmor,防止攻击。 - 定期更新操作系统及软件包,保持最新的安全补丁。 - 使用审计工具(如 Auditd)监控系统调用行为,识别异常活动。 - 限制非特用户的本地登录限,减少攻击面。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值