国外研究团队发现sudo堆溢出漏洞(CVE-2021-3156),漏洞隐藏十年之久,普通用户可以通过利用此漏洞,在默认配置的 sudo 主机上获取root权限。

漏洞描述:

国外研究团队发现sudo堆溢出漏洞(CVE-2021-3156),漏洞隐藏十年之久,普通用户可以通过利用此漏洞,在默认配置的 sudo 主机上获取root权限。漏洞细节已在互联网上公开,腾讯安全专家提醒linux系统管理员尽快修复。

Sudo是一个功能强大的实用程序,大多数(如果不是全部)基于Unix和Linux的操作系统都包含Sudo。

成功利用此漏洞,任何没有特权的用户都可以在易受攻击的主机上获得root特权。研究人员已经在Ubuntu 20.04(Sudo 1.8.31),Debian 10(Sudo 1.8.27)和Fedora 33(Sudo 1.9.2)上独立验证漏洞并开发多种利用漏洞并获得完整的root用户特权,其他操作系统和发行版也可能会被利用。

漏洞危害:本地提权

漏洞级别:高危

受影响的版本:

从1.8.2到1.8.31p2的所有版本
从1.9.0到1.9.5p1的所有稳定版本

修复版本:

Sudo 1.9.5p2或更新版本

检测方法:

以非root账户登录系统运行如下命令:

sudoedit -s

受影响的系统启动程序会提示以下开头的错误作为响应: 

sudoedit:

安装补丁后启动会提示以下开头的错误作为响应:

usage:

修复方案:

Redhat等linux发行版已紧急发布修复补丁,腾讯安全专家建议用户尽快升级:

CentOS 系统用户: 

1)CentOS 6:默认 sudo 在受影响范围,CentOS官方已停止更新;
2)CentOS 7:升级到 sudo-1.8.23-10.el7_9.1 或更高版本 ;
3)CentOS 8:升级到 sudo-1.8.29-6.el8_3.1或更高版本。

Ubuntu系统用户: 

1)Ubuntu 20.04 LTS版本用户,建议升级到如下版本:
sudo – 1.8.31-1ubuntu1.2
sudo-ldap – 1.8.31-1ubuntu1.2 

2)Ubuntu 18.04 LTS版本用户,建议升级到如下版本:
sudo – 1.8.21p2-3ubuntu1.4
sudo-ldap – 1.8.21p2-3ubuntu1.4

3)Ubuntu 16.04 LTS版本用户,建议升级到如下版本:
sudo – 1.8.16-0ubuntu1.10
sudo-ldap – 1.8.16-0ubuntu1.10 

建议您在升级前做好数据备份工作,避免出现意外。

腾讯安全解决方案:

腾讯T-Sec主机安全(云镜)漏洞库2021-1-27之后的版本,已支持检测sudo堆溢出漏洞(CVE-2021-3156)。

漏洞详情:https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

我有一个运行 CentOS Red Hat Enterprise Linux (RHEL) 的服务器。我该如何访问 Extra Packages for Enterprise Linux (EPEL) 存储库,以便安装标准存储库中未提供的软件包?

简短描述

标准存储库可能不提供某些在 CentOS 或 Red Hat Enterprise Linux (RHEL) 的发行版上安装的软件包。启用 EPEL 存储库可提供额外的软件包安装选项。

解决方法

请按照以下步骤在 RHEL 或 CentOS 的发行版上下载、安装和启用 EPEL 存储库:

RHEL

RHEL 8:

安装适用于 RHEL 8 的 EPEL 发行包。同时启用 EPEL 和 CodeReady Builder 存储库。CodeReady Builder 存储库包含许多 EPEL 软件包所需的开发工具。

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
sudo dnf config-manager --set-enabled codeready-builder-for-rhel-8-rhui-rpms

RHEL 7:

安装并启用适用于 RHEL 7 的 EPEL 发行包。

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

RHEL 6:

安装并启用适用于 RHEL 6 的 EPEL 发行包。

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

CentOS

CentOS 8:

安装适用于 RHEL 8 的 EPEL 发行包。同时启用 EPEL 和 PowerTools 存储库。PowerTools 存储库包含许多 EPEL 软件包所需的开发工具。

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
sudo dnf config-manager --set-enabled PowerTools

CentOS 7:

安装并启用 EPEL 发行包。CentOS 7 的基本存储库中包括 epel-release 软件包。

sudo yum -y install epel-release

CentOS 6:

安装并启用适用于 RHEL 6 的 EPEL 发行包。

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

列出已启用的存储库

如要验证是否启用了 EPEL 存储库,请运行 repolist 命令。

