暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过rpm包的形式,升级sudo到安全版本Sudo version 1.9.5p2

运维之旅 2021-01-28
583

【说在前面】

  • 因为我们系统是centos6,本次实验以centos6为例,作为个人笔记记录
  • 操作前请备份数据,操作前请备份数据,操作前请备份数据重要的事情说三次
  • 操作前请自行测试,如升级后导致系统不可用,与本文作者无关
  • 请在测试环境确保没问题后再批量升级


1 漏洞简介

1.1 【风险名称】

Sudo 堆缓冲区溢出致本地提权漏洞(CVE-2021-3156)

1.2 【风险等级】

1.3 【风险概述】

Sudo是一个功能强大的实用程序,大多数基于Unix和Linux的操作系统都包含Sudo。它允许用户使用其他用户的安全特权运行程序。2021年1月27日监控到国外安全研究人员披露了Sudo 堆缓冲区溢出致本地提权漏洞,漏洞编号为 CVE-2021-3156。任何本地用户(包括普通用户和系统用户,sudoer和非sudoers)若成功利用该漏洞,可在无需密码的情况下获得root权限。sudo 用户应尽快采取安全措施阻止漏洞攻击。

1.4 【风险验证】

影响版本:

  • Sudo 1.9.0 到 1.9.5p1 所有稳定版(默认配置)
  • Sudo 1.8.2 到 1.8.31p2 所有旧版本(默认配置) 安全版本:
  • Sudo 1.9.5p2 或更新版本

检测方法:

  1. 以非root账户登录系统运行如下命令:
  • sudoedit -s
  1. 若受影响,错误信息会以如下内容开头:
  • sudoedit:
  1. 若已安装补丁,错误信息会以如下内容开头:
  • usage:

1.5 参考连接

  • 也可以参照链接里面的步骤进行处理
https://access.redhat.com/security/vulnerabilities/RHSB-2021-002

2 升级步骤

2.1 升级前版本信息查看

# sudoedit -s /
sudoedit: /: not a regular file

# rpm -qa sudo 
sudo-1.8.6p3-24.el6.x86_64

# sudo -V
Sudo version 1.8.6p3
Configure options: --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --prefix=/usr --sbindir=/usr/sbin --libdir=/usr/lib64 --docdir=/usr/share/doc/sudo-1.8.6p3 --with-logging=syslog --with-logfac=authpriv --with-pam --with-pam-login --with-editor=/bin/vi --with-env-editor --with-ignore-dot --with-tty-tickets --with-ldap --with-ldap-conf-file=/etc/sudo-ldap.conf --with-selinux --with-passprompt=[sudo] password for %p:  --with-linux-audit --with-sssd
Sudoers policy plugin version 1.8.6p3
Sudoers file grammar version 42

Sudoers path: /etc/sudoers
nsswitch path: /etc/nsswitch.conf
ldap.conf path: /etc/sudo-ldap.conf
ldap.secret path: /etc/ldap.secret
Authentication methods: 'pam'
Syslog facility if syslog is being used for logging: authpriv
Syslog priority to use when user authenticates successfully: notice
Syslog priority to use when user authenticates unsuccessfully: alert
Ignore '.' in $PATH
Send mail if the user is not in sudoers
Use a separate timestamp for each user/tty combo
Lecture user the first time they run sudo
Require users to authenticate by default
Root may run sudo
Always set $HOME to the target user's home directory
Allow some information gathering to give useful error messages
Visudo will honor the EDITOR environment variable
Set the LOGNAME and USER environment variables
Length at which to wrap log file lines (0 for no wrap): 80
Authentication timestamp timeout: 5.0 minutes
Password prompt timeout: 5.0 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user'
s: 022
Path to mail program: /usr/sbin/sendmail
Flags for mail program: -t
Address to send mail to: root
Subject line for mail messages: *** SECURITY information for %h ***
Incorrect password message: Sorry, try again.
Path to authentication timestamp dir: /var/db/sudo
Default password prompt: [sudo] password for %p: 
Default user to run commands as: root
Value to override user's $PATH with: /sbin:/bin:/usr/sbin:/usr/bin
Path to the editor for use by visudo: /bin/vi
When to require a password for '
list' pseudocommand: any
When to require a password for '
verify' pseudocommand: all
File descriptors >= 3 will be closed before executing a command
Reset the environment to a default set of variables
Environment variables to check for sanity:
 TZ
 TERM
 LINGUAS
 LC_*
 LANGUAGE
 LANG
 COLORTERM
