本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:Android O中的Seccomp过滤器

时间:2017-08-12 22:21来源:本港台直播 作者:www.wzatv.cc 点击:
文 / Google Android 安全工程师 Paul Lawrence 在运行 Android 的设备中,强制执行 Android 安全模型的重任交给内核处理。由于安全团队已加固 Android 用户空间,隔离进程并削弱进程的权限,因

文 / Google Android 安全工程师 Paul Lawrence

在运行 Android 的设备中,强制执行 Android 安全模型的重任交给内核处理。由于安全团队已加固 Android 用户空间,隔离进程并削弱进程的权限,atv,因此,越来越多的安全攻击将其焦点转到内核上。系统调用是攻击者攻击内核的常用方式之一。

所有 Android 软件都使用系统调用(简称为 syscall)与 Linux 内核进行通信。内核提供许多特定于设备和 SOC 的系统调用,让用户空间进程(包括应用)可以直接与内核进行交互。所有应用都依靠这一机制,通过唯一的系统调用来检索访问对应的行为(如打开文件或发送一条 Binder 消息)。不过,其中许多系统调用 Android 未予使用或未予正式支持。

Android O 利用一个名为 seccomp 的 Linux 功能,它可使应用软件无法访问未使用的系统调用。由于应用无法访问这些系统调用,因此,它们不会被潜在的有害应用利用。

seccomp 过滤器

Android O 包含一个 seccomp 过滤器,atv,该过滤器已安装到 zygote 进程中,所有 Android 应用均衍生自该进程。由于此过滤器已安装到 zygote,因而会影响到所有应用,因此,Android 安全团队采取了额外的措施,以防止破坏现有应用。seccomp 过滤器允许:

通过 bionic(用于 Android 的 C 运行时)显示所有系统调用。这些系统调用是在 bionic/libc/SYSCALLS.TXT 中定义的。

支持 Android 启动的系统调用。

常用 Android 应用使用的系统调用,通过运行 Google 的完整应用兼容性套件确定。

Android O 的 seccomp 过滤器会阻止某些系统调用,如 swapon/swapoff(已被卷入一些安全攻击)和关键控制系统调用(对应用没有作用)。此过滤器在 arm64 中共阻止了 271 个系统调用中的 17 个,在 arm 中共阻止了 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 5503-09 16:39:32.127 15107 15107 F DEBUG : r0 00000091 r1 00000007 r2 ccd8c008 r3 0000000103-09 16:39:32.127 15107 15107 F DEBUG : r4 00000000 r5 00000000 r6 00000000 r7 00000037

受影响的开发者应改写他们的应用,使其不会调用非法系统调用。

在测试期间切换 seccomp 过滤器

除记录错误外,seccomp 安装程序在运行 userdebug 和 eng builds 的设备上遵守 setenforce,这让您可以测试 seccomp 是否引发了某个问题。如果您输入:

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

则不会将任何 seccomp 策略安装到 zygote。由于您无法从一个正在运行的进程中移除 seccomp 策略,因此,您必须重新启动 shell 以使该选项生效。

设备制造商

由于 Android O 在 //bionic/libc/seccomp 包含相关 seccomp 过滤器,因此,设备制造商无需进行任何额外的实现。不过,在 //cts/tests/tests/security/jni/android_security_cts_SeccompTest.cpp 中有一个检查 seccomp 的 CTS 测试。此测试检查是否已阻止 add_key 和 keyctl 系统调用、是否已允许 openat 以及是否存在某些特定于应用的系统调用(为实现兼容性,必须有这些系统调用)。返回搜狐,查看更多

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容