0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Android14应用安全措施

哆啦安全 来源:哆啦安全 2023-09-09 14:14 次阅读

一、前台服务类型

targetSdkVersion 34 的情况下,必须为应用内的每个前台服务(foreground-services) 指定至少一种前台服务类型。

前台服务类型是在Android10引入的,通过android:foregroundServiceType 可以指定 的服务类型,可供选择的前台服务类型有:

camera
connectedDevice
dataSync
health
location
mediaPlayback
mediaProjection
microphone
phoneCall
remoteMessaging
shortService
specialUse
systemExempted

  
二、Android14应用安全

1.对pending/implicit intent的限制

对于面向Android14的应用,Android通过以下方式限制应用向内部应用组件发送隐式intent:

(1).隐式intent仅传递给导出的组件,应用必须使用明确的intent来交付给未导出的组件,或者将组件标记为已导出(exported)。

(2).如果应用创建一个mutable pending intent,但intent未指定组件或包,系统现在会抛出异常。

这些更改可防止恶意应用拦截只供给用内部组件使用的隐式intent,例如:


如果应用尝试使用隐式intent启动该 activity,则会抛出异常:

//Throws an exception when targeting Android 14.
context.startActivity(Intent("com.example.action.APP_ACTION"))

要启动未导出的Activity,应用应改用显式Intent:

//This makes the intent explicit.
val explicitIntent =
       Intent("com.example.action.APP_ACTION")
explicitIntent.apply {
   package = context.packageName
}
context.startActivity(explicitIntent)

2.运行时注册的广播接收器必须指定导出行为

以Android14为目标,并使用context-registered

receivers(ContextCompat.registerReceiver)应用和服务的需要指定一个标志,以指示接收器是否应导出到设备上的所有其他应用:分别为RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED。

val filter = IntentFilter(APP_SPECIFIC_BROADCAST)
val listenToBroadcastsFromOtherApps = false
val receiverFlags = if (listenToBroadcastsFromOtherApps) {
   ContextCompat.RECEIVER_EXPORTED
} else {
   ContextCompat.RECEIVER_NOT_EXPORTED
}
ContextCompat.registerReceiver(context, br, filter, receiverFlags)

3.仅接收系统广播的接收器例外

如果应用仅通过Context#registerReceiver方法为系统广播注册接收器时,那么它可以不在注册接收器时指定标志,例如 android.intent.action.AIRPLANE_MODE。

4.更安全的动态代码加载

如果应用以Android14为目标平台并使用动态代码加载(DCL),则所有动态加载的文件都必须标记为只读,否则,系统会抛出异常。

建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而受到危害的风险。

如果必须动态加载代码,请使用以下方法将动态加载的文件(例如:DEX、JAR或APK文件)在文件打开后和写入任何内容之前立即设置为只读:

val jar = File("DYNAMICALLY_LOADED_FILE.jar")
val os = FileOutputStream(jar)
os.use {
   // Set the file to read-only first to prevent race conditions
   jar.setReadOnly()
   // Then write the actual file content
}
val cl = PathClassLoader(jar, parentClassLoader)

5.处理已存在的动态加载文件

为防止现有动态加载文件抛出异常,我们建议可以尝试在应用中再次动态加载文件之前,删除并重新创建这些文件。

重新创建文件时,请按照前面的指导在写入时将文件标记为只读,或者将现有文件重新标记为只读,但在这种情况下,强烈建议首先验证文件的完整性(例如,通过根据可信值检查文件的签名),以帮助保护应用免受恶意操作。

6.Zip path traversal

对于针对Android14的应用,Android通过以下方式防止Zip路径遍历漏洞

如果zip文件条目名称包含".."或以"/"开头,则ZipFile(String)和ZipInputStream.getNextEntry()会抛出一个ZipException。

应用可以通过调用dalvik.system.ZipPathValidator.clearCallback()选择退出验证。

7.从后台启动活动的附加限制

