在sudo中检测到影响Linux Mint和Elementary OS的漏洞

recientemente sudo实用程序中披露了一个漏洞 (用于组织授予单个程序管理权限或代表其他用户执行命令),分类为“CVE-2019-18634 可以增加您的特权 在系统上为root用户。

自sudo 1.7.1版本发布以来已检测到该问题 直到版本1.8.29 只有在/ etc / sudoers文件中使用“ pwfeedback”选项时,它才能被利用, 在更高版本的sudo中,默认情况下禁用此功能,但在某些发行版(例如Linux Mint和Elementary OS)中将其激活。

“ pwfeedback”选项允许显示“ *”字符 输入密码时输入的每个字符之后。

由于执行getln()函数时发生错误 在tgetpass.c文件中的标准输入序列下定义 (标准输入),输入密码的行太长可能无法容纳在分配的缓冲区中并覆盖堆栈中的其他数据。 当以root权限运行sudo代码时,会发生溢出。

问题的实质 就是当它被使用时 输入过程中的特殊字符^ U (行删除),并且当写操作失败时,负责删除输出字符“ *”的代码将数据重置为可用缓冲区的大小,但不会将指针返回到缓冲区中当前值的原始位置。

该操作的另一个促成因素是缺乏自动关闭pwfeedback模式的功能。 当不是从终端而是从输入流接收数据时(此缺陷为记录错误创造了条件,例如,在具有未命名单向通道的系统中,尝试记录要读取的通道结束时会发生错误)。

考虑到 攻击者可以完全控制堆栈上数据的覆盖,创建允许您增加root用户特权的漏洞利用程序并不难。

任何用户都可以利用此问题,无论使用sudo的权利以及sudoers中是否存在用户特定的设置。

具有sudo权限的用户可以检查«pwfeedback»通过运行启用:

  sudo -l

是的 ”pwfeedback»出现在输出“匹配默认值条目”中,配置为 毛衣 她看起来受影响。 在以下示例中, 毛衣 易受攻击:

 sudo -l

Matching Defaults entries for “USER” on linux-build:

insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail

USER用户可以在linux-build中运行以下命令:

         (ALL: ALL) ALL

关于该错误,说明了无需sudo权限即可利用该错误,它仅要求 pwfeedback 已启用。 可以通过在请求密码时通过管道将大量输入传递给sudo来重现该错误。

例如:

perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id

Password: Segmentation fault

造成此漏洞的原因有两个:

  • 从终端设备以外的其他设备读取时,“ pwfeedback”选项不会被忽略,应该正确地忽略它。 由于缺少端子,因此行擦除字符的保存版本保持其初始值0。

  • 如果出现写错误,清除星号行的代码将无法正确重置缓冲区位置,但是会重置缓冲区的剩余长度。 结果,getln()函数可以写到缓冲区的末尾。

最后, 据说该问题已在sudo 1.8.31版本中修复,几个小时前发布。 尽管在发行版中,该漏洞仍未得到纠正 所以 询问受影响发行版的用户 或他们检测到 pwfeedback 在文件中 / etc / sudoers, 更新到新版本的sudo.

有人提到 阻止问题,最重要的是您必须验证配置/pwfeedback 不在 / etc / sudoers 并在必要时将其停用。

数据来源: https://www.openwall.com


发表您的评论

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

*

*

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