安卓O内核的加固

安卓用户空间的加固使得越来越多攻击者开始研究linux内核,这使得去年发现的安卓安全的漏洞,1/3都在内核上。在安卓8.0(Oreo)中,程序员们做出了巨大的努力来加固内核,以减少安全漏洞。

Android Nougat通过把内核和用户进程隔离开来,使用SELinux ioctl进行过滤,并请求seccomp-bpf的支持(能够在处理不受信任的输入时,过滤对系统调用的访问),以保护内核。安卓8.0重点关注内核上的保护,其中主要有4个安全加固特征,并在第一个发行版发布时,将之以补丁的形式发布所有支持的设备上。

加固用户复制功能

用户的复制功能原理是将用户空间的数据传输到内核中,然后再返回到用户空间中。从2014年开始,缺少或是不合理的边界检查已经导致了45%的安卓内核漏洞。加固的用户复制功能添加了边界检查,它可以帮助开发者定位误用并修复他们代码中的bug。当然,如果出现隐蔽的驱动bug,这些功能的加固使得这样的bug难以被利用。

这些特征在linux内核4.8版本中有介绍,我们将这些补丁打到了安卓的linux 3.18版本的内核上了。


int buggy_driver_function(void __user *src, size_t size)
{
   /* potential size_t overflow (don’t do this) */
   u8 *buf = kmalloc(size * N, GPF_KERNEL);
   …
   /* results in buf smaller than size, and a heap overflow */
   if (copy_from_user(buf, src, size))
   return -EFAULT;

   /* never reached with CONFIG_HARDENED_USERCOPY=y */
}

上述是加固后的用户复制功能预防漏洞的一个例子。

Privileged Access Never(PAN)仿真

加固的用户复制功能能够帮助我们找到并防御安全问题,也能在开发者使用它们的时候起到作用。目前,所有的内核代码,包括驱动,都能直接访问用户空间的内存,这会导致各种各样的安全问题。

为了防御这个瓿,CPU供应商介绍了一些诸如

x86平台上的Supervisor Mode Access Prevention (SMAP),ARM v8.1上的Privileged Access Never (PAN)。这些特征可以预防内核直接访问用户空间,并确保开发者访问它通过用户复制功能。不幸的是,这些特征还并没有在设备上得到广泛应用。

Linux的Upstream介绍一种使用软件模拟PAN在ARM版的4.3内核和ARM64版的4.10内核上的应用的方法。

使用加固的用户空间,PAN模拟能帮助我们在Pixel手机上的4个内核驱动上,找到并修复漏洞。

int buggy_driver_copy_data(struct mydata *src, void __user *ptr){   /* failure to keep track of user space pointers */   struct mydata *dst = (struct mydata *)ptr;   …   /* read/write from/to an arbitrary user space memory location */   dst->field = … ;    /* use copy_(from|to)_user instead! */   …   /* never reached with PAN (emulation) or SMAP */}

以上是PAN模拟防御安全漏洞的一个例子。

内核地址空间布局随机化(KASLR)

安卓使用了内核地址空间布局随机化这个技术已经好几年了。随机化的内存布局使得代码重用攻击不再一定起作用,也就使得攻击者尤其是远程攻击者更难进行利用。安卓8.0把这个特征带到了内核。Linux从3.14版本开始已经支持x86平台上的KASLR,ARM64平台上的KASLR也已经从4.6版本开始支持。安卓8.0使得KASLR在安卓内核4.4上和更新的版本开始受到支持。

KASLR通过在每次启动时随机化内核代码的地址来防御内核漏洞。例如,在ARM64平台上,它根据设备的内存配置,添加了13-25位的熵,这会使得代码重用攻击更加困难。

初始化时确定只读内存

最终的加固特征继承了内核已有的内存保护,这种保护机制通过在内核初始化后,创建标记为只读的内存区域。这使得开发者在初始化阶段,当数据需要可写权限时有可能改善保护机制,但在那之后不能再进行修改。使得可写的内存变得更少可以减少来自内核的攻击,使得漏洞利用更加困难。

在初始化时确定的只读内存在内核4.6中有介绍,我们把它移植到了安卓3.18内核以及更新的版本上。当我们应用这些保护机制到内核的一些数据结构上时,这一特征对于那些工作在内核驱动的开发岗位上的开发者非常有用。

总结

安卓O包含了防御内核上的大多数的安全漏洞机制。这非常重要,因为安卓上85%的内核安全漏洞来自于驱动供应商,并且缺少详细的代码审查。这些更新使得驱动开发者在开发时更容易发现公共的漏洞,并在它们到达用户设备之前阻止它。

本文由看雪翻译小组 梦野间 编译,来源Sami Tolvanen@Developer’s blog  转载请注明来自看雪社区

时间: 2024-10-04 16:06:06

安卓O内核的加固的相关文章

瑞星杀毒软件V16+内核加固更安全

  从电脑防护的角度看,瑞星杀毒软件V16+的"内核加固"是一项很给力的功能.它会对系统动作.注册表.关键进程和系统文件进行监控,防止恶意程序绕过杀软监控对系统进行进程修改.注册表修改.关键文件破坏等危险行为. 图片说明 内核加固是瑞星杀毒软件V16对操作系统进行底层内核级的安全防护措施.用户还可以自定义内核的加固规则,可以点选"文件"与"注册表"."所有程序"与"安全检测区的程序"等类型选项. 加固规则

