360 for Linux 与 setuid

前言

今日,国内著名安全类软件 360 正式进军 Linux 平台,目前已提供 Debian/Ubuntu/Deepin 以及中标麒麟的预编译二进制。而包括我在内的吃螃蟹者都不同程度地注意到了 360 for Linux 的二进制在正常状况下被设置了 setuid 位。即 4755 权限。如 http://www.v2ex.com/t/158380#reply27 以及 http://tieba.baidu.com/p/3499343332

图: 360 for Linux 的权限位

如图所示,这是我在 VirtualBox OSE 中安装的 Lubuntu 14.10 中的 360 for Linux 安装后的权限位, ls 已经将其标红并且显示权限位为 -rwsr-xr-x (4755) 。下面就 setuid 以及其作用展开一些推论。

什么是 setuid 以及相关的安全隐患

setuid 以及 setgid 是 UNIX 环境下的特殊权限位。当作用于可执行文件时,该权限位将导致无论以何用户启动,该可执行文件将拥有其所有者的权限。如 /usr/bin/sudo 的拥有者为 root 且权限为 4755, 那么即使一个非 root 用户执行了 sudo, 其依然会拥有 root 的权限,如读取 /etc/shadow 文件 (-r————, root:root) 的权限。对于用户而言,其最直接的意义在于合法的无密码提权。这使得一般使用该特性的程序都被小心设计以免不测。因为如果设计不当,攻击者可能可以在不需要任何密码的情况下轻松夺取对目标系统的最高权限。基于同样的原因,包括 Linux 在内的部分操作系统会忽略设置在脚本文件上的 setuid/setgid 位。对于普通用户而言,一个被 setuid/setgid 了的恶意可执行文件将能够在不盗取密码的情况下破坏整个系统(尤其是当类似 TOMOYO Linux 的强制访问控制系统没有正确设置时)。因而一般情况下开发者以及系统管理员都会谨慎处理这一特殊权限。如在 Debian 中,可以通过对 man 程序设置 setuid 位来加快 man-db 索引但是由于可能带来的安全隐患该选项必须在安装过程中由用户启用。

360 for Linux 对 setuid 应用的利弊分析

setuid 位最直接的用处是允许 360 for Linux 在不被用户注意的情况下以 root 权限允许。一方面,这将免除用户每次开机都要输入密码的麻烦;另一方面,由于用户无法察觉,该程序可能在有意无意之中对系统造成无法修复的破坏或者成为其他恶意软件入侵系统的跳板(比如 Windows 上的 Sony BMG CD 反拷贝程序由于设计不良就成为了其他恶意软件的跳板)。同时,如果该程序留有(可能存在)的后门,用户也无法从 UNIX 权限系统得到应有的保护。

图:部分使用了 setuid 的程序。这些程序并非全部都需要该权限位,部分程序可以改用 PolicyKit 来实现提权。

PolicyKit 与无密码提权一些想法

图: GNOME PackageKit 使用 PolicyKit 进行有密码提权以删除软件包

图: Windows UAC 对需要 Administrator 权限的 Acronis True Image 进行提权前提示用户输入凭据

我们必须承认,无密码提权在一定程度上方便了用户,但与此同时这种行为也埋下了安全隐患。比如在 AOSC OS2 时代, AnthonOS 默认 sudo 可以进行无密码提权但是这一设定以及因为潜在的安全风险被禁止了。

在很多时候,密码是给用户知情权与选择权。用户知道一个程序要提权并且用户也有选择去拒绝他所不信任的提权请求。同时,如果用户如果对某个先前的决定反悔或发现其为误操作,此时也可以阻止该行为的继续以避免损失。

360 这种行为则涉嫌向用户隐瞒自身的提权行为。这也许只是为了方便用户,也有可能有其他企图。

而如果只是为了避免在 Windows Vista 时代的尴尬,也就是每次开机都出现授权弹窗,也不一定需要使用 setuid 这一有严重安全隐患的方法。 PolicyKit 提供了一套将程序分离为以特权权限运行和以非特权权限运行的两部分并且进行互相沟通的机制。比如 GNOME PackageKit 本身以非特权运行,其通过 PolicyKit 发起需要特权的请求并由 PolicyKit 决定是否需要用户参与提权。而在 Windows 平台上,Avira 旗下的安全产品的主界面并不需要以特权启动,而仅在更改设定或关闭/开启监控时通过 UAC 进行提权,避免了开机时弹出交互式授权对话框的尴尬。

结语

综上所述, 360 for Linux 使用 setuid 可能有其原因。但是鉴于 setuid 本身巨大的隐患,建议用户现阶段慎重使用该软件。我本人也呼吁现在与或即将与奇虎有合作的厂商对 360 for Linux 本身进行全面的安全审计以防被居心叵测者利用或者可能存在后门。与此同时,我本人也建议 360 for Linux 使用标准的 PolicyKit 架构,实现特权部分与非特权部分的分离,并且给用户适当的提示以满足其知情权和选择权。

