360 for Linux 与 setuid
| 2015-01-02 10:45 评论: 63 收藏: 3 分享: 55
前言
今日,国内著名安全类软件 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 架构,实现特权部分与非特权部分的分离,并且给用户适当的提示以满足其知情权和选择权。
- 微博评论 2015-01-09 08:33 赞 回复
- 国内还算行吧,毕竟免费……你看看最近好搜的广告词,那叫一个醉,直指百度@周鸿祎 //@Fistw:回复@rccoder:虽然360名声不好,但是技术没的说//@rccoder:[挖鼻屎][挖鼻屎]
- [1]来自 - 广东珠海 的 Chrome/Linux 用户 发表于 2015-01-08 16:39 的评论:赶国产操作系统大军
- linux 2015-01-08 22:23 赞 回复
- 我估计是有这个预谋。
- [1]微博评论 发表于 2015-01-02 11:33 的评论:也只能是醉了,有点Linux常识都知道要个杀毒软件没啥用,只是希望腾讯QQ能出Linux版[2]来自 - 广东珠海 的 Chrome/Linux 用户 发表于 2015-01-08 16:46 的评论:啊!也许只是现在的病毒少,普通用户多的话,说不定linux下的病毒破坏力更强。
- linux 2015-01-08 22:23 赞 回复
- 病毒多少和我们反对360无关。正是担心这种做事无底线的,会反而给单纯的环境带来更为问题才反对的。也许 LINUX 是原始的,但是还算干净。
- 微博评论 2015-01-05 20:33 赞 回复
- 360把windows整的快瘫痪,现在又来折腾linux,没憋好屁! //@Linux公社://@最范儿的孬Now:话说linux系统下有必要安装360这种杀毒软件吗?占用大量系统进程不说,关键是安装的意义在哪?吃螃蟹是吗?不好意思,我爱的是龙虾[吐]
- 微博评论 2015-01-05 19:03 赞 回复
- 还真没用过Linux下的杀毒软件,用了10来年Linux了!//@Linux公社://@最范儿的孬Now:话说linux系统下有必要安装360这种杀毒软件吗?占用大量系统进程不说,关键是安装的意义在哪?吃螃蟹是吗?不好意思,我爱的是龙虾[吐]
- 微博评论 2015-01-05 19:03 赞 回复
- 一大波病毒木马即将来袭[挖鼻屎]//@Linux公社: //@最范儿的孬Now:话说linux系统下有必要安装360这种杀毒软件吗?占用大量系统进程不说,关键是安装的意义在哪?吃螃蟹是吗?不好意思,我爱的是龙虾[吐]
- 微博评论 2015-01-05 18:33 赞 回复
- server版的linux服务器也可以用吗[吃惊]//@Linux公社://@最范儿的孬Now:话说linux系统下有必要安装360这种杀毒软件吗?占用大量系统进程不说,关键是安装的意义在哪?吃螃蟹是吗?不好意思,我爱的是龙虾[吐]
- 微博评论 2015-01-05 18:33 赞 回复
- 你不安,他怎么收集用户数据呢? //@Linux公社://@最范儿的孬Now:话说linux系统下有必要安装360这种杀毒软件吗?占用大量系统进程不说,关键是安装的意义在哪?吃螃蟹是吗?不好意思,我爱的是龙虾[吐]
- 微博评论 2015-01-05 15:33 赞 回复
- 我来给广大win开发者翻译下:"你注册服务了?你知不知道注册服务你就是system权限了?你为什么不告知用户你提权了.提权需要密码确认是用户的权利!,你剥夺了这个权利,你居然还加驱,加驱说明你有系统最高权限.必须严格设计,你绝对没严格设计,为什么? 因为我认为你没严格设计"
- [1]微博评论 发表于 2015-01-02 11:03 的评论:AOSC。。。又是个内部人士么?
- 来自 - 美国 的 Chrome/Windows 用户 2015-01-05 02:12 9 赞 回复
- 其实我帖子里面留的个人信息够多了
- [1]朩ダo○ 发表于 2015-01-02 11:31 的评论:作者这篇文章第二幅图以及第三幅图的dock栏很赞哇,不知道是怎么弄的,知道的人分享一下咯,我装的dock栏感觉好丑的样子.[2]linux 发表于 2015-01-02 12:26 的评论:可以去微博找 @Judgement_Engineer 或者去本文原文地址去找他。
- 朩ダo○ 2015-01-02 15:16 1 赞 回复
- 嗯嗯
- 微博评论 2015-01-02 12:03 1 赞 回复
- centos还没沦陷。这要是传到上游社区那里去,让人听说国内出了个Linux下优化软件,估计他们只有震惊了。我特别想知道linus本人知道了会怎么想。
- 微博评论 2015-01-02 11:33 1 赞 回复
- 360也真是醉了,我反而觉得在Linux上面装个杀毒软件某准程度上更不安全[挖鼻屎]但是对于大众普通用户,他们还是会去下载安装360,因为受Windows的影响,总觉的Linux系统裸奔不安全