利用checkCallingOrSelfPermission()进行权限提升攻击

sau*_*rav 8 android android-permissions

我在Context类中经历了checkCallingOrSelfPermission(),并想知道它是如何被利用的; 即,如果某个应用程序触发callee /您的应用程序的方法,该方法又调用checkCallingOrSelfPermission(),最后将该权限授予其他应用程序,或者发布否则需要该权限的敏感信息.

这是我通过Java Doc后所理解的:

此方法只能由处于被调用者应用程序的同一进程中的任何调用应用程序利用.要进入相同的过程,除了同样的证书签名之外,应用程序还需要在清单文件中具有相同的shareuserid和进程.

因此调用应用程序需要执行以下操作.

  1. 必须知道callee应用程序正在运行的进程和shareuser id.(我不确定这有多可行?)

  2. 必须使用与被调用者应用程序签名相同的证书进行签名(不太可能假设证书保持安全).

这是checkCallingOrSelfPermission()文档警告的利用方法,还是其他(更现实的)方法可以被利用.

我也检查了这篇文章,但答案并不令人满意.

Swi*_*ing 0

一切都在代码中。

checkCallingOrSelfPermission() 在 IPC 调用中是安全的。在此处checkCallingOrSelfPermission()查看和的实现。它们都检查 IPC 客户端/调用者的权限。当打电话的人是从外面来的时候,他们是一模一样的!checkCallingPermission()

如果调用者来自内部(同一进程),那么,如果有人可以在您的进程内执行代码,那么它就已经被利用了。无需再次利用checkCallingOrSelfPermission()