Environment variables to remove:
 RUBYOPT
 RUBYLIB
 PYTHONUSERBASE
 PYTHONINSPECT
 PYTHONPATH
 PYTHONHOME
 TMPPREFIX
 ZDOTDIR
 READNULLCMD
 NULLCMD
 FPATH
 PERL5DB
 PERL5OPT
 PERL5LIB
 PERLLIB
 PERLIO_DEBUG 
 JAVA_TOOL_OPTIONS
 SHELLOPTS
 GLOBIGNORE
 PS4
 BASH_ENV
 ENV
 TERMCAP
 TERMPATH
 TERMINFO_DIRS
 TERMINFO
 _RLD*
 LD_*
 PATH_LOCALE
 NLSPATH
 HOSTALIASES
 RES_OPTIONS
 LOCALDOMAIN
 CDPATH
 IFS
Environment variables to preserve:
 XAUTHORITY
 _XKB_CHARSET
 LINGUAS
 LANGUAGE
 LC_ALL
 LC_TIME
 LC_TELEPHONE
 LC_PAPER
 LC_NUMERIC
 LC_NAME
 LC_MONETARY
 LC_MESSAGES
 LC_MEASUREMENT
 LC_IDENTIFICATION
 LC_COLLATE
 LC_CTYPE
 LC_ADDRESS
 LANG
 USERNAME
 QTDIR
 PS2
 PS1
 MAIL
 LS_COLORS
 KDEDIR
 INPUTRC
 HISTSIZE
 HOSTNAME
 DISPLAY
 COLORS
Locale to use while parsing sudoers: C
Compress I/O logs using zlib
Directory in which to store input/output logs: /var/log/sudo-io
File in which to store the input/output log: %{seq}
Add an entry to the utmp/utmpx file when allocating a pty
Don'
t pre-resolve all group names
PAM service name to use
PAM service name to use for login shells

Local IP address and netmask pairs:
 172.27.0.4/255.255.240.0
 fe80::5054:ff:feaa:8ee9/ffff:ffff:ffff:ffff::

Sudoers I/O plugin version 1.8.6p3

2.2 rpm软件包获取

官网:https://www.sudo.ws/download.html

wget https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-1.9.5-3

2.3 将rpm包上传到服务器/soft目录

2.4 升级sudo版本

# rpm -Uvh sudo-1.9.5-3.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:sudo                   ########################################### [100%]

3 查看

# rpm -qa sudo 
sudo-1.9.5-3.el6.x86_64

# sudoedit -s /
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] file
                ...

# sudo -V
Sudo version 1.9.5p2
Configure options: --prefix=/usr --with-logging=syslog --with-logfac=authpriv --with-pam --enable-zlib=system --with-editor=/bin/vi --with-env-editor --with-ignore-dot --with-tty-tickets --with-ldap --with-passprompt=[sudo] password for %p:  --with-sendmail=/usr/sbin/sendmail --enable-warnings --enable-package-build --with-selinux --with-linux-audit --with-pam-login --with-sssd --with-sssd-lib=/usr/lib64 --with-ldap-conf-file=/etc/sudo-ldap.conf --enable-openssl --disable-tmpfiles.d
Sudoers policy plugin version 1.9.5p2
Sudoers file grammar version 48

