引言
“黑灰产行为”,通常指用借助非法或不道德的技术手段进行各种违法违规活动。网络黑灰产业的蔓延不仅扭曲了正常的商业竞争环境,还严重侵犯了用户的隐私权益,甚至可能导致各类社会负面问题出现(参考GEEKCON2023年度"鲱鱼奖")。
移动端操作系统iOS以及原生Android,在Apple和Google的多年安全努力下,在对抗黑灰产方面取得了巨大的进步,特别是以iOS代表的Apple生态安全水平尤为突出。HarmonyOS NEXT(Developer Preview2,或称鸿蒙星河版、纯血鸿蒙)意图打造一个全新操作系统生态,从而也带来一个杜绝黑灰产行为、打造良好应用生态的绝佳机会。
做为消费者,我们自然而然希望知道哪一台手机更能防止我们的隐私信息被黑灰产获取,本文为多移动平台安全对抗AVSS研报第二篇(上篇内核篇参见🔗链接),以尝试获得答案。
以下内容摘取AVSS报告中原生Android及HarmonyOS NEXT技术分析部分。
AVSS报告
本报告由 DARKNAVY 基于AVSS理念,以黑灰产对抗攻击视角,从移动端操作系统应用态安全对抗的五个阶段:1. 欺骗用户安装;2. 干扰用户体验;3. 获取隐私数据;4. 攻击其他应用;5. 窃取应用数据,对如下设备系统进行对抗评估:
根据攻击视角,评测维度覆盖如下五大项及数十项细粒度对抗能力:1. 应用安装管控能力;2. 运行时管控能力;3. 隐私数据管理能力;4. 默认安全;5. 系统使能,相关图示及说明如下:
AVSS结论
HarmonyOS NEXT在隐私数据管理能力、默认安全和系统使能能力之上,表现上与原生Android接近或相当;
HarmonyOS NEXT在应用安装管控能力和运行时管控能力指数上,相比原生Android有明显提升。
从图中可以看出,HarmonyOS NEXT的各个维度指数均不比原生Android逊色,这主要是HarmonyOS NEXT强化后的安全机制的贡献。
图中相近的指数,不代表HarmonyOS NEXT和原生Android采用了相近的安全机制,而是指具有相近的整体效果。HarmonyOS NEXT在具体的测评项上并非全面碾压原生Android,仍有小瑕疵,但瑕不掩瑜,后文会从测评项中选取一些典型具体分析HarmonyOS NEXT的优势与不足。
AVSS综述
HarmonyOS NEXT与原生Android相比的一个巨大差异就是其极为严格的应用安装管控。
原生Android的应用安装给了用户相当的自由度,允许用户安装未知来源的应用,而HarmonyOS NEXT则是不给一丝机会,在常规使用下(非开发者模式)不允许任何形式的应用侧载,即使是开发者模式也需要经过签名校验才可以安装。这意味着普通用户安装的应用仅能通过应用市场获取,结合应用市场严苛的审核制和实名制,能有效地杜绝此前原生Android上常见的套壳诈骗APP、高仿APP、重签名APP等问题。
HarmonyOS NEXT内核中内置了XPM(eXecutable Permission Manager)模块,该模块确保了强制代码签名机制,应用仅可加载含合法签名的代码。在应用安装之后,可执行文件(.abc和.so)无法被随意修改,否则将会被拒绝映射为可执行内存。同时还存在代码完整性保护,阻止应用篡改可执行代码。此机制极大地遏制了黑灰产常用的通过动态加载绕过应用市场审查、执行恶意代码的方式。
Ref: https://gitee.com/openharmony/
除了渠道和签名条件严格以外,HarmonyOS NEXT还对应用的权限范围做了限制。
在HarmonyOS NEXT中,应用权限分为三个级别,依次是normal、system_basic、system_core,应用只可申请其对应级别的权限。部分system_basic权限可以通过应用市场ACL使能让normal级别的应用跨级申请,system_core权限则仅对系统应用开放。
在原生Android上有些黑灰产应用会欺骗用户授予其高危权限,但是在HarmonyOS NEXT上绝大多数应用只能使用normal级别的权限,少数拥有ACL使能权限的应用也都是经过应用市场审核的。HarmonyOS NEXT还对无图标应用实施了严格管控,隐藏应用图标也属于特权,普通应用无法获取,不像原生Android上默认配置是无图标。
HarmonyOS NEXT的运行时权限管控基于其Access Token机制实现,这是一个内核层面支持的基于token的访问控制方案。
此方案优势之一在于实现了更细颗粒度的权限控制,它首先将token type分成hap、native、shell等几个类别,分离了系统程序和APP的权限管理;其次同一个应用在不同的子用户下和不同的应用分身下会有不同的access token,token中包含了应用 ID、子用户 ID、应用分身索引、应用APL、授权状态等信息,有助于系统实现更为细致的鉴权。
在原生Android上最常见的黑灰产行为之一是隐秘保活,为此恶意开发者们费尽心机,双进程守护、前台Service、无障碍服务、1像素页面、拉活联盟等方案层出不穷。
在HarmonyOS NEXT上,有一个未在OpenHarmony开源的suspend manager负责APP运行状态的感知和调度,它会注册APP生命周期和一些系统事件的监听。当APP切换到后台10s后,会被suspend manager冻结,并撤销之前授予的临时权限,例如通过安全控件获取的临时定位权限;如果APP未注册长时任务就尝试在后台进行播放音频之类的操作,则会被suspend manager杀掉进程(如下图所示)。
此外,HarmonyOS NEXT只允许普通应用在前台状态下启动其它ability,也对一些长时服务做好了用户感知,且每个运行中的非特权ability都会在最近任务列表中显示,结合多手段共同治理隐秘保活行为。
在原生Android上另一个常见的黑灰产行为是BAL (Background Activity Launching),经过数个大版本的改进才几近灭绝,HarmonyOS NEXT在诞生之初就对后台应用做了更严格的管控,它不像原生Android上有赦免策略,而是只要非特权APP的进程不处于前台状态,就无法成功startAbility。
HarmonyOS NEXT对应用权限动态申请也做了更严格的管控。
普通应用可以申请的normal级别权限分为system_grant和user_grant,后者不仅需要在安装包中申请权限,还需要在应用动态运行时通过发送弹窗的方式请求用户授权,部分较为敏感的权限也只允许用户在系统设置中主动授予而无法弹窗申请。在原生Android上有些应用在用户拒绝后仍会多次弹窗向用户申请权限,严重影响使用体验,而在HarmonyOS NEXT上应用只有一次申请机会,一旦被拒绝只能引导用户到系统设置中主动授予。
HarmonyOS NEXT的隐私权限划分颗粒度更细。
以定位权限为例,在HarmonyOS NEXT中共有三种权限:前台模糊位置权限(ohos.permission.APPROXIMATELY_LOCATION)、前台精确位置权限(ohos.permission.LOCATION)和后台定位权限(ohos.permission.LOCATION_IN_BACKGROUND),实际上通过位置安全控件获取的临时定位权限也可以另外算作一种。隐私权限的细颗粒度有助于隐私权限最小化原则的落实,让用户对申请过多权限的可疑应用保持警惕。
HarmonyOS NEXT在隐私权限的用户感知上和原生Android类似,APP每一次使用隐私权限都会被系统记录,用户可以在系统设置中查看隐私使用情况。在有应用进行拍摄或录音等操作时,系统UI的状态栏也会显示图标提醒用户,不过有一个值得改进的小不足:状态栏下拉后没有显示是哪个APP正在使用隐私权限。
HarmonyOS NEXT在隐私权限使用上有一创新性的设计——安全控件。安全控件实现了单次的临时权限请求和授予,获得的临时权限只有一次使用机会,位置和剪贴板的临时权限会持续到灭屏、应用进入后台、应用退出等情况发生,在时间尺度上实现隐私权限最小化原则。
安全控件对开发者和用户都提供了便利,开发者无需检查权限状态并动态申请权限,用户免受权限申请弹窗的干扰且不必手动撤销权限。在安全控件服务的具体实现中,有一个黑名单机制,只要应用有一次异常使用安全控件被发现,就会进入黑名单,之后即使是正常使用安全控件也会被拒绝。
HarmonyOS NEXT的WebView版本和补丁管理策略得当。
HarmonyOS NEXT的WebView基于一个较新的CEF(Chromium Embedded Framework)版本构建,及时引入安全补丁更新,但延迟引入功能性更新,这种策略比起滚动更新保持最新版本有更好的安全保障。
原生Android上有应用沙箱机制,通过UID DAC和SELinux MAC分离系统和各个应用,HarmonyOS NEXT更进了一步,其应用沙箱机制会对每个应用在/mnt/sandbox/目录中映射专属的“应用沙箱目录”,应用仅能访问此”目录“,此机制把应用可见的文件限制在最小范围,避免数据被恶意路径穿越访问。
原生Android上有两个数据存储位置:一个是凭据加密存储空间,仅在用户解锁设备后可用;另一个是设备加密存储空间,在Direct Boot模式下和用户解锁设备后均可使用。
HarmonyOS NEXT上的对应功能是加密分区,其EL1和EL2加密等级分别对应以上两个存储空间,在此基础上HarmonyOS NEXT新增了两个加密等级EL3和EL4,主要区别是:EL3在锁屏状态下只能读写已打开文件或创建并写文件,EL4在锁屏状态下不可创建文件且只有FEB 2.0可读写已打开文件。HarmonyOS NEXT开发者可以根据不同场景的需求合理使用不同级别的加密分区,进一步保护应用数据的安全。
HarmonyOS NEXT相比原生Android有一个独特的安全功能——代码保护。
根据HarmonyOS NEXT文档,系统提供了端到端的应用代码保护机制,该机制以系统安全为基础,构建内核级应用生命周期内的代码安全保护能力。此机制可以让应用程序从应用市场下载到安装文件落盘再到运行之前的这一段窗口期内全程保持加密状态,解密后的明文只会存在于运行时的内存中。这一机制的实现可以消除开发者的安全顾虑,避免了应用加壳等方案可能导致的流畅度下降,而且开发者往应用市场提交的非加壳安装包有助于审核制的落实,两全其美。
结语及预告
漏洞永远无法完全消除,不存在绝对安全的系统。
DARKNAVY研究过程中,基于DAF(DarkNavy Adversarial Framework )对抗框架,也发现目前的HarmonyOS NEXT在其安全设计的实现上也依然存在一些瑕疵,并且可以基于这些缺陷依然可以实现一些黑灰产行为,例如无需任何权限且用户无感知的应用后台保活防杀方案、后台弹窗方案、设备唯一ID获取方案、安全控件点击欺骗方案等等,以下为若干实例:
不停拉起的APP演示 for HarmonyOS NEXT
杀不死的APP演示 for HarmonyOS NEXT
总体而言,HarmonyOS NEXT在多个方面的安全设计都迈出了创新的一步,但是配套的UI、工具、文档成熟度不足,需要后续跟进。这些不足对一个新生的系统来说很正常,而HarmonyOS NEXT在起步之初就有了如此优异的基础,未来可期。
在研究和评测过程中,DARKNAVY还开发了HarmonyOS NEXT原生应用的反编译器,辅助鸿蒙原生应用的逆向分析,后续将对外开放。