感谢AndrewT 在聊天室上发布了一个链接,并将本研究报告作为答案之一。该答案完全基于本文(2015年5月),并强调了用户常见的可理解方面(对于感兴趣的人有很多与安全性相关的资料)
答: 这都是关于恶意软件漏洞的。使用Root漏洞利用存在巨大的安全风险,并且超过了其他任何优势
什么是软根和硬根?
恶意软件威胁-一般
即使合法,许多方便的一键式根方法也可以通过利用Android系统中的漏洞来运行。如果不仔细控制,恶意软件作者可能会滥用此类漏洞利用,以获得未经授权的root特权。
如Android Malware Genome Project中所述 , 36.7%(共1260个)恶意软件样本已嵌入至少一个根漏洞。
这些精心设计的漏洞利用得不到很好的保护,如果落入他人之手,将非常危险。
谁是主要的根提供商,从广义上讲,它是如何工作的?
根系根除有哪些类型?
该论文涵盖了78个研究过的漏洞利用。通常,影响的顺序(从最高到最低):
内核利用:由于其特权地位,针对Linux内核很自然地实现了对Android设备的完全控制,例如TowelRoot
库漏洞:针对Android系统进程使用的库的漏洞,或用于支持不同应用程序的外部库的漏洞,例如ZergRush漏洞,Volume Manager守护程序使用的libsysutils
应用程序和应用程序框架应用程序层的根漏洞:针对系统应用程序或服务的漏洞,主要包括setuid
实用程序,系统应用程序或服务引入的易受攻击的逻辑。例子是一个易受攻击的setuid
实用程序,仅存在于具有命令注入漏洞的XoomFE设备上
供应商特定的内核或驱动程序:供应商要么自定义内核(例如,Qualcomm的自定义Linux内核分支),要么为各种外设(例如摄像机,声音)提供供应商特定的设备驱动程序。这样的代码在内核空间内运行,其妥协也可能导致对设备的完全控制。
明智的做法是,如下图
动手利用Exploit(Source或Binary)有多困难?
很容易。可以从Google搜索中轻松获得,这使恶意软件作者可以利用这些漏洞轻而易举。谷歌搜索73个漏洞导致其中68个可用-46个带有源代码,22个带有二进制文件
这些漏洞如何发挥作用?
有效利用漏洞的主要要求(从最困难到最小)(恶意软件标签包含很多此类实例)
需要用户交互:(研究了78个中的6个)
- 要求用户下载应用并手动中断安装
- 要求用户至少启动一次恢复。
- 要求用户手动将设备置于“省电”模式。
- 要求用户打开供应商特定的应用程序并单击一个按钮
adb
通过PC连接需要外壳:(研究了78个中的17个)。对于某些漏洞利用,adb
由于以下最常见的原因,因此需要外壳连接:
该漏洞可以成功修改一个设置,在local.prop
该设置中adb
仅对shell 启用root 。
该漏洞需要写入由组shell和组可写(不是世界可写)拥有的文件
该漏洞利用针对adb守护进程,该进程要求攻击进程与shell用户一起运行。例如,Rage Against the Cage漏洞针对adb守护程序缺少对返回值的检查的漏洞。setuid()
重新启动:(研究了78个中的6个)通常,许多root漏洞至少需要重新启动一次。例如,符号链接攻击将允许攻击者删除权限较弱的系统所拥有的文件,并在同一位置建立指向受保护文件的链接。重新启动后,相应的初始化脚本将尝试将原始文件的权限更改为可全局写入,这实际上将更改链接文件的权限
无权限或没有权限:( 研究的78个中的44个)此漏洞没有硬性要求,但是,其中一些漏洞可能需要某些Android权限,例如READ LOGS
才能将进程所有者放入特定用户组。
防病毒软件可以检测到这些漏洞吗?
由于根漏洞利用非常敏感,并且可能会被各种Android恶意软件利用,因此,期望Android平台上的防病毒软件能够识别其中的大多数,包括由根提供商实施的那些。总体而言,结果表明,Android平台上的最新安全产品仍无法有效解决根漏洞
使用4种具有代表性的Android防病毒产品测试了具有167个漏洞的最大提供商(名称未透露)。由于最初从提供商数据库下载的漏洞利用程序打包了实际的漏洞利用代码并采用了篡改检测机制,因此研究为每种漏洞利用都设计了3个不同的版本:
直接从提供者服务器获取原始漏洞,并进行打包和篡改检测。
解压漏洞,将所有实际的漏洞逻辑暴露给防病毒产品。
重新包装漏洞利用,禁用篡改检测。
大型根提供商设计的漏洞利用二进制文件出奇地“干净”,因为所有主要的防病毒软件都很难检测到它们,如下表所示
结论
简单。除非您有能力应对后果,否则请远离软根方法