Android 安全攻防(二):SEAndroid bionic


最近研究SEAndroid,会陆续对各个模块做对比分析,学习移植SELinux至Android,学习程序管控策略。

bionic 作为第一个分析的模块,在此之前,先简单叙述一下SEAndroid,便于后续理解。


SEAndroid 与 Android 的区别


一句话概括:SEAndroid = SElinux + Android , 通过MAC的方式管控应用程序,从而提升原生Android系统的安全性。

Android 安全攻防(二): SEAndroid bionic_第1张图片





SEAndroid 如何管控程序


一句话概括:程序向SEAndroid(确切的说是SELinux)发送请求,SEAndroid根据策略数据库进行策略分析,比对安全上下文,控制应用程序的资源存取。

Android 安全攻防(二): SEAndroid bionic_第2张图片




SEAndroid bionic


SEAndroid在架构和机制上与SELinux完全一样,考虑到移动设备的特点,所以移植到SEAndroid的只是SELinux的一个子集。


1.增加系统调用

对比Android,SEAndroid bionic下增加了12个 system call :

int fsetxattr(int, const char *, const void *, size_t, int)ssize_t fgetxattr(int, const char *, void *, size_t)ssize_t flistxattr(int, char *, size_t)int fremovexattr(int, const char *)int setxattr(const char *, const char *, const void *, size_t, int)int lsetxattr(const char *, const char *, const void *, size_t, int)ssize_t getxattr(const char *, const char *, void *, size_t)ssize_t lgetxattr(const char *, const char *, void *, size_t)ssize_t listxattr(const char *, char *, size_t)ssize_t llistxattr(const char *, char *, size_t)int removexattr(const char *, const char *)int lremovexattr(const char *, const char *)


2.linker增加AT_SECURE

SELinux为加载的应用程序设置AT_SECUREauxv 标志,具体在bionic/linker/linker.c:

/* Initialize environment functions, and get to the ELF aux vectors table */vecs = linker_env_init(vecs);/* Check auxv for AT_SECURE first to see if program is setuid, setgid,has file caps, or caused a SELinux/AppArmor domain transition. */for (v = vecs; v[0]; v += 2) {    if (v[0] == AT_SECURE) {    /* kernel told us whether to enable secure mode */        program_is_setuid = v[1];        goto sanitize;    }}/* Kernel did not provide AT_SECURE - fall back on legacy test. */program_is_setuid = (getuid() != geteuid()) || (getgid() != getegid());



综上所述,bionic差异并不大,主要是AT_SECURE的加入, SELinux水很深,推荐鸟哥的文章一读:

鳥哥的 Linux 私房菜-第十七章、程序管理與 SELinux 初探





更多相关文章

  1. hello world 第一个android程序
  2. 《Android攻防实战》读书笔记——Android开发工具相关
  3. 使用Android adb命令来启动Android应用程序
  4. android完全退出应用程序
  5. Android 应用程序请求Vsync
  6. 近百android程序源码贡献 的自己看的
  7. 打包Android应用程序

随机推荐

  1. 学习Android(安卓)必备 实例大集合
  2. 源码解析Android中AsyncTask的工作原理
  3. 【Android游戏开发二十一】Android(安卓)
  4. Android(安卓)View 属性大全
  5. Android(安卓)SDK 2.1 下载与安装教程
  6. android 网络 post get
  7. 关于Linearlayout中控件设置为其底部的问
  8. 【Android】Android的快速开发框架Afinal
  9. Android消息处理系统
  10. Android各版本及API对应关系,持续更新!