Android: protecting the kernel
Linux内置安全机制
- Address space separation/process isolation
- unix permissions
- DAC capabilities
- SELinux
- seccomp
- namespaces
- …
内核Top 漏洞分类(按数量排序包括Core kernel 与 Vendor drivers,数据日期January 2014 -> April 2016)
- missing/incorrect bounds check
- null pointer defeference
- information leak
- missing permission check
- use after free
- race condition
- memory corruption(other)
- other
- integer overflow
- uninitialized data
利用缓解,安全机制- missing/incorrect bounds check(Landing in upstream kernel!)
- Hardened usercopy
- Protect against incorrect bounds checking in copy_*_user()
- PAN emulation
- Protect against kernel access to userspace bypassing hardened usercopy changes.
- Stack protector strong
- protects against stack buffer overflows
- KASLR (arm64 android-4.4 kernel)
- Makes code reuse attacks probabilistic
- PXN - make userspace non-executable for the kernel
- Protects against ret2user attacks
- RODATA - mark kernel memory as read-only/no-execute
- Makes code non-writeable, and data non-executable
漏洞利用缓解机制 - null pointer dereference
- CONFIG_LSM_MMAP_MIN_ADDR
- Make null pointer dereference unexploitable (just crash)
- PAN emulation also make null pointer
- dereference non-exploitable
一些安全建议
Android主线上的内核代码质量要优于厂商驱动代码:
- 厂商如何提升驱动代码安全质量? Step2
- Compiler changes e.g. integer overflow checking(clang 3.5+与gcc 5.0+都有integer overflow 检测)
- Scripts e.g. checkpatch.pl (checkpatch.pl可执行质量和简单漏洞检测)
- Runtime changes - e.g. PAN enforce proper use of copy_*_user() (Privileged Access Never)
- KASAN (内存错误检测)
- Constification (const声明)
利用缓解 - 减少攻击面(Linux权限模型,与SEAndroid策略配置)Setp1
- Restrict access to perf(限制perf访问)
- Access to perf_event_open() is disabled by default.
- Developers may re-enable access via debug shell
- Remove access to debugfs (限制debugfs访问,Android N完全禁止APP访问)
- All app access to debugfs removed in N
- Remove default access to /sys (白名单限制/sys访问)
- App access to files in /sys must be whitelisted
- Seccomp required for all devices (minijail shoutout!)
驱动代码安全质量控制:
- 安全编码规范,动静态安全检查(KASAN,checkpatch.pl等),安全编译选项
- 打开所有漏洞利用缓解机制
- 通过SELinux策略与Linux权限控制,减小驱动接口攻击面
Android: protecting the kernel的更多相关文章
- Compile android source and kernel for emulator in Debian
1.download the android source code Reference from http://source.android.com/source/downloading.html ...
- 编译android的linux kernel goldfish
https://source.android.com/source/building-kernels.html $ export PATH=/home/hzh/oldhome/learn/androi ...
- [原]Ubuntu 14.04编译Android Kernel
如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html 在Ubuntu 14.04上编译a ...
- 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6564592 在前一篇文章提到,从源代码树下载下 ...
- Mac OS X于Android Kernel下载方法
于上一篇日志中,我总结了大家提供的下载Android源代码的方法.这里再简单总结一下内核的下载方法. 參考这里的介绍:http://source.android.com/source/building ...
- 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...
- 下载 编译 Android源代码 和 Android kernel源代码
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...
- How to download and compile Android kernel goldfish ?
Prerequisites Assuming that we already downloaded the android-ndk-r12b and sdk. w4118@w4118:~/utils$ ...
- 华为手机内核代码的编译及刷入教程【通过魔改华为P9 Android Kernel 对抗反调试机制】
0x00 写在前面 攻防对立.程序调试与反调试之间的对抗是一个永恒的主题.在安卓逆向工程实践中,通过修改和编译安卓内核源码来对抗反调试是一种常见的方法.但网上关于此类的资料比较少,且都是基于AOSP ...
随机推荐
- Node+Express的跨域访问控制问题:Access-Control-Allow-Origin
问题一:项目A通过Ajax访问项目B的接口,获取json数据,项目B采用Node+Express技术栈.项目A可能遇到跨域访问控制问题. 问题二:vue-resource 能够跨域,一般使用jsonp ...
- Github 指令上手 --- 分支
指令环境 Git Shell 1.创建一个新分支 git branch branchName 2.切换到新创建的分支 git checkout branchName 1.2合起来使用指令(创建并切换) ...
- Buffer和Stream
Buffer JavaScript 语言自身只有字符串数据类型,没有二进制数据类型.但在处理像TCP流或文件流时,必须使用到二进制数据. 因此在 Node.js中,定义了一个 Buffer 类,该类用 ...
- js中用来操作字符串的相关的方法
var str = "zhufengpeixun2015yangfanqihang"; 字符串也是存在索引和length的 str.length 获取字符串的长度(字符的个数) 第 ...
- 用SQL命令手工创建CDB
1.设置环境变量 $ export ORACLE_SID=ora12c $ export ORACLE_HOME=/home/oracle/product/12.1.0/db1 $ export ...
- 通过BeanPostProcessor理解Spring中Bean的生命周期
通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProces ...
- SpringBoot鸡汤(注解集合二)
1.@NotNull :属性值不为空 2.@Profiles @Configuration @Profile("production") public class Producti ...
- Win10系列:UWP界面布局基础7
2.附加属性 有一些XAML元素,其自身的属性大多是在其它的元素中声明和使用的,该元素本身却很少使用,这些在其他元素中声明和使用的属性被称为附加属性(Attached Properties).附加属性 ...
- tomcat访问端口
问题描述:今天,访问服务器上的应用,tomcat服务器已经启动,确怎么都打不开:问题原因:原来有人改了端口.具体操作:进入tomcat的安装目录,进入conf文件夹下,找到server.xml文件.用 ...
- [POJ3378]Crazy Thairs
Problem 给你一个数列,让你求由五个元素组成的顺序对的个数. Solution DP:用DP[i][j]表示把第j个作为五元组中第i个的方案数 则DP[i][j]=sum{DP[k][j-1]} ...