Android 安全攻防(二):SEAndroid bionic


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

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


SEAndroid 与 Android 的区别


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






SEAndroid 如何管控程序


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





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. [原创]让android支持RTSP(live555分析)
  2. Android架构分析之Android驱动程序开发
  3. Android一日游
  4. 使用Android(安卓)adb命令来启动Android应用程序
  5. Android编译系统(四):Android(安卓)编译系统框架分析及main.mk分
  6. 每一位Android开发者应该知道的Android体系架构和开发库
  7. Android(安卓)的系统架构
  8. Android(安卓)应用程序请求Vsync
  9. android完全退出应用程序

随机推荐

  1. Android开发资源文件用法小结
  2. Android(安卓)开发常用颜色的编号代码
  3. android source code的获取及make
  4. 【IOS】实现IOS版的抽屉效果(点击,拖拽滑动
  5. android存储本地数据大全
  6. Android开关机源码分析
  7. [React Native Android(安卓)安利系列]样
  8. android shape corners 设置无效的解决
  9. Android(安卓)XML文件使用
  10. 怎样动态更换APP图标