论文总结——Android固件生态系统的大规模安全测量

介绍

这是一篇来自ICSE的论文《Large-scale Security Measurements on the Android Firmware Ecosystem》

专有名词介绍

ROM(Read Only Memory):手机存储系统的存储器。只能读,不能快速改写。可以简单认为是用来存储操作系统的。

pre-installed apps:安装在安全固件中的应用程序,系统应用在/system/app和/system/privapp文件夹中;第三方软件下载在/data/app文件中。

CPE:common platform enumeration,通用平台枚举项,它是对IT产品的统一命名规范,包括系统、平台和软件包等。

内容格式:
cpe:/<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>
参数含义
a应用程序
h硬件平台
o操作系统
vendor供应商
product产品名称
version版本号
update更新包
edition版本
language语言项

NVD:National Vulnerability Database,国家漏洞数据库

TEE:Trusted Execution Environment,可信执行环境,与其相对应的是REE(Rich Execution Environment),一般也称TEE和REE为Security World和Normal World。Android都跑在Normal World中,但一些安全性较高行为,比如指纹比对,私钥签名的动作,都在Security World中。

指纹识别:常用来作为识别设备的标志符。如ROM的指纹识别是用来作为ROM映像的标识符。

Project Treble:谷歌在Android8之后设计的框架,Treble 提供了一个稳定的新供应商接口,供设备制造商访问 Android 代码中特定于硬件的部分,这样一来,设备制造商只需更新 Android 操作系统框架,即可跳过芯片制造商直接提供新的 Android 版本.

安卓固件(firmware)

介绍

安卓固件是提供低级别的系统控制并使硬件正常工作的系统软件,固件通常存储在特定类型的内存中,成为闪存ROM。因此也可以称固件为ROM映像。固件包括引导加载程序,Linux内核,安卓运行时框架,无线电固件和各种预装程序。固件通常以标准的压缩格式发布。

ROM文件结构

ROM文件脱壳后的结构:boot.img, vendor.img, recovery.img, system.img

  1. boot.img:包括在文件系统加载之前的内核映像和ramdisk映像,用来加载设备。
  2. system.img:属于文件系统映像,提供二进制文件和配置文件来启动Android操作系统,它可以是Yaffs2格式或者是sparse映像格式。

工具设计

思想方法

  1. 使用爬虫爬取ROM映像和目标CVE数据
  2. 使用分析工具进行大规模测量,分析工具包括爬虫模块,ROM解析器,补丁分析器和应用分析器。
    在这里插入图片描述

数据集来源及工具原理

爬虫器

1. ROM映像数据集来源:
(1)官方网站
(2)通过官方支持的渠道,在合法的下载网站通过修改关键字寻找下载地址。
(3)开源的存储库Android Dumps

2. CEV数据:
(1)CVE官网中获取CVE ID,揭露时间和描述。
(2)从NVD中获得漏洞应用名字和版本的CPE信息,CPE信息的用途是将CPE信息与从ROM解析器收集的预装应用程序(如应用程序名称和版本)的元数据进行匹配,以过滤掉预装的应用程序相关的应用程序。

ROM解析器

ROM解析器用来输出脱壳的映像文件界相应的固件元数据,涉及两个关键步骤:ROM脱壳和数据提取。

1. ROM脱壳:
(1)对于加密的ROM映像,使用动态的ADB调试,从运行的系统中获取解密秘钥。
(2)对于标准格式未压缩的ROM映像,使用官方工具simg2img获得。
(3)对于使用私有的格式或压缩格式的ROM映像,首先根据文件扩展名和格式特性来识别映像文件的格式,然后使用相应的公共解析工具脱壳。

2. 数据提取:
从ROM映像的属性文件中提出元数据用于子过程分析,包括指纹识别(识别ROM映像),安卓版本,构建时间,安全补丁等级(最新安全补丁更新时间),型号和供应商数据。

内部文件包括:预安装的应用程序包和可执行二进制文件。对于内部文件使用<FileMD5,vendor,ROM fingerprint>来标识文件来源。

补丁分析器

用于对ROM样本上安全补丁的完整性和有效性验证。

通过构建时间和安全补丁级别来检查固件是否及时修复AOSP安全补丁,用构架时间-补丁时间=推迟时间,一个月以内为正常延迟。

如:ROM映像中构建时间是2019-09-13,安全补丁时间是2019-08-05,推迟时间为39天=1.3月,并进行四舍五入,为1个月。

应用分析器

用于提取预安装应用程序的识别特征和漏洞特征。分为CVE匹配模块和风险检测模块。

1. CVE匹配模块:
1)提取预安装应用的识别特征,包括包名,版本,签名和文件MD5。

2)根据识别特征对应用程序和CVE进行匹配,检查相关代码和错误配置属性来确认是否存在已知漏洞

3)结合元组:<File MD5, vendor, ROM fingerprint>去建立每个CVE的影响元组,<CVE Num, package name, version, signature, File MD5, vendor, ROM fingerprint>

4)通过比较CVE揭露的时间和ROM映像建立的时间,可以得到没有修复的CVE的映像

2. 风险检测模块:
对预安装风险的测量,由于属性配置错误和密码误用比例最大,因此选用这两部分进行测量。

1. 属性配置错误
提取的安全特征存储在 AndroidManifest.xml文件中。

(1)exported component:如果一个Activity或Severice的属性的Public并涉及重要的功能

(2)可调式属性:debuggable的属性设置为true

(3)网络安全配置属性:如果不设置网络安全属性,会受到中间人攻击

(4)允许备份功能:如果允许备份属性功能设置为true,攻击者就能拿到应用的备份数据

(5)sharedUserID:如果设置为android.uid.system属性并有可以和其他第三方应用交互的exported component,攻击者就可以在不需要root用户的情况下,通过第三方软件操作操作系统特权权限

2. 密码误用
在这里插入图片描述

测量

测量主要针对四个方面:安卓手机供应商是否及时按AOSP安全补丁进行更新,供应商的补丁声明的可靠性,预下载应用是否包含未修复的CVE,非脆弱的预下载应用是否安全。

对更新延迟的测量

对更新延迟的测量指安卓手机供应商是否及时按AOSP安全补丁进行更新。
测量思路:
总体结果 --> Top 10的 ROM相关数据 --> 从一个具体的供应商出发分析补丁推迟原因 --> 测量合作与非合作、支持和非支持设备之间的补丁延迟情况 --> 对同一供应商的不同型号纵向变化测量。

对补丁缺失的测量

测量思路:
总体结果 --> Top 10的 ROM相关数据 --> 从一个具体的供应商出发分析补丁推迟原因 --> 测量合作与非合作、支持和非支持设备之间的补丁延迟情况 --> 对同一供应商的不同型号纵向变化测量。

预下载应用是否包含未修复的CVE

测量思路:
总体结果 --> 分析原因 --> 案例分析 --> 影响范围

非脆弱的预下载应用是否安全

测量思路:
总结结果 --> 分析出现结果的原因 --> 潜在漏洞来源(根据签名识别)–> 可利用性验证 --> 例子

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值