大家好,欢迎来到IT知识分享网。
本文对安卓系统的一个任务栈劫持漏洞进行了分析,旨在提醒区块链行业内的App开发者结合自身业务特点,注意防范,确保用户的移动安全
事件概述
近期,挪威一家安全公司(Promon)披露了一个 Android 任务栈劫持漏洞,并使用描述维京海盗突袭战术中的单词 StrandHogg 对其命名。该漏洞在捷克共和国攻击者已利用其盗走多家银行用户的卡内余额(这包括 2017 年发现的 BankBot 银行木马变种)从而引发东欧金融机构安全服务商的多方求助。虽然 Google 已采取缓解措施暂停了受影响应用程序的安装,但到目前为止任何版本的 Android(包括 Android10)都还没有修复该漏洞。
该漏洞使恶意应用程序有可能在伪装成合法应用程序的同时请求权限,包括 SMS、照片、麦克风和 GPS 等从而允许攻击者访问短信和通讯录、查看相册、进行窃听和跟踪受害者位置等活动。
漏洞分析
StrandHogg 是一个存在于 Android 多任务系统中的应用漏洞,此漏洞利用 App 清单文件 AndroidManifest.xml 中一个名为android:taskAffinity 的属性设置。
android:taskAffinity 属性官方定义:
与 Activity 有着相似性的任务。从概念上讲,具有同一相似性的 Activity 归属同一任务(从用户的角度来看,则是归属同一“应用”)。任务的相似性由其根 Activity 的相似性确定。
相似性确定两点内容 — Activity 更改父项后的任务(请参阅 allowTaskReparenting 属性),以及通过 FLAG_ACTIVITY_NEW_TASK 标记启动 Activity 时,用于容纳该 Activity 的任务。
默认情况下,应用中的所有 Activity 都具有同一相似性。您可以设置该属性,以不同方式将其分组,甚至可以在同一任务内放置不同应用中定义的 Activity。如要指定 Activity 与任何任务均无相似性,请将其设置为空字符串。
如果未设置该属性,则 Activity 会继承为应用设置的相似性。应用默认相似性的名称为 元素所设置的软件包名称。
该属性标识着一个 Activity 所运行的任务栈名称。默认情况下,一个应用中所有 Activity 运行的任务栈名称都为该应用的包名。恶意应用程序可以通过设置该属性标识为受害者应用的包名,并配合使用 android:allowTaskReparenting=”true”将恶意活动置于目标任务栈的内部或顶部,当用户点击受害者应用图标时恶意程序会伪装成正常应用程序的界面迷惑用户进行界面劫持攻击。
对区块链App的影响
基于该漏洞,攻击者可能实施钓鱼式攻击,如伪装成交易所App,在发现正常的App启动时,率先进入任务栈启动伪装的登录界面,从而窃取用户的账号和密码。
缓解措施
开发者只需要在 App 清单文件中将 android:taskAffinity=”” 属性设置为空即可防御此攻击。
(作者:北京链安,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/41809.html