sudo yum repolist

NodeQuery.com 是一款Linux服务器监控工具,每个账号提供10个免费监控额度,监控在线率、CPU、内存、网络等使用情况并以网页的形式反馈出来,服务器的当前状况一目了然。

然而这么好的一款工具,今年出现多次服务器宕机、网站SSL证书过期和服务器时间不正确、经常误报等严重问题,说明了NodeQuery产品并没有得到重视,个人建议抛弃使用。

卸载 NodeQuery脚本:

rm -rf /etc/nodequery && (crontab -u nodequery -l | grep -v "/etc/nodequery/nq-agent.sh") | crontab -u nodequery - && userdel nodequery

1、安装最新的chrome dev包和字体以支持主要字符集(中文、日语、阿拉伯语、希伯来语、泰语和其他一些字符集)

apt-get update \
    && apt-get install -y wget gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 libxtst6

关于国内无法访问 dl-ssl.google.com(被墙了)的解决方法:

把 https://dl-ssl.google.com/linux/linux_signing_key.pub 修改为本站提供的 https://down.24kplus.com/linux/google/linux_signing_key.pub 即可。

2、在部署 Puppeter 时可以指定路径,取消chromium下载(可选)

browser.launch({executablePath: 'google-chrome-stable'})

3、安装TTF-MSCoreFonts-Installer字体包(可选)

apt install cabextract libmspack0 xfonts-encodings xfonts-utils
wget http://httpredir.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.8_all.deb
sudo dpkg -i ttf-mscorefonts-installer_3.8_all.deb

4、更新字体缓存

mkfontscale
mkfontdir
fc-cache -fv

我们以Nginx 1.18.0为例子,手动编译升级Nginx,使Nginx支持HTTP2和TLS 1.3。

一、准备编译环境

1、检查 OpenSSL 版本

由于 TLS 1.3 需要 OpenSSL 1.1.1 或更高的版本支持,所以为了确保TLS1.3的正常运行,先检查 OpenSSL 版本

openssl version

OpenSSL 1.0.2k-fips 26 Jan 2017

如果低于 OpenSSL 1.1.1,请参考 https://www.24kplus.com/linux/97.html 升级 OpenSSL

2、安装依赖库

yum -y install libxml2 libxml2-devel libxslt-devel gd-devel gperftools libuuid-devel libblkid-devel libudev-devel fuse-devel libedit-devel libatomic_ops-devel gcc-c++

如果要启用 GeoIP2 模块,还需要安装 libmaxminddb;启用 IP2Location 模块需要安装 IP2Location C Library

3、获取上一次编译的参数

nginx -V

把红色框框的参数拷贝出来,后面会用到。

二、下载&编译&升级

1、下载解压

wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar -xvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

2、配置编译参数

把原版本编译参数(上面拷贝出来的)粘贴上去,如果 --with-http_v2_module 参数没有则在最后加入一行 --with-http_v2_module

./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules
......
--with-http_v2_module

3、编译

make

4、升级 Nginx

停止 Nginx 服务

systemctl stop nginx

备份旧版本 Nginx

注意:sbin实际路径可能和教程的不一样,具体路径看 nginx -V 命令输出的 --sbin-path 参数

cp /usr/sbin/nginx /usr/sbin/nginx.bak

拷贝新版本到 /usr/sbin

cp objs/nginx /usr/sbin/

开始升级 Nginx

make upgrade

最后,启动 Nginx

systemctl start nginx

5、检查升级结果

nginx -V

Oracle 团队提交的一个补丁将有望使 Linux 内核的引导时间大大缩减,最高可以提速 49%。

Oracle 提交补丁,可使 Linux 内核引导提速 6%-49%

Oracle 开发者在邮件列表中指出,该补丁扩展了 padata,使其可以处理多线程作业。padata 原本只是可以用于处理多个并行单线程作业的框架,补丁添加了 padata 在 CPU 内核之间平均分配工作来处理多线程作业的能力,它会将最小工作量分配给适合处理的协作线程,并且在这些协作线程之间进行负载均衡。

该补丁会推迟 Linux 引导中的 struct page init,这是内核引导过程中的一大性能瓶颈,它并不需要并发限制、资源控制或优先级调整。在各种 x86 系统上进行测试,开发者发现该补丁将延迟的初始化速度提高 63% 至 91%,而这可以将内核引导速度提高 6% 至 49%。尤其是在具有大量 RAM 的多节点环境中,性能改进更为明显。

此补丁的改进同时也使启动虚拟机的时间缩减,这对于云计算环境来说非常重要,因为需要应对不断变化的容量/需求伸缩变化的情况。