Android 安全攻防(二): SEAndroid bionic

转自:http://blog.csdn.net/yiyaaixuexi/article/details/8490886

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 :

[cpp] view plain copy print ?
  1. int fsetxattr(int,const char *,const void *,size_t, int)
  2. ssize_t fgetxattr(int, constchar *, void *,size_t)
  3. ssize_t flistxattr(int,char *, size_t)
  4. int fremovexattr(int,const char *)
  5. int setxattr(constchar *, constchar *, constvoid *, size_t,int)
  6. int lsetxattr(constchar *, constchar *, constvoid *, size_t,int)
  7. ssize_t getxattr(const char *, constchar *, void *,size_t)
  8. ssize_t lgetxattr(const char *,const char *,void *, size_t)
  9. ssize_t listxattr(const char *, char *,size_t)
  10. ssize_t llistxattr(const char *,char *, size_t)
  11. int removexattr(constchar *, constchar *)
  12. int lremovexattr(constchar *, constchar *)


2.linker增加AT_SECURE

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

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



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

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




更多相关文章

  1. Hierarchy Viewer 帮你分析应用程序UI布局
  2. Android(安卓)Launcher全面剖析
  3. android基础
  4. Android(安卓)activity属性设置大全
  5. Android的应用程序框架
  6. Android开发者必备的十个工具
  7. Android: Android(安卓)Architecture
  8. Android(安卓)应用程序的结构
  9. Android应用程序的调试方法

随机推荐

  1. Android中实现循环滚动
  2. Android图形库Skia(一)-基本测试生成PNG图
  3. 基于Android客户端的人人网开放平台开发
  4. Android(安卓)中Notification的运用
  5. Android常见知识点
  6. Android(安卓)Apache Commons工具库依赖
  7. Android(安卓)与 MVC
  8. Android(安卓)3.0 访问WebService 出现 a
  9. Android(安卓)px和dip及sp的区别及转换代
  10. 设置TextView文字居中