测试了一把,结果显示360基本对Linux社区规范和安全常识不give a fuck。

胡乱打包

首先,这个deb包就是胡乱打包,依赖关系就没弄好:

$ dpkg-deb -I 360safeforlinux-3.0.0.66-stripped.deb
[...]
Package: 360safeforlinux
Version: 3.0.0.66
Architecture: amd64
Maintainer: qihu360 company
Installed-Size: 23617
Depends: libc6 (>= 2.14),libglib2.0-0 (>= 2.38),python2.7 (>= 2.7.6),openssl(>= 1.0),curl,libqt4-network(>= 4.8.5),libqt4-sql(>= 4.8.5)
Section: gnome
Priority: required
Essential: yes
Description: 360 safe for linux

但是还实际依赖了libpython2.7和libqtgui4两个库没有标明,要我手动修复。

滥用 Essential

这个打包还通过滥用Essential标记来制造卸载的麻烦。

root@debian-amd64:/home/user# apt-get remove 360safeforlinux
[...]
The following packages will be REMOVED:
360safeforlinux
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
360safeforlinux
[...]
**You are about to do something potentially harmful.**
To continue type in the phrase 'Yes, do as I say!'
?]
Abort. root@debian-amd64:/home/user# aptitude remove 360safeforlinux
The following packages will be REMOVED:
360safeforlinux
[...]
The following ESSENTIAL packages will be REMOVED!
360safeforlinux WARNING: Performing this action will probably cause your system to break!
Do NOT continue unless you know EXACTLY what you are doing!
To continue, type the phrase "I am aware that this is a very bad idea":

关于Essential打包政策, Debian 和 Ubuntu 都只保留给最必要的包。

随意使用 setuid

安装后dpkg配置时它的postinst脚本直接给加上了setuid。如此随意地使用setuid,还能自称是安全?

if [ "$1" = "configure" ];then
chmod u+s /opt/360safeforlinux/s360SafeForLinux
[...]
fi

这个的意思就是,以普通用户权限运行这个东西,它会变成root:

user@debian-amd64:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev)
user@debian-amd64:~$ start360 &
[1] 4512
user@debian-amd64:~$ pstree -u
init─┬─dhclient
├─5*[getty]
├─login───bash(user)───startx───xinit─┬─Xorg(root)
│ └─x-window-manage
[...]
├─urxvtd(user)
└─urxvtd(user)─┬─bash───start360(root)─┬─{BackendTaskThre}
│ ├─{BrowserHomePage}
│ ├─{CpuMemUseState}
│ ├─{FileWatcher}
│ ├─{IsolateZone}
│ ├─{LogCleanThread}
│ ├─2*[{MyThread}]
│ ├─{VdUpload}
│ └─3*[{start360}]
└─bash───pstree

内核模块?

dpkg的prerm脚本还有奇怪的东西:

rc=`lsmod | grep "rk360" | xargs echo`
if [ -n "$rc" ];then
rmmod rk360 2>/dev/null 1>&2
rm -rf /etc/360safe/360safe.ko 2>/dev/null 1>&2
fi
rc=`lsmod | grep "immu" | xargs echo`
if [ -n "$rc" ];then
rmmod immu 2>/dev/null 1>&2
rm -rf /etc/360safe/immu.ko 2>/dev/null 1>&2
fi

360不仅不满足于root权限,还在用内核模块?不过这次使用中并未发现这两个内核模块。

运行的怪现状

start360启动,然后有两个运行时怪现状:

  1. 把pid保存到/etc/360safe/360safeforlinux.pid。会不会遵守FHS?
  2. 疯狂扫描系统文件,powertop显示闲置状态每秒30个唤醒,笔记本电池寿命已死。会不会用inotify?

功能的真相

