首页 > 系统相关 >linux sudo漏洞 可导致用户以 root 权限运行命令

linux sudo漏洞 可导致用户以 root 权限运行命令

时间:2024-04-03 13:34:37浏览次数:18  
标签:sudo 导致用户 用户 命令 linux root ID 运行

Sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令,通常是以 root 用户身份运行命令,以减少 root 用户的登录和管理时间,同时提高安全性。该漏洞是 sudo安全策略绕过问题,可导致恶意用户或程序在目标 Linux 系统上以 root 身份执行任意命令,即使 “sudoers configuration” 明确禁止该 root访问权限也不例外。

漏洞详情

这个漏洞的 CVE 编号是CVE-2019-14287,是由苹果信息安全部门的研究员 Joe Vennix 发现并分析的。与其说让人恐慌,不如说让人兴趣盎然,它要求系统具有非标准配置。换句话说,在默认情况下,Linux 计算机并不易受攻击。

然而,如果你的配置是这样的:让用户以 root 权限以外的其他用户权限运行命令,那么可能就需要注意了:因为用户可以通过命令行上的 –u#-1 绕过这个非 root限制。

如果将 sudo配置为允许用户通过Runas 规范中的 ALL 关键字以任意用户身份运行命令,则可以通过指定用户 ID为-1 或4294967295 以 root 用户身份运行命令。

只要Runas 规范中最先列出 ALL 关键字,即使Runas 规范明确禁止 root访问权限,那么具有足够的 sudo 权限的而用户即可以 root 身份运行命令。以这种方式运行的命令的日志条目会把目标用户列为 4294967295而非 root。

另外,将不会为该命令运行 PAM 会话模块。具体而言:利用该漏洞要求用户具有 sudo 权限,从而以任意用户 ID 运行命令。一般而言,这意味着用户的 sudoers 条目在 Runas 规范中具有特殊值 ALL。Sudo 支持在 sudoers 策略允许的情况下,以用户指定的名称或用户 ID 运行命令。例如,如下 sudoers 条目允许 id 命令以任意用户身份运行,因为它包含 Runas 规范中的关键字 ALL。

myhost alice = (ALL) /usr/bin/id

  用户不仅能够以其它合法用户身份运行该 id 命令,还能使用 #uid 语法以任意用户 ID 运行该命令,例如:

sudo -u#1234 id -u

  将返回1234,然而,sudo 在运行命令前用户修改用户 ID 的setresuid(2) 和 setreuid(2) 系统调用将特殊对待用户 ID为-1(或其未签名的等同值 4294967295)而且并不会修改该值的用户 ID。因此,

sudo -u#-1 id -u

  或

 sudo -u#4294967295 id -u

  实际上会返回 0。这是因为 sudo命令本身就已经以用户 ID 为0 运行,因此当 sudo 试图将用户 ID 修改成 -1时,不会发生任何变化。这就导致 sudo 日志条目将该命令报告为以用户 ID 为 4294967295而非 root (或者用户ID为 0)运行命令。此外,由于通过–u 选项指定的用户 ID 并不存在于密码数据库中,因此不会运行任何 PAM 会话模块。如果sudoers 条目被写入允许用户以除 root 身份以外的用户身份运行命令,则可利用该 bug 绕过该限制。例如,给定如下 sudoers 条目:

myhost bob = (ALL, !root) /usr/bin/vi

  用户 bob 被允许以除了 root以外的其它用户身份运行 vi。然而,由于存在该漏洞,bob 实际上能够通过运行 sudo -u#-1 vi 的方式以 root 身份运行 vi,从而违反了安全策略。只有Runas 规范中存在关键字 ALL 的sudoers 条目受影响。例如,如下sudoers 条目并不受影响:

myhost alice = /usr/bin/id

  

在这个例子中,alice仅被允许以 root身份运行 id 命令。任何以其它用户身份运行该命令的尝试都将遭拒绝。

影响版本

1.8.28之前的所有 Sudo 版本均受影响。

修复方案