原文发布时间:2014-01-02

本文来自云栖合作伙伴“linux中国”

360 for Linux 与 setuid相关推荐

  1. linux系统浏览器安装失败怎么办,360浏览器Linux版测试期已过并删除配置文件也不能安装使用的解决...

    360浏览器Linux版是有测试期的,为三个月,如果你的试用期已过,但是无法正常使用,或者你已经删除了360浏览器配置文件,但还是不能使用,请按如下解决方法处理. 前言 通常来说,从提示过期后你只要删 ...

  2. linux 启动最快浏览器,360浏览器linux版竟然比谷歌的chrome浏览器还快

    360浏览器linux版准确的说是360浏览器ubuntu版,基于chromium技术,因为它只提供支持ubuntu系列的deb包,目前推出的2018年8月24日更新版(browser360-beta ...

  3. linux 进程 setuid,Linux SetUID(SUID)文件特殊权限用法详解

    在讲解<权限位>一节时提到过,其实除了 rwx 权限,还会用到 s 权限,例如: [root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x. ...

  4. linux 进程 setuid,linux特殊权限位之setuid、setgid和sticky

    我们登陆到系统之后,创建一个普通文件或者目录的时候,会有一个默认的权限.普通文件是644,目录文件是755,想必大家都知道这个是由umask这个值决定的.我们可以直接执行umask命令查看,linux ...

  5. linux 360网卡开热点,扔掉360:Linux下无线网卡作WiFi路由器(转薄荷开源网)

    这个话题很多人感兴趣,毕竟现在是无线互联时代.手机一族到外面去,首先关心的就是有没有 WiFi.Windows 7 用户可以安装 360 的软件,把笔记本电脑配置成路由器,供手机或其他电脑上网. 在 ...

  6. Linux笔记——SetUID,SetGID,黏着位权限

    导言 思考:为什么普通用户可以更改密码? 解: 更改密码涉及到的文件是/etc/passwd./etc/shadow,但是这两个文件对普通用户的权限如下所示: [ych@centos01 ~]$ ll ...

  7. linux c setuid函数解析

    在讨论这个setuid函数之前,我们首先要了解的一个东西就是内核为每个进程维护的三个UID值.这三个UID分别是实际用户ID(real uid).有效用户ID(effective uid).保存的设置 ...

  8. 360浏览器linux版本_360安全浏览器崩溃解决方案

    360安全浏览器崩溃解决方案方案一:打开360安全浏览器,按键盘上的F1调出浏览器医生界面,点击一键修复即可.如图所示:方案二:360浏览器打开了太多标签占用内存,并且随着浏览器开着的时间越长,占用内 ...

  9. linux类似360软件,linux下有什么类似鲁大师查看电脑配置的软

    满意答案 drqyna 2017.05.26 采纳率:40%    等级:11 已帮助:5455人 linux如何查看系统的硬件配置如何在linux系统下查看系统配置?在图形模式下我们可以很方便的利用 ...

最新文章

  1. SpringBoot中logback日志保存到mongoDB
  2. 撕掉伪善——用人话解释马云的996两次发言
  3. 我的博客开张了!!!
  4. 图像处理-图像增强(二)
  5. java/01/java简介,java基本概念,java基本类型的划分
  6. 微信小程序之自定义模态弹窗(带动画)实例
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的眼镜店仓库管理系统
  8. 数据在各层之间的发送过程
  9. blog.1z5k.com
  10. 数学动态规划:期望DP
  11. 删库跑路最佳实践总结
  12. 线性代数笔记1.1n阶行列式
  13. android图片存储到本地文件夹在哪里找,android系统下,上网浏览的图片等临时文件的存放文件夹在哪?...
  14. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测
  15. MySQL数据库 1067号错误的解决办法
  16. 亲测三大热门短链接平台,告诉你谁才是最好的
  17. Ant Design vue 改变表格背景颜色
  18. win10 2016长期服务版激活
  19. 【实验】编译原理——编译器认知实验
  20. oracle11g ora 00904,【排故篇_oracle11g升19c之ORA-00904 WM_CONCAT invalid identifie排故

热门文章

  1. 欧式距离余弦相似度matlab,相似度计算——欧氏距离,曼哈顿距离,闵可夫斯基距离,汉明距离,夹角余弦...
  2. PHP防止恶意点击,百度竞价恶意点击实战心得
  3. 基于SolidWorks的六自由度焊接机械手设计【SolidWorks三维图+论文+CAD图+开题报告】
  4. xampp 文件提取替换 路径
  5. ISO14708-3:2017中关于有源植入物对非电离辐射的防护
  6. [快刀青衣]文章列表
  7. 设计模式解读之一: 策略模式——鸭子游戏
  8. K型热电偶转换函数(VB代码)
  9. 小程序记录页面停留时间
  10. 一句话理解FPGA,VHDL,EDA到底有什么区别