摘要:
本文介绍Android内核的安全机制,漏洞特点和Android内核漏洞挖掘技术.传统的内核模糊测试技术通常采用大量随机测试用例进行测试,然后采用各种方法提高代码覆盖率.但是由于随机的模糊测试效率低下,除去一些无效的测试数据外,大部分数据都在正常的逻辑功能上测试,只有少量的数据能够进入深层代码.另外,触发异常的数据常常是在各种意想不到的输入数据和系统状态上,单纯由输入数据引起的异常很容易被随机的模糊测试检测出来.而随着安全技术的研究,许多浅层代码的漏洞被发现,最新发现的漏洞呈现出触发条件越来越复杂的趋势.许多安全漏洞需要在满足一定条件的基础上输入恶意数据才能够触发异常,在这种情况下单独对输入数据进行变异的模糊测试效果有限.基于以上背景,本文提出了基于状态的内核漏洞挖掘技术,这里的状态指系统的脆弱状态.本文在研究Android内核代码和历史漏洞的基础上提出了 Android内核脆弱状态,然后在脆弱状态的基础上对Android内核进行模糊测试.本文针对内核脆弱状态建立了内核有限状态机模型,并设计了基于有限状态机的内核模糊测试算法,使用有限状态机的思想指导模糊测试的实施.本文设计并实现了基于脆弱状态提取的内核快速漏洞挖掘工具AndFuzzer,该系统包括状态库的构建模块,状态选择模块,测试用例生成模块,模糊测试模块,异常处理模块和反馈模块.本文通过对Android内核sysfs接口和socket的PF_PACKET模块的测试,发现了三处内核漏洞,并复现了多处历史漏洞,说明本文提出的基于状态的内核漏洞挖掘技术行之有效,同时也验证了 AndFuzzer工具的有效性.
展开