Android O 的 Seccomp 过滤器

发布于 2024-10-31 12:49:05 字数 2659 浏览 11 评论 0

对于 Android 系统的设备中,内核执行 Android 安全模式非常重要。由于安全团队已经努力加强 Android 的用户空间并隔离和剥夺进程,内核已成为更多安全攻击的焦点。系统调用是攻击者定位内核的常用方式。

所有 Android 软件使用系统调用或简单的系统调用与 Linux 内核通信。内核提供许多设备和 SOC 特定的系统调用,允许用户空间进程(包括应用程序)直接与内核交互。所有应用程序依赖此机制来访问由唯一系统调用所索引的行为集合,例如打开文件或发送 Binder 消息。然而,许多这些系统调用没有被 Android 使用或正式支持。

Android O 利用称为 seccomp 的 Linux 功能,使得未使用的系统调用无法应用于应用软件。由于这些系统调用不能被应用程序访问,因此无法被潜在的有害应用程序利用。

seccomp 过滤器

Android O 包含一个安装在 zygote 中的单个 seccomp 过滤器,从该应用程序的派生过程。由于过滤器已被安装到合适的应用程序中,因此安装了所有应用程序,Android 安全小组特别小心不破坏现有的应用程序。seccomp 过滤器允许:

  • 所有通过仿生体系显示的系统调用(Android 的 C 运行时)。这些在 bionic / libc / SYSCALLS.TXT 中定义。
  • 系统调用允许 Android 引导
  • 系统调用由流行的 Android 应用程序使用,由运行 Google 的完整应用程序兼容性套件确定

Android O 的 seccomp 过滤器阻止某些系统调用(例如 swapon / swapoff),这些系统调用已经涉及一些安全攻击,以及按键控制系统调用,这对应用程序无用。总的来说,arm64 中的 271 个系统调用的过滤器块 17 和臂中的 364 个的 70 个。

开发商

在运行 Android O 的设备上测试你的应用程序中的非法系统调用。

检测非法系统调用

在 Android O 中,系统崩溃了使用非法系统调用的应用程序。日志打印显示非法的系统调用,例如:

03-09 16:39:32.122 15107 15107 I crash_dump32: performing dump of process 14942 (target tid = 14971)
03-09 16:39:32.127 15107 15107 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-09 16:39:32.127 15107 15107 F DEBUG   : Build fingerprint: 'google/sailfish/sailfish:O/OPP1.170223.013/3795621:userdebug/dev-keys'
03-09 16:39:32.127 15107 15107 F DEBUG   : Revision: '0'
03-09 16:39:32.127 15107 15107 F DEBUG   : ABI: 'arm'
03-09 16:39:32.127 15107 15107 F DEBUG   : pid: 14942, tid: 14971, name: WorkHandler  >>> com.redacted <<<
03-09 16:39:32.127 15107 15107 F DEBUG   : signal 31 (SIGSYS), code 1 (SYS_SECCOMP), fault addr --------
03-09 16:39:32.127 15107 15107 F DEBUG   : Cause: seccomp prevented call to disallowed system call 55
03-09 16:39:32.127 15107 15107 F DEBUG   :     r0 00000091  r1 00000007  r2 ccd8c008  r3 00000001
03-09 16:39:32.127 15107 15107 F DEBUG   :     r4 00000000  r5 00000000  r6 00000000  r7 00000037

受影响的开发者应该重新调整他们的应用程序,不要调用非法的系统调用。

在测试期间切换 seccomp 过滤器

除了记录错误之外,seccomp 安装程序在运行 userdebug 和 eng 构建的设备上遵守 setenforce,这允许你测试 seccomp 是否对问题负责。如果输入:

adb shell setenforce 0 && adb stop && adb start

那么没有安全策略将被安装到合并。因为无法从正在运行的进程中删除一个 seccomp 策略,所以必须重新启动 shell 才能使此选项生效。

设备制造商

由于 Android O 包含相关的 seccomp 过滤器,在 //bionic/libc/seccomp ​,因此设备制造商无需执行任何其他操作。但是,有一个 CTS 测试检查 seccomp 在 //cts/tests/tests/security/jni/android_security_cts_SeccompTest.cpp ​。测试检查 add_key 和 keyctl 系统调用被阻止并被 openat 允许,以及必须存在的一些应用程序特定的系统调用以兼容。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

忆梦

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

lixs

文章 0 评论 0

敷衍 

文章 0 评论 0

盗梦空间

文章 0 评论 0

tian

文章 0 评论 0

13375331123

文章 0 评论 0

你对谁都笑

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文