针对Android14的应用,系统进一步限制了应用在后台启动Activity的时间

(1).当应用使用PendingIntent#send()发送PendingIntent以及类似行为时,如果应用想要授予其自己的后台service启动权限以启动pending intent,则该应用现在必须选择加入一个 ActivityOptions,具体为带有

setPendingIntentBackgroundActivityStartMode(MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
(2).当一个可见应用使用bindService()绑定另一个在后台运行的应用的服务时,如果该可见应用想要将其自己的后台activity启动权限授予绑定服务,则它现在必须选择加入 BIND_ALLOW_ACTIVITY_STARTS 标志。

这些更改扩展了现有的一组限制 ,通过防止恶意应用滥用 API 从后台启动破坏性活动来保护用户。

8.Android14将禁止修改系统内置根证书

Android14不再允许开发者修改系统内置根证书进行调试,这意味着开发者无法通过诸如替换证书或中间人劫持的方式来检测某些流量。

Android系统的证书存储库位于/system/etc/security/cacerts/,尽管从Android7.0开始开发者无法直接修改证书库,但如果root了那么还可以修改证书库路径,直接注入自己需要的证书,比如自签名的泛证书。

而在Android14中,谷歌做了一项可以快速反应的安全措施:通过Google Play更新安卓系统的证书库。

这样做也不是没有原因,以前证书绑定在系统里,谷歌无法直接更新,这导致有些证书被吊销后谷歌也无法及时操作,这也导致注入Let's Encrypt 因为需要兼容旧版安卓系统,不得不推迟证书更新,因为新证书不受旧版安卓系统的信任。

后续谷歌可以随时通过Google Play更新证书库,包括加载新的ROOT CA和吊销某些ROOT CA,这让谷歌可以快速应对CA行业的某些问题。

然而问题在于这种新的更新方法不再从/system/etc/security/cacerts/读取证书,而是从另一个路径/apex/com.android.conscrypt/cacerts/读取证书。

而APEX容器背后确切的机制很难完全理解,因为存在很多细节没有公布出来,而在测试的时候开发者也发现尝试修改这个目录是没用的,系统会直接忽略修改。

因此即便注入自签名的证书也无法被系统读取,所以也没法再使用中间人之类的手段进行劫持,来达到调试某些TLS流量的目的。

好消息是Android14的这项变化有助于大幅度提高Android对CA行业的响应速度,例如快速吊销或信任证书,这将有助于提高Android设备的安全性。 ‍

坏消息就是对开发者和安全研究人员来说这就很难受了,因为无法让系统信任自签名证书,这将对调试和安全分析工作产生严重影响。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3911

    浏览量

    126990
  • 接收器
    +关注

    关注

    14

    文章

    2453

    浏览量

    71736
  • 谷歌
    +关注

    关注

    27

    文章

    6126

    浏览量

    104873
  • 广播
    +关注

    关注

    1

    文章

    305

    浏览量

    23011

原文标题:Android14或更高版本(安全措施)

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电子发烧友网站新上线账号安全措施:异地登陆检测提醒

    论坛在被各种攻击折磨,最近新上线一项账号安全措施:1.异地登陆检测提醒,根据大家登录是否跨省做异地登录提示,需要验证后才可以登录成功。2.验证页面,用户只需要将自己绑定的邮箱或手机号完整填写即可完成
    发表于 06-15 18:24

    嵌入式系统的安全性问题是什么?有什么安全措施吗?

    嵌入式系统的安全性问题是什么?有什么安全措施吗?
    发表于 04-28 06:54

    NTAG 424 DNA复制更改后的值本身并将其放在不同的标签中不会损害安全措施吗?

    我正在考虑为我的产品使用身份验证标签,例如 NTAG 424 DNA 芯片,我对其防止复制的能力有疑问,我想创建一个安全的解决方案,但我担心NTAG 424 DNA 芯片生成的 URL。我听说由于安全措施,每次执行读取操作时值都会改变。但是,复制更改后的值本身并将其放在不
    发表于 03-30 09:00

    不停电作业,安全措施要保证

    不停电作业,安全措施要保证    变电所低压带电作业,一要求开工作票,完成保证安全的组织措施;二要求穿戴好防护用品,使用绝彖工具,站在绝彖
    发表于 04-17 12:25 1705次阅读

    如何采取安全措施防止物联网攻击影响您的数据

    这些年来,随着越来越多的用户选择联网的小工具和电器,物联网设备在市场上迅速激增。为了满足用户日益增长的需求,制造商们正在将他们的设备送出仓库,而没有采取适当的安全措施。 缺乏安全措施是物联网
    发表于 06-03 16:19 949次阅读

    物联网数量增加 安全措施需得加强

    如今,全球各地应用的物联网设备已经达到数十亿台,并且数量每年都在大量增加。不幸的是,正在开发和部署的许多物联网设备却缺乏关键的安全功能,这使得它们很容易成为黑客和僵尸网络的目标。如果没有适当的安全措施,这些物联网设备可能会导致灾难性事件。
    发表于 03-20 15:48 484次阅读

    3D打印机助力生物特征识别安全措施

    指纹识别曾被认为是保护电脑、笔记本电脑和移动设备的终极安全措施
    的头像 发表于 04-13 15:36 3418次阅读

    电池的安全性问题有哪些安全措施

    ,还可能造成火灾、爆炸等安全事故。因此,电池的安全性问题必须得到重视。   针对电池的安全性问题,研究人员提出了很多安全措施。其中,最常用的安全措施
    的头像 发表于 02-24 16:54 2452次阅读

    Testin云测开发者云测试平台国内首发Android14

    近日,谷歌发布了 Android 14 的首个开发者预览版(Android 14 Developer Preview 1),和以往版本一样,Andr
    的头像 发表于 03-10 15:02 1515次阅读

    低压配电柜的检修安全措施和注意事项

      低压配电柜的检修安全措施需要从多个方面做好,避免因疏忽大意而引起安全事故。工作人员需要提高安全意识,执行详尽的检修操作规程,关注低压配电柜检修期间的安全情况和操作过程中的细节,从而
    发表于 04-13 14:58 5626次阅读

    手持回路电阻测试仪接线方法与安全措施

    木森电气手持回路电阻测试仪推出以来,受到广大电力用户的欢迎,一年多的广泛应用获得好评,电站B超在此分享手持回路电阻测试仪接线图与安全措施,尤其是手持回路电阻测试仪安全措施,简单易操作。
    的头像 发表于 11-18 15:21 1349次阅读
    手持回路电阻测试仪接线方法与<b class='flag-5'>安全措施</b>

    电容放电前安全措施

    电容放电前安全措施  电容放电前的安全措施是十分必要的,因为电容能够存储大量的电荷,电容内的电荷释放可能会引起电击、火灾等安全隐患。因此在进行电容放电之前,需要采取一系列安全措施来确保
    的头像 发表于 09-08 11:35 1718次阅读

    smt加工焊接时需要注意几点安全措施

    一般在smt加工中,手工焊接是最常见的,但是焊接过程中要注意一些安全措施,才能更有效率的工作。
    的头像 发表于 09-15 09:14 987次阅读

    谷歌发布Android14 将源代码推送到AOSP(Android开源项目)

    2023 年 2 月发布的第一个 Android 14 开发者预览版 中引入的,其中包括性能改进、更好的隐私和安全性以及其他用户端自定义选项。 自首届 Android
    的头像 发表于 10-12 15:56 991次阅读

    DC电源模块的保护与安全措施

    BOSHIDA   DC电源模块的保护与安全措施 BOSHIDA   DC电源模块的保护与安全措施包括以下几个方面:  DC电源模块的保护与安全措施 1. 过流保护:在电源输出端加入过流保护电路,当
    的头像 发表于 02-19 13:27 549次阅读
    DC电源模块的保护与<b class='flag-5'>安全措施</b>