瑞星杀毒软件V16"内核加固"功能

瑞星杀毒软件V16的"内核加固"是瑞星的独创技术.该功能会对系统动作.注册表.关键进程和系统文件进行监控,防止恶意程序绕过杀软监控对系统进行进程修改.注册表修改.关键文件破坏等危险行为.下面,我们就来看看瑞星的内核加固到底能有多"坚固". 解析瑞星杀毒软件V16"内核加固"功能 从原理上讲,内核加固其实算一种主动防御措施,是瑞星杀毒软件V16对操作系统进行底层内核级的安全防护措施. 这种技术可以阻断一切未经授权的篡改.删除.盗取等行为."

安卓内核UAF漏洞利用探秘

 雷锋网编者按:8月16日,第三届中国互联网安全领袖峰会(CSS 2017)在北京国家会议中心召开.作为九大分会场之一的腾讯安全探索论坛(TSec)以"安全新探索"为主题,云集了国际知名厂商及顶尖高校的资深安全专家,探讨全球信息安全领域前沿技术.研究成果及未来趋势.来自腾讯安全科恩实验室的方家弘.申迪分享了面对安卓内核中存在的UAF漏洞数量不断变小.利用难度逐渐变大的现状,将如何稳定高效地利用这类漏洞来完成操作系统提权. 方家弘:大家下午好!我是来自腾讯安全科恩实验室的方家弘,我和我的

阿里内核月报2017年02月

The future of the page cache 持久化内存用得越来越多, 促使了内核的一系列变更, 内核是否还真的需要页面缓存呢? 在2017 linux.conf.au会上, Matthew Wilcox先是纠正了数年前的一个错误,然后表示, 我们不仅需要页面缓存,还要将他的作用将进一步得到提升. 他从他作为微软员工的时候开始讲起,以前他以为不会提及这个. 然后进入主题,内容如下, 计算机就是缓存的世界.只要缓存都命中,他的新电脑每秒可以执行100亿条指令.但是内存每秒只能跑5亿3千

内核月报201702

Upstream 4.10-rc7 文章来源 *LWN 文章摘要 The future of the page cache *https://lwn.net/Articles/712467/ 齐江 十刀 持久化内存用得越来越多, 促使了内核的一系列变更, 内核是否还真的需要页面缓存呢? 在2017 linux.conf.au会上, Matthew Wilcox先是纠正了数年前的一个错误,然后表示, 我们不仅需要页面缓存,还要将他的作用将进一步得到提升. 他从他作为微软员工的时候开始讲起,以前他以

Linux内核再现漏洞!这次11年后才发现

还记得上一次Linux内核出现大的漏洞是什么时候吗?2009年Linux内核出现严重安全漏洞,直到2014年才被发现,这个严重安全漏洞整整存在了5年时间.2017年5月9日,启明星辰ADLab(积极防御实验室)发现Linux内核存在四个极度危险的漏洞--代号"Phoenix Talon"(CVE编号:CVE-2017-8890.CVE-2017-9075.CVE-2017-9076.CVE-2017-9077).研究发现这些漏洞在Linux内核中存在至少已经存在了11年-- 也就是说,

潜伏 11 年之久,Linux 惊现高危内核漏洞 "Phoenix Talon"

Quadra Kill! Linux惊现四个高危内核漏洞: 近日启明星辰ADLab(积极防御实验室)发现Linux内核存在四个极度危险的漏洞--代号"Phoenix Talon"(CVE编号:CVE-2017-8890.CVE-2017-9075.CVE-2017-9076.CVE-2017-9077).经研究这些漏洞在Linux内核中至少已经存在了11年,几乎影响了这11年间发布的所有Linux内核和对应的发行版本以及相关国产系统. 漏洞危害 Linux存在着许多不同的版本,比如Re

安卓系统曝root权限安全漏洞 已有软件利用

 3月23日消息,据科技网站Engadget报道,对爱好者来说,Root是安卓的标志性特征,但此种做法也可以被潜在的攻击者利用.谷歌日前就警告称,安卓Linux内核中存在一个漏洞,可以让应用获得Root权限,让入侵者控制设备. 这个漏洞并非只存在于理论之中.曾发现"Stagefright"安全隐患的公司zimperium表示,已经发现有利用这一漏洞的应用出现. 好消息是修补工作进行得很快,或者说至少对部分用户是这样.使用开源项目版安卓系统(AOSP)的用户现在就可以安装补丁,但如果使用

道哥”透露从业初心:安全技术影响世界,就必将要承担起社会责任

  我相信,未来我们会生活在一个数据被时时监控的时代,被企业出于商业目的监控,被黑客出于牟利目的监控.这就像我们每个人都赤身露体行走在光天化日之下一样,想想就会让人不舒服.如果没有合理的法律和有效的技术保护手段,这将是最糟糕的时代. 但这个时代终将到来,不管我们是否喜欢它,只能做好迎接它的准备,不适者将被淘汰.我们能做的,是尽自己的微薄之力,按照我们的想法,将这个即将到来的时代塑造得更加美好. 这是阿里云首席安全研究员吴翰清(道哥)曾在一份公司内部报告里写下的话. 4年前,他曾怀着"达则兼济天下