CVE-2021-3156漏洞修复

早上腾讯云发来邮件,说服务器存在CVE-2021-3156漏洞,Ubuntu在1月26号已经发布了相关信息。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。这样攻击者就可以使用普通用户获取到了root权限,还是挺危险的,如果是线上业务最好还是及时升级。

影响范围

通过sudo -V 或者 sudo --version | grep version 查询sudo的版本

  • sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置)
  • sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置)
    建议升级到最新的sudo 1.9.5p2及更高版本来修复该漏洞

解决方法

手动的去安装最新的sudo即可。在更新前需要做好备份的工作,然后卸载旧版本的sudo,重新安装新版本,以下以ubuntu为例。

  1. 备份sudo的pam配置文件:mv /etc/pam.d/sudo /etc/pam.d/sudo.bak
  2. 下载最新的sudo版本 :wget https://www.sudo.ws/dist/sudo-1.9.5p2.tar.gz
  3. 解压:tar zxvf sudo-1.9.5p2.tar.gz
  4. 删除旧的sudo:apt remove -y sudo
  5. 配置sudo:cd ./sudo-1.9.5p2.tar.gz && ./configure —prefix=/usr/
  6. 安装:make && make install
  7. 恢复备份文件:mv /etc/pam.d/sudo.bak /etc/pam.d/sudo

这样在查询sudo的版本时,就已经是最新版本了

WeChatWorkScreenshot_2647bcd5-e6a5-43ae-92bc-e24b344ca360

小插曲

因为有的服务器默认是非root权限,然后我先删除了旧的sudo,接下来就悲剧了。在make install等需要授权的地方就提示没有权限,但是我又没有sudo去提权。然后我想通过apt重新安装sudo,发现进程被锁,没有sudo无法pkill,郁闷。

尝试使用pkexec apt-get install sudo来安装sudo,又提示鉴权失败。

polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

This incident has been reported.

Emm最后找到一个大神的解决方案,很有意思。首先在运行pkexec的终端A里使用echo $$打印当前的PID。接下来在开一个新的终端B,通过执行pkttyagent --process 刚刚拿到的PID。果然B里面的鉴权成功了,然后A里再进行安装sudo的操作即可。


  • 最近美港股市场非常强势,如果你也有投资意愿,欢迎使用长桥平台雪盈平台老虎平台进行入金,通过我的链接入金你我都会获得1股阿里的港股。
  • 推荐大家一个返利的工具「快鸟返利」 App,点饿了么,美团都有返利,每天点外卖都能省几块钱,淘宝、京东好多平台都能返,使用体验还不错,有需要的朋友可以下载试试:下载地址,或者填写我的邀请码LRHDV