它提供了一些功能。

  • 全盘扫描。所有文件都是按照标准设计的,哪个恶意哪个不恶意真不是360能说了算的。
  • 一键清理。可以使用这个命令替代:rm -r ~/.adobe ~/.cache ~/.local ~/.macromedia ~/.thumbnails /tmp/*。但是这些临时文件是有用的,也占不了多大空间。
  • 优化加速。就是把update-rc.d/chkconfig封装了一个图形界面。
  • 软件管家。360的私货app store。
  • 文件粉碎。Linux下有什么无法删除的“顽固”文件?还是重新发明了coreutils的/usr/bin/shred?来删除/proc试试?
  • 网盾。就是Firefox和Chrome的插件。
    ./etc/360safe/urlcheck
    ./etc/360safe/urlcheck/normalize.py
    ./etc/360safe/urlcheck/Firefox
    ./etc/360safe/urlcheck/Firefox/360webshield@qihoo.com.xpi
    ./etc/360safe/urlcheck/lcloud.ini
    ./etc/360safe/urlcheck/browserextensionsinstaller.py
    ./etc/360safe/urlcheck/Chrome
    ./etc/360safe/urlcheck/Chrome/360WebShield.crx
  • 还有二进制库的“云查杀”,QEX引擎,BitDefender引擎。不了解有什么用处。

许可证列举

360唯有一点用功了,就是列了一大堆非GPL的许可证:

license/zlib_license.txt
license/c-ares_license.txt
license/qt_license_lgpl.txt
license/unrar_license.txt
license/sqlite_license.txt
license/elftoolchain_license.txt
license/libcurl_license.txt
license/7-Zip_license.txt
license/boost_license.txt
license/openssl_licnese.txt
license/minizip_license.txt
license/jsoncpp_license.txt
license/protobuf_license.txt
license/Noto fonts_license.txt
license/qt_lgpl_exception.txt

这样人们就无权索要源代码。不过,一个安全产品不公开源代码,然后用setuid拿了root还要搞内核模块,谁知道你要干嘛?总之,360对Linux社区规范和安全常识基本不give a fuck。

为什么说缺乏安全常识。

首先,用setuid给一个图形网络程序整体提权到root就是自送漏洞,全身是洞,只要发现一个,就是远程root。

其次,用户界面永远不需要root,提权进行特定动作特定配置有polkit,更新系统配置文件可以有facl可以有SELinux/AppArmor,内核级文件扫描可以有auditd,这些机制都不需要一个以root运行的用户界面造成巨大的攻击面。

第三,以root权限运行网上下载的二进制文件是一切病毒发生的起源。尤其是这种既没有源代码可审计,也没有数字签名可验证真实性的东西。

注:本站对本文有部分修改。原文来自: http://www.v2ex.com/t/158380

360 安全卫士 for Linux 使用结果的更多相关文章

  1. 360安全卫士造成Sharepoint文档库”使用资源管理器打开“异常

           备注:企业用户还是少用360为妙        有客户反馈:部门里的XP SP2环境客户机全部异常,使用资源管理器打开Sharepoint文档库,看到的界面样式很老土,跟本地文件夹不一样 ...

  2. WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)

    以前学习Windows Form编程的时候,总感觉自己做的界面很丑,看到360安全卫士.迅雷等软件的UI设计都非常美观,心里总是憧憬着要是自己能实现这样的UI效果该多好!!!另一个困扰我的问题是,这个 ...

  3. C#制作高仿360安全卫士窗体<二>

    继上次C#制作高仿360安全卫士窗体<一>发布之后响应还不错,我的博客放肆雷特也来了不少的新朋友,在这里先谢谢大家的支持!我自己也反复看了一下觉得对不起大家,写的非常乱而且很少文字介绍.在 ...

  4. C#制作高仿360安全卫士窗体<一>

    开始写这一系列博客之前先要向大家说声抱歉,放肆雷特建立很久却很少有更新.当然博客人气也不旺,大部分都是看的人多评论收藏的人少.一直想要改变这种状态,正好赶上了最近工作上做了一个高仿360安全卫士窗体. ...

  5. C#制作高仿360安全卫士窗体(四)- 水晶按钮

    项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只 ...

  6. C#制作高仿360安全卫士窗体(三)

    距上篇C#制作高仿360安全卫士窗体(二)也将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作文本框写一下.同时也希望有爱好这些玩意的同 ...

  7. C#制作高仿360安全卫士窗体3

    C#制作高仿360安全卫士窗体(三)   距上篇C#制作高仿360安全卫士窗体(二)也将近一个多月了,这个月事情还是像往常一样的多.不多我也乐在其中,毕竟我做的是我喜欢做的东西.今天特地抽空把怎么制作 ...

  8. C#制作高仿360安全卫士窗体2

    C#制作高仿360安全卫士窗体 继上次C#制作高仿360安全卫士窗体<一>发布之后响应还不错,我的博客放肆雷特也来了不少的新朋友,在这里先谢谢大家的支持!我自己也反复看了一下觉得对不起大家 ...

  9. venom结合Metasploit绕过360安全卫士

    原理:msfvenom是msfpayload和msfencode的结合体,利用msfvenom生成shellcode,venom生成工具使用了 一些 Veil-Evasion.py, unicorn. ...

随机推荐

  1. 【PS实例】轻松打造梦幻的照片

    本系列教程将开始讲解PS的一些制作实例,通过实例的讲解同时介绍各种工具和面板机快捷键的使用,这样能够让大家更有兴趣学习,在学习的同时能够创造出自己喜欢的东西.本人使用的教程都是根据本人多次调试制作,仅 ...

  2. runtime获取对象所有属性(变量)和方法

    1.包含运行时头文件 <objc/runtime.h> 2.获取某个类的成员变量或者属性: unsigned int numIvars; //成员变量个数 Ivar *vars = cla ...

  3. 自定义springmvc统一异常处理器(实现HandlerExceptionResolver接口)不起作用的一种情况

    ExceptionResolverCustom 这个是自定义的异常处理器类. 在springmvc中注册 在web.xml文件中屏蔽springmvc自动注册的异常处理器 网上的资料就是这么配置的,可 ...

  4. bzoj 4032 [HEOI2015]最短不公共子串——后缀自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4032 不是 b 的子串的话就对 b 建后缀自动机,在 a 上枚举从每个位置开始的子串或者找子 ...

  5. 洛谷2943 [USACO09MAR]清理Cleaning Up——转变枚举内容的dp

    题目:https://www.luogu.org/problemnew/show/P2943 一下想到n^2.然后不会了. 看过TJ之后似乎有了新的认识. n^2的冗余部分在于当后面那部分的种类数一样 ...

  6. 程序4-2 access函数实例

    //http://blog.chinaunix.net/uid-24549279-id-71355.html /* ========================================== ...

  7. fragment在水平/垂直时的应用

    直接看代码 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedIns ...

  8. Spring MVC启动时初始化的几个常用方法

    Spring-MVC的应用中,要实现类似的功能,主要是通过实现下面这些接口(任选一,至少一个即可) 一.ApplicationContextAware接口 +? 1 2 3 4 5 6 7 8 9 p ...

  9. springboot成神之——basic auth和JWT验证结合

    本文介绍basic auth和JWT验证结合 目录结构 依赖 config配置文件WebSecurityConfig filter过滤器JWTLoginFilter filter过滤器JWTAuthe ...

  10. php 中php-fpm 的重启、终止操作命令

    php 中php-fpm 的重启.终止操作命令: service nginx restart service php-fpm restart 查看php-fpm进程数:ps aux | grep -c ...