sudo中的一个严重漏洞使您可以获得root特权

MGI Qualys安全研究人员发现了一个严重漏洞 (CVE-2021-3156) 在sudo实用程序中,旨在代表其他用户组织命令执行。

脆弱性 允许具有root权限的未经身份验证的访问。 问题 可以被任何用户使用,无论系统组中是否存在以及/ etc / sudoers文件中是否存在条目。

攻击不需要输入用户密码, 也就是说,在非特权进程(包括以用户“ nobody”开头的特权)遭到破​​坏后,外部人员可以使用该漏洞来提升系统的特权。

要在系统上搜索漏洞,只需运行命令“ sudoedit -s /”,如果显示以“ sudoedit:”开头的错误消息,则该漏洞存在。

关于漏洞

该漏洞自2011年XNUMX月开始出现,是由缓冲区溢出引起的 用于在shell模式下执行命令的参数中的换行符处理。 通过指定“ -i”或“ -s”参数来启用外壳模式,并使其不直接执行命令,而是通过带有“ -c”标志的附加外壳程序调用(“ sh -c命令»”)来执行。

最重要的是,当sudo实用程序正常运行时,它通过指定“ -i”和“ -s”选项来转义特殊字符,但是当sudoedit实用程序启动时,参数不会转义,如parse_args()该函数设置环境变量MODE_EDIT而不是MODE_SHELL,并且不重置“ valid_flags”的值。

反之, 未转义的字符传输为出现另一个错误创造了条件 在控制器中,它会在检查sudoer规则之前删除转义字符。

处理程序错误地解析了反斜杠字符的存在 无需在行尾转义,它认为该反斜杠转义了一个字符并继续读取超出行数限制的数据,将其复制到“ user_args”缓冲区中并覆盖缓冲区外部的存储区。

并提到在尝试在sudoedit命令行中操作值时,攻击者可以在数据中实现可重写队列的叠加,从而影响后续工作过程。

除了创建漏洞利用程序之外,它还简化了以下事实:攻击者完全控制了user_args缓冲区的大小,该大小与传递的所有参数的大小相对应,并且还控制了使用以下方法在缓冲区外部写入的数据的大小和内容环境变量。

Qualys安全研究人员设法准备了三个漏洞利用程序,它们的工作基于重写sudo_hook_entry,service_user和def_timestampdir结构的内容:

  • 通过中止sudo_hook_entry,可以以超级用户身份运行名为“ SYSTEMD_BYPASS_USERDB”的二进制文件。
  • 覆盖service_user设法以root用户身份运行任意代码。
  • 通过覆盖def_timestampdir,可以将sudo堆栈的内容(包括环境变量)刷新到/ etc / passwd文件中,并以root特权实现对用户的替换。

研究人员 表明漏洞利用有效 获得完整的root特权 在Ubuntu 20.04,Debian 10和Fedora 33上。

脆弱性 可以在其他操作系统和发行版中被利用, 但是研究人员的验证仅限于Ubuntu,Debian和Fedora,此外还提到默认设置下的所有sudo版本1.8.2至1.8.31p2和1.9.0至1.9.5p1都会受到影响。 sudo 1.9.5p2中的建议解决方案。

研究人员 提前通知开发商 已经以协调方式发布软件包更新的发行商:Debian,RHEL,Fedor,Ubuntu,SUSE / openSUSE,Arch Linux,Slackware,Gentoo和FreeBSD。

最后 如果您有兴趣了解更多信息 关于该漏洞,您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。