跳到主要内容
博客安全问题Linode安全摘要 2022年1月30日-2月6日

2022年1月30日至2月6日Linode安全摘要

Linode安全摘要

本周,我们将讨论三个严重程度较高的漏洞,如果攻击者拥有对系统的本地访问权,就可以升级权限。

Linux内核eBPF--不恰当的输入验证漏洞

CVE-2022-23222描述了一个源于内核处理eBPF程序的漏洞。能够执行BPF的攻击者可能会使系统崩溃或在内核的上下文中执行任意代码。

根源-BPF验证器没有正确限制几种*_OR_NULL指针类型,这使得这些类型可以进行指针运算。这可以被利用来执行任意代码或崩溃系统。 

重要提示:在大多数发行版中,无特权的BPF 被默认禁用。该错误在内核5.8.0版本中被引入,并在内核5.14.17版本中得到修补。公开漏洞的可用性是CVE-2022-23222构成重大风险的另一个原因。

保持与您的Linux发行版所提供的最新内核的更新是保护自己免受该漏洞影响的一个简单方法。如果你的Linode启动了我们提供的内核,你可以验证你的Linode的配置文件是否设置为启动最新的内核,然后重新启动你的Linode。 

如果你不能立即更新到有补丁的内核,你也可以通过确保unprivileged_bpf_disabled设置为1来缓解这一漏洞。请确保将此设置写入sysctl 配置文件,并安全地启动你的 Linode 以持续缓解。

# sysctl -w kernel.unprivileged_bpf_disabled=1

资料来源:SecCoder安全实验室的Tr3e wang:SecCoder安全实验室的Tr3e wang

使用容器逃逸 堆溢出在Linux内核中

CVE-2022-0185是一个堆溢出漏洞,允许访问非特权用户的攻击者将其权限提升到root。要做到这一点,攻击者必须有一个特定的Linux能力,CAP_SYS_ADMIN。值得注意的是,当Docker(或其他CRI)在Kubernetes集群中使用时,seccomp过滤器默认被禁用,所以这个漏洞可以在这些情况下被利用。

根源 --该错误是由存在于 fs/fs_context.c:legacy_parse_param导致有效的最大长度计算错误。这导致了 "文件系统上下文 "组件中的整数下溢。 

当减法操作将无符号整数减少到低于零的值时,就会发生下溢。由于无符号整数不能代表负数,因此计算结果会围绕整数的最大值进行。当这种下溢发生在legacy_parse_param函数中时,尺寸检查失败,攻击者可以在内核空间中写出超出分配的4kb内存的界限。使用这种 "非绑定写入",攻击者可以改变内核内存中的值,例如,将自己的访问权限添加到同一节点上运行的任何其他进程。

命令 "capsh -print"可以在当前用户的上下文中使用,以列出启用的能力。剥削依赖于CAP_SYS_ADMIN能力;然而,该权限只需要在当前命名空间中被授予。一个没有特权的用户可以使用unshare (CLONE_NEWNS | CLONE_NEWUSER)进入一个具有CAP_SYS_ADMIN权限的名字空间,然后继续利用,将系统root。然而,使用seccomp将阻止攻击者以这种能力进入命名空间。

该漏洞在内核5.1中被引入,在5.16.2中被修补。漏洞代码已经出现在网上。下面是关于该发现的更多技术细节的原始文章。 

保持与您的Linux发行版所提供的最新内核的更新是保护自己免受该漏洞影响的简单方法。如果你的Linode启动我们提供的内核,你也可以验证你的Linode的配置文件是否设置为启动最新的内核,然后重新启动你的Linode。如果你不能立即更新到一个有补丁的内核,你可以应用这些缓解措施:

  • 尽量减少对能够访问CAP_SYS_ADMIN能力的特权容器的使用。 
  • 对于无特权的容器,确保有一个seccomp过滤器来阻止unshare的调用将减少风险。
  • 通过禁用用户在主机级别上使用用户命名空间的能力,缓解来自无特权容器的剥削。下面的例子将应用临时缓解措施,直到你的Linode重新启动。请确保将此设置写入sysctl 配置文件,并安全地启动你的 Linode 以保持缓解。
# sysctl -w kernel.unprivileged_userns_clone=0

PwnKit - 本地权限升级漏洞 在 Polkit

Polkit是一个用于控制类Unix操作系统中全系统权限的组件。它为非特权进程与特权进程的通信提供了一种系统的方法。此外,有人还可以使用polkit,用pkexec(通常是root)命令来执行具有更高权限的命令。 

CVE-2021-4034是polkit的pkexec中的一个内存损坏漏洞,pkexec是大多数主要Linux发行版上默认安装的SUID-root程序。成功利用该漏洞后,任何无特权的用户都可以在默认配置下轻松获得root权限。

根源 - pkexec程序没有正确验证传递给它的参数数量,允许某人以特权用户身份执行任意代码。 

从2009年开始的所有Polkit版本都有漏洞,即使Polkit守护程序本身没有运行,也可以利用。

保持与您的Linux发行版所提供的最新内核的更新是保护自己免受该漏洞影响的一个简单方法。如果你的Linode启动了我们提供的内核,你可以验证你的Linode的配置文件是否设置为启动最新的内核,然后重新启动你的Linode。如果你不能立即更新到一个有补丁的内核,你可以通过删除pkexec中的SUID位来暂时缓解这个问题:

# chmod 0755 /usr/bin/pkexec

注释

留下回复

您的电子邮件地址将不会被公布。 必须填写的字段被标记为*