应用易受 Intent 重定向问题的影响

Posted

技术标签:

【中文标题】应用易受 Intent 重定向问题的影响【英文标题】:App vulnerable to Intent Redirection issue 【发布时间】:2021-05-21 05:49:39 【问题描述】:

每当我将我的应用上传到 Play 商店时,我都会收到来自 Google 的此应用易受 Intent Redirection 问题消息。我收到此消息科学我已从设备集成 pdf 文件选择代码。这是我的文件选择代码片段:

if(Permissions.checkPermissionStorage(CompanyProfileMediaUploadActivity.this))
                    File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),brochure_nextkey+".pdf");
                    Uri pdfUri = FileProvider.getUriForFile(CompanyProfileMediaUploadActivity.this, "com.main.mccoymartbusiness.fileproviders", file);
                    intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                    intent.addCategory(Intent.CATEGORY_OPENABLE);
                    intent.setDataAndType(pdfUri, "application/pdf");
                    intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    startActivityForResult(intent, PICKFILE_RESULT_CODE);
                else
                    Permissions.requestPermissionStorage(CompanyProfileMediaUploadActivity.this);
                

这是我的 onActivityResuly 代码

if (requestCode == PICKFILE_RESULT_CODE) 

            getContentResolver().takePersistableUriPermission(
                    intent.getData(),
                    Intent.FLAG_GRANT_READ_URI_PERMISSION
            );
            InputStream iStream = null;
            byte[] inputData = null;
            try 
                iStream = getContentResolver().openInputStream(intent.getData());
                inputData = getBytes(iStream);
             catch (Exception e) 
                e.printStackTrace();
            


            uploadCompanyBrochureApi(brochure_nextkey,inputData);
        

在我的 OnActivityResult 中,我将文件转换为字节数组并从我的内部 api 将其上传到服务器上。

虽然 Google 支持团队没有提及导致此问题的任何特定代码行或类,但在集成此代码后,我经常遇到此易受攻击的问题。 这是我从谷歌得到的警告: [![在此处输入图片描述][1]][1]

请让我知道任何解决方案。提前致谢。 [1]:https://i.stack.imgur.com/If0Mq.png

【问题讨论】:

【参考方案1】:

我终于得到了这个问题的解决方案。我发现我在 libs 文件夹中使用 Cashfree SDKYouTubeAndroidPlayerApi.jar。我已经从 libs 文件夹中删除了这些,并在我的 gradles 中更新了这些行:

implementation 'com.github.davidmigloz:youtube-android-player-api-gradle:1.2.2.1'
implementation 'com.cashfree.pg:android-sdk:1.6.1'

maven  url 'https://maven.cashfree.com/release'

并且还更新了Facebook sdk版本。

对于隐式和显式 Intent 重定向,我还更新了我的代码并添加了 if(intent.resolveActivity(getPackageManager()) != null)if (name.getPackageName().equals(name.getPackageName())&&name.getClassName().equals(name.getClassName())) 检查。

谢谢。

【讨论】:

以上是关于应用易受 Intent 重定向问题的影响的主要内容,如果未能解决你的问题,请参考以下文章

来自 Google Play 的意图重定向

Android FileProvider特性与Intent重定向漏洞

Android FileProvider特性与Intent重定向漏洞

Android FileProvider特性与Intent重定向漏洞

我应该为这个重定向标头 301,谷歌索引将如何受到影响?

React Native(Intent Redirection 修复):啥相当于 getCallingActivity() 来检查恶意重定向?