SHARE THE PERSPECTIVE
无障碍功能对用户至关重要;风险来自无理由地授予权限以及滥用这些权限。

恶意软件并不总需要破解消息加密。如果它能访问设备为显示或输入而处理的数据,就可能在加密前或解密后看到内容。滥用无障碍功能和悬浮窗口是两个例子,但它们的机制并不相同。

此外,并非所有具有 Accessibility 权限或悬浮窗口的应用都是恶意软件。屏幕阅读器和辅助工具对许多用户至关重要。目标是知情地授予权限并减少滥用,而不是取消无障碍功能。

不应混淆的三种威胁

方式 攻击者做什么? 不应作出什么假设?
虚假窗口或表单 诱导用户在仿冒原应用的界面中输入信息 并非每个 Overlay 都能自动读取下层窗口的文本
点击劫持或 Tapjacking 欺骗用户触碰另一个控件 存在透明层并不意味着能记录所有按键
滥用 Accessibility 服务 利用服务获准的能力来观察或执行操作 并非所有版本中对所有视图的访问能力都相同

官方 Tapjacking 指南区分了界面被完全遮挡和部分遮挡的情况。窗口类型、Android 版本和应用设置都会影响结果。

Accessibility 如何接触敏感数据?

无障碍服务可以在自身能力范围内获取界面信息,或代用户执行操作。恶意服务可能滥用同样的能力。因此,为没有明确理由的应用启用这项服务,并不是无关紧要的决定。

但“任何服务都能读取任何应用的全部文本”这一说法过于绝对。视图结构、数据呈现方式和操作系统限制都很重要。Android 为敏感视图提供了 accessibilityDataSensitive 等功能;其使用与行为需要在目标版本上测试。Google 关于防止恶意服务窥探数据的说明。

FLAG_SECURE 能做什么,又不能做什么?

FLAG_SECURE 用于限制截屏以及在不安全的输出设备上显示内容。这个标志本身并不控制无障碍访问规则、虚假表单或所有文本提取途径。用另一台设备拍摄屏幕也是单独的问题。

Android 还向应用提供 HIDE_OVERLAY_WINDOWS 等工具,以减少悬浮窗口。在没有检查兼容性、版本限制以及对有无障碍需求的用户的影响之前,不应将任何一种工具称为“防间谍按钮”。保护敏感活动的指南。

用户检查权限的清单

  1. 在设备设置中,分别检查拥有无障碍、显示在其他应用上层和通知访问权限的应用。菜单路径名称因厂商和版本而异。
  2. 对每一项都问清楚:哪项具体功能需要这种访问权限?可信屏幕阅读器的权限与陌生手电筒应用的权限不能等同看待。
  3. 安装陌生文件后立即要求开启权限,应视为需要进一步检查的信号;仅仅申请权限并不能证明是恶意软件。
  4. 如果登录页面的外观可疑,不要输入敏感信息。通过自己惯用的方式打开应用,并检查地址或安装来源。
  5. 撤销不必要的权限后,测试自己需要的辅助工具是否正常工作。安全措施不应让设备对其主人变得无法使用。

如果怀疑密码或会话此前已经泄露,仅撤销权限并不足够。请用可信设备检查活跃会话和账户恢复方式,并更改存在风险的密码。

开发者应测试什么?

分别评估登录、操作确认和敏感信息展示页面。测试被遮挡的触摸和部分遮挡;仅测试截屏是不够的。然后用真正的屏幕阅读器和辅助工具检查同一流程,确保安全防御不会破坏合法访问。

测试报告应记录 Android 和应用版本、服务类型、权限,以及实际能够看到的数据。不能从有限测试推断所有设备的情况。

通信应用加密的边界

Livara 威胁模型将受感染或未锁定的设备排除在内容保护保证之外。因此,算法名称或密钥交换具备后量子特性,并不能防御所有界面滥用。应把消息路径保护、设备安全状态和权限控制视为三项独立检查。

查看 Livara Proof Lab
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