freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Android StrandHogg 漏洞剖析
2019-12-11 16:42:15

Android StrandHogg 漏洞剖析

事件概述

近期,挪威一家安全公司(Promon)披露了一个 Android 任务栈劫持漏洞,并使用描述维京海盗突袭战术中的单词 StrandHogg 对其命名。该漏洞在捷克共和国攻击者已利用其盗走多家银行用户的卡内余额(这包括 2017 年发现的 BankBot 银行木马变种)从而引发东欧金融机构安全服务商的多方求助。虽然 Google 已采取缓解措施暂停了受影响应用程序的安装,但到目前为止任何版本的 Android(包括 Android10)都还没有修复该漏洞。

StrandHogg-Permission-Harvesting.jpgStrandHogg-Phishing.jpg


该漏洞使恶意应用程序有可能在伪装成合法应用程序的同时请求权限,包括 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 会继承为应用设置的相似性。应用默认相似性的名称为 <manifest> 元素所设置的软件包名称。

该属性标识着一个 Activity 所运行的任务栈名称。默认情况下,一个应用中所有 Activity 运行的任务栈名称都为该应用的包名。恶意应用程序可以通过设置该属性标识为受害者应用的包名,并配合使用 android:allowTaskReparenting="true" 将恶意活动置于目标任务栈的内部或顶部,当用户点击受害者应用图标时恶意程序会伪装成正常应用程序的界面迷惑用户进行界面劫持攻击。

20191207140649.jpg

20191207140741.jpg

缓解措施

开发者只需要在 App 清单文件中将 android:taskAffinity="" 属性设置为空即可防御此攻击。

参考


# StrandHogg
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者