Sudoers path: /etc/sudoers
nsswitch path: /etc/nsswitch.conf
ldap.conf path: /etc/sudo-ldap.conf
ldap.secret path: /etc/ldap.secret
Authentication methods: 'pam'
Syslog facility if syslog is being used for logging: authpriv
Syslog priority to use when user authenticates successfully: notice
Syslog priority to use when user authenticates unsuccessfully: alert
Ignore '.' in $PATH
Send mail if the user is not in sudoers
Lecture user the first time they run sudo
Require users to authenticate by default
Root may run sudo
Allow some information gathering to give useful error messages
Visudo will honor the EDITOR environment variable
Set the LOGNAME and USER environment variables
Length at which to wrap log file lines (0 for no wrap): 80
Authentication timestamp timeout: 5.0 minutes
Password prompt timeout: 5.0 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user's: 022
Path to mail program: /usr/sbin/sendmail
Flags for mail program: -t
Address to send mail to: root
Subject line for mail messages: *** SECURITY information for %h ***
Incorrect password message: Sorry, try again.
Path to lecture status dir: /var/db/sudo/lectured
Path to authentication timestamp dir: /var/run/sudo/ts
Default password prompt: [sudo] password for %p: 
Default user to run commands as: root
Path to the editor for use by visudo: /bin/vi
When to require a password for '
list' pseudocommand: any
When to require a password for '
verify' pseudocommand: all
File descriptors >= 3 will be closed before executing a command
Reset the environment to a default set of variables
Environment variables to check for safety:
 TZ
 TERM
 LINGUAS
 LC_*
 LANGUAGE
 LANG
 COLORTERM
Environment variables to remove:
 *=()*
 RUBYOPT
 RUBYLIB
 PYTHONUSERBASE
 PYTHONINSPECT
 PYTHONPATH
 PYTHONHOME
 TMPPREFIX
 ZDOTDIR
 READNULLCMD
 NULLCMD
 FPATH
 PERL5DB
 PERL5OPT
 PERL5LIB
 PERLLIB
 PERLIO_DEBUG
 JAVA_TOOL_OPTIONS
 SHELLOPTS
 BASHOPTS
 GLOBIGNORE
 PS4
 BASH_ENV
 ENV
 TERMCAP
 TERMPATH
 TERMINFO_DIRS
 TERMINFO
 _RLD*
 LD_*
 PATH_LOCALE
 NLSPATH
 HOSTALIASES
 RES_OPTIONS
 LOCALDOMAIN
 CDPATH
 IFS
Environment variables to preserve:
 KDEDIR
 QTDIR
 _XKB_CHARSET
 LC_*
 LINGUAS
 LANGUAGE
 LANG
 XAUTHORIZATION
 XAUTHORITY
 PS2
 PS1
 PATH
 LS_COLORS
 KRB5CCNAME
 HOSTNAME
 DISPLAY
 COLORS
Locale to use while parsing sudoers: C
Compress I/O logs using zlib
Directory in which to store input/output logs: /var/log/sudo-io
File in which to store the input/output log: %{seq}
Add an entry to the utmp/utmpx file when allocating a pty
PAM service name to use: sudo
PAM service name to use for login shells: sudo-i
Attempt to establish PAM credentials for the target user
Create a new PAM session for the command to run in
Perform PAM account validation management
Enable sudoers netgroup support
Check parent directories for writability when editing files with sudoedit
Allow commands to be run even if sudo cannot write to the audit log
Allow commands to be run even if sudo cannot write to the log file
Log entries larger than this value will be split into multiple syslog messages: 960
File mode to use for the I/O log files: 0600
Execute commands by file descriptor instead of by path: digest_only
Type of authentication timestamp record: tty
Ignore case when matching user names
Ignore case when matching group names
Log when a command is allowed by sudoers
Log when a command is denied by sudoers
Sudo log server timeout in seconds: 30
Enable SO_KEEPALIVE socket option on the socket connected to the logserver
Verify that the log server'
s certificate is valid
Set the pam remote user to the user running sudo
The format of logs to produce: sudo
Enable SELinux RBAC support

Local IP address and netmask pairs:
 172.27.0.4/255.255.240.0
 fe80::5054:ff:feaa:8ee9/ffff:ffff:ffff:ffff::

Sudoers I/O plugin version 1.9.5p2
Sudoers audit plugin version 1.9.5p2

可见,已经升级成功,通过rpm包的形式升级还是挺方便的。




文章转载自运维之旅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论