Walikrence 2015-03-27
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【注1】到目前未知因为厂商利益以及社区政治等各种原因,虽然被诸多操作系统抄袭( Linux/Windows/OSX),但一直未能进入Linux主干代码。
【注1】PaX的技术考古之旅
Grsecurity/PaX目前应用广泛,特别是具有高安全性的环境,Gnu/Linux发行版里Gentoo提供PaX作为加固选项,最近半年Debian社区发起的对抗大规模监控的加固项目Mempo在内核中也使用了Grsecurity/PaX。 这篇文章仅仅是在学习PaX的3篇paper里的记录,PaX的思路的确非常的震撼,那都是10多年前的设计和实现,在这个一天云计算一天雾计算的年代,虽然关注本质的黑客越来越少,但地下精神并未死去,PaX Team就是一个活生生的例证,相反,不少old school黑客都坚信其实old school的数量并没有减少,至少我个人相信这是真的...Phrack没死,Grsecurity/PaX没死,DNFWAH也没死,希望更多的黑客(在DNFWAH ezine上面)分享自己的hacking之旅。正文摘要:“
PaX是针对linux kernel的一个加固版本的补丁,它让linux内核的内存页受限于最小权限原则,是这个星球上有史以来最极端和最优秀的防御系统级别0day的方案,第1版的设计和实现诞生于2000年,那可是一个没有ASLR/RELRO/NX/CANARY/FORITY/PIE都没有的年代,这些今天意义上的现代mitigation技术不管是linux/windows/macosx都多少抄袭和模仿了PaX的设计和实现,但有很多朋友会问:既然这东东这么厉害,为什么不在linux mainline里?当年Linux内核不收PaX进入upstream是因为很多人觉得PaX不是那么的好维护,之后linux内核推出了LSM( Linux Security Module),LSM利用了一堆CAPABILITY的 机制提供了一些限制用户态程序访问控制的接口,SELinux和Apparmor就是基于LSM开发的,注意LSM并不是一个传统意义上的linux kernel module,至少在2个地方不同于普通module:
1) 必须在bootloader启动内核时启动,不能在内核加载完后启动。
2) 不能同时启动2个LSM的实现。
但PaX Team是一群old school security hackers,他们认为LSM打破了 "security as a whole"的哲学,所以宁愿单独维护一个patch,一直到今天。其实当人们谈到Gnu/Linux安全性比windows/OSX更好时,其实未必,至少linux内核社区并没有把安全性放在首位,Linus Torvalds从来都不是太care安全问题,不是吗?
当我们谈到PaX时都会写Grsecurity/PaX,这是怎么回事呢?PaX从一开始就主要关注如何防御和检测memory corruption,后来Grsecurity社区发现PaX和他们所关注的非常类似,所以就合并了,在很长的一段时间里PaX主要关注memory corruption,而Grsecurity则实现其他的功能包括RBAC,但到最近2个社区的工作开始模糊了:包括USERCOPY, STACKLEAK, RANDSTRUCT, etc..都是整个Grsecurity/PaX共同实现的特性。”