Sudo 1.8.28 版本已修复该漏洞。强烈建议 Linux用户将 sudo包手动更新至最新版本。

 

标签:sudo,导致用户,用户,命令,linux,root,ID,运行
From: https://www.cnblogs.com/ZenoLiang/p/18112474

相关文章

  • Linux系统下安装MongoDB的详细步骤
    一、概述MongoDB由C++语言编写,是一个介于关系型数据库和非关系型数据之间的产品,是非关系型数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似与json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语......
  • Linux内核中的通用PHY驱动
    一. 简介前面一篇文章说明了有线网络的网络硬件方案。常用到的一种方案是:内部集成了MAC网络外设的SOC芯片(处理器),外接一个PHY网络芯片。前面文章也学习了Linux内核中的PHY子系统,也是为(上面这种方案)PHY网络芯片提供的驱动框架。Linux内核内部提供了通用的PHY驱动。本文来学......
  • 如何提高Linux RCU实时性
    简介     LinuxRCU(Read-Copy-Update)是一种同步机制,用于提高多处理器系统中读取频繁且写入少的数据结构的性能。在实时系统中,响应时间和预测性是非常重要的。实时性意味着系统能够在严格的时间限制内完成任务。RCU通过减少锁的需求和允许并行读取操作,提高了系统的实时性......
  • linux下mysql8.0更新密码报错解决方案(已知密码)
    先登录./mysql-uroot-p输入密码 然后更改密码直接执行ALTERUSER'root'@'localhost'IDENTIFIEDBY'密码';会失效会报:ERROR1396(HY000):OperationALTERUSERfailedfor'root'@'localhost'进行如下操作即可usemysql;updateuserset......
  • Linux中批量杀进程的方法(转)
    一、使用awk批量杀进程的命令:ps-ef|grephello|grep-vgrep|awk'{print"kill-9"$2}'|sh说明:ps-ef|grephello|grep-vgrep#列出了当前主机中运行的进程中包含hello关键字的进程ps-ef|grephello|grep-vgrep|awk'{print"kill-9"$2}'......
  • linux 中 vim编辑器设置忽略大小写查找
     001、测试数据[root@pc1test01]#lsa.txt[root@pc1test01]#cata.txteerootkkaaeedddeeROOTkkeeddRoot 002、方法1vim打开查找文件,在查找内容的后边增加\c,如果不在末尾增加\c,则表示的是不忽略大小写比如针对root忽略大小写查找:eerootkkaae......
  • LINUX之NFS服务器部署
    主机IP服务端192.168.201.131客户端192.168.201.1321.服务端配置1.1安装NFS和rpc[root@hx1~]#yuminstall-ynfs-utils[root@hx1~]#yuminstall-yrpcbind1.2 启动服务和设置开启启动[root@hx1~]#systemctlstartrpcbind[root@hx1~]#systemctlenablerpcb......
  • Linux 服务器设置 jar包开机自启动
    一、新建jar包启动sh文件新建startup.sh脚本文件,启动项目jar包nohupjava-jartest.jar>/dev/null2>&1&二、设置自动启动命令1.进入rc.d目录执行cd/etc/rc.d命令,进入rc.d目录如图所示(示例):2.修改rc.local文件内容执行命令virc.local,然后按下键盘上的【i】键进入修改模......
  • Linux 诊断工具sysdig
    1、跟踪系统调用sysdigproc.pid=31760sysdigproc.name=nginx2、分析系统性能sysdig-ctop:显示系统中消耗CPU最多的进程。sysdig-ctopprocs_cpu:显示消耗CPU最多的进程及其CPU占用率。sysdig-ctopprocs_mem:显示消耗内存最多的进程及其内存占用量。sysd......
  • Linux C++ 016-友元
    LinuxC++016-友元本节关键字:Linux、C++、友元及三种实现方式相关库函数:友元的概念及关键字friend在程序里,有些私有属性也可以让类外特殊的函数或者类进行访问,这就需要用到友元技术。友元的目的就是让一个函数或者类访问另一个类中私有成员。友元的三中实现方式(1......