我正在經歷Context類中的checkCallingOrSelfPermission(),並想知道它如何被利用;即某些應用程序觸發了被調用者/您的應用程序的方法,該方法又調用checkCallingOrSelfPermission(),最終向另一個應用程序授予對該權限的訪問權限,或者釋放否則會需要該權限的敏感信息。利用checkCallingOrSelfPermission()進行特權升級攻擊
這是我經歷的Java文檔後明白:
這種方法可以被任何調用應用程序它是被調用應用程序的同一過程中只利用。爲了進入相同的過程,這兩個應用程序需要在清單文件中具有相同的共享用戶標識和進程,並且還要使用相同的證書進行簽名。
所以調用的應用程序需要做以下操作。
必須知道被調用程序在哪個進程和共享用戶標識下運行。 (我不確定這是多麼可行?)
必須使用被調用者應用程序簽署的相同證書進行簽名(不太可能假設證書保持安全)。
這是剝削的checkCallingOrSelfPermission()文檔警告反對,還是有它可能被利用其它(更逼真)方式的方法。
我也檢查了this post,但答案並不令人滿意。
「此方法只能被與被調用程序相同進程中的任何調用應用程序利用」 - 在任何人都可以告訴您「exploit」是否可能之前,您需要解釋此「exploit」是什麼。 – CommonsWare 2014-10-01 11:52:04
@CommonsWare對不起,如果我不夠清楚......在頂部添加說明,以解釋剝削.. – saurav 2014-10-01 12:35:28
「如果任何應用程序調用被調用者/你的應用程序的方法,反過來調用checkcallingorselfpermission在最後訪問對其他應用程序的權限「 - 」checkCallingOrSelfPermission()'不會向任何人授予任何東西。 – CommonsWare 2014-10-01 12:51:35