Alerte de sécurité de Google Play Store Dit que votre application contient des bibliothèques JavaScript vulnérables comment supprimer l'avertissement de sécurité?

13

Dans Google Play Store, je reçois un avertissement ci-dessous comme ceci,

Votre application contient une ou plusieurs bibliothèques présentant des problèmes de sécurité connus. Veuillez consulter cet article du centre d'aide Google pour plus de détails.

Bibliothèques JavaScript vulnérables:

  • Nom -> jquery
  • Version -> 3.3.1
  • Problèmes connus -> SNYK-JS-JQUERY-174006
  • Fichiers identifiés -> res / raw / jquery_min.js

Remarque: lors du chargement de la vue Web dans mon application, je vais intercepter la demande dans l'URL de la vue Web et charger le fichier local jquery_min.js à partir de la ressource de dossier brut, ce qui nous aide à charger la page Web plus rapidement grâce à cette fonction et j'économise 5 Go de téléchargement depuis le serveur par mois.

entrez la description de l'image ici

Exemple de programme WebView

    LoadLocalScripts localScripts=new LoadLocalScripts(this);
    webView.setWebViewClient(new WebViewClient() {


                public boolean shouldOverrideUrlLoading(WebView view, String url) {

                    return true;
                }

                //Show loader on url load
                public void onLoadResource(WebView view, String url) {

                }

                public void onPageFinished(WebView view, String url) {

                    }
                @Override
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

                }


                @Override
                public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {

                    WebResourceResponse response= localScripts.getLocalSCripts(url);
                    if(response==null) {
                        return super.shouldInterceptRequest(view, url);
                    }else{
                        return response;
                    }
                }


            });

  webView.loadUrl(url);

Classe de chargement de scripts locaux

 public class LoadLocalScripts {
    private Context ctx;

    public LoadLocalScripts(Context context) {
        ctx=context;
    }

    public WebResourceResponse getLocalSCripts(String url)
    {
        //Log.e("url_raw",url);

        if (url.contains(".css")) {
            if(url.contains("bootstrap.min.css")) {
                return getCssWebResourceResponseFromRawResource("bootstrap_min.css");
            }else {
                return null;
            }
        }else  if (url.contains(".js")){
             if(url.contains("bootstrap.min.js")) {
                return getScriptWebResourceResponseFromRawResource("bootstrap_min.js");
            } else if(url.contains("jquery.lazyload.min.js")) {
                 return getScriptWebResourceResponseFromRawResource("lazyload_min.js");
             } else{
                 return null;
             }
        } else {
            return null;
        }
    }


    /**
     * Return WebResourceResponse with CSS markup from a raw resource (e.g. "raw/style.css").
     */
    private WebResourceResponse getCssWebResourceResponseFromRawResource(String url) {

        //Log.e("url_raw",url);
        if(url.equalsIgnoreCase("bootstrap_min.css")) {
            return getUtf8EncodedCssWebResourceResponse(ctx.getResources().openRawResource(R.raw.bootstrap_min));
        }else {
            return null;
        }
    }

    private WebResourceResponse getScriptWebResourceResponseFromRawResource(String url) {

        //Log.e("url_raw",url);
        if(url.equalsIgnoreCase("bootstrap_min.js")) {
            return getUtf8EncodedScriptWebResourceResponse(ctx.getResources().openRawResource(R.raw.bootstrap_min_js));
        }else if(url.equalsIgnoreCase("lazyload_min.js")) {
            return getUtf8EncodedScriptWebResourceResponse(ctx.getResources().openRawResource(R.raw.lazyload_min));
        }else {
            return null;
        }
    }


    private WebResourceResponse getUtf8EncodedCssWebResourceResponse(InputStream data) {
        return new WebResourceResponse("text/css", "UTF-8", data);
    }

    private WebResourceResponse getUtf8EncodedScriptWebResourceResponse(InputStream data) {
        return new WebResourceResponse("text/javascript", "UTF-8", data);
    }
}
  1. Si je mets à jour le nouveau script Jquery, Google Play supprimera-t-il l'alerte de sécurité (bibliothèques JavaScript vulnérables)?
  2. Si je place le script Jquery ailleurs dans mon application, Google Play supprimera-t-il l'alerte de sécurité?
  3. Faites-moi savoir quel est le moyen efficace de charger le script dans la vue Web sans charger à chaque fois depuis le serveur.
Sarath Kumar
la source
Vous pouvez probablement télécharger les scripts à partir d'un compartiment cloud (peut-être Firebase), puis les utiliser. Ce faisant, la console Play ne trouvera aucune vulnérabilité dans votre application.
Shubham Panchal

Réponses:

12

Ce problème fait référence à une ancienne vulnérabilité de jquery de votre fichier res / raw / jquery_min.js.

Je viens de mettre à jour jquery_min.js en v3.4.1 et de le corriger.

Vous pouvez le corriger manuellement dans votre changement de fichier dans le code:

De:

if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||

À:

if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||

J'ai trouvé cette solution sur https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ et j'ai travaillé pour moi.

RSednan
la source
1
  1. utilise la dernière version de jquery v3.4.0 +
  2. si l'ancien jquery v1.x / v2.x doit être utilisé parce que vos codes ou la dépendance de bibliothèques tierces (comme jquery mobile etcs), vous pouvez prendre un patch de snyk-js-jquery-174006 de DanielRuf (*)

(*) mais je ne sais pas comment Google trouve le fichier jquery dans apk a une vulnérabilité et a été corrigé ... doit tester (**)

2/1/2020 mis à jour: utiliser le fichier corrigé de la méthode 2 ci-dessus ne peut pas éviter la vérification des alertes Google. Supprime la première ligne de commentaire

/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */

à l'intérieur de jquery-2.2.4.min.js (et je renomme également jquery-patched.2.2.4.min.js) semble avoir fonctionné dans ma nouvelle version. (et cela a fonctionné même sur le fichier non corrigé dans mon test, il vaut mieux faire un patch)

ob.yann
la source
Merci, la suppression du commentaire sur la version jQuery du fichier .js a suffi.
Andrew Lim
0

Notification de sécurité

Votre application contient une ou plusieurs bibliothèques qui ont des problèmes de sécurité généraux. Veuillez consulter cet article du centre d'aide Google pour plus de détails.

Bibliothèque JavaScript vulnérable:

Nom de la version Problème connu Fichier identifié jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 assets / jquery-2.2.4.min.js Affecte la version 9 de l'APK.

Problème: j'ai utilisé jquery version 3.4.1 et cela a un effet sur l'apparence de mon application, par exemple dans le thème d'affichage, l'icône de l'application n'est pas visible et devient salissante

correct ... J'ai changé l'avertissement de sécurité de la version 3.4.1 de Google résolu mais, l'icône de l'application n'est pas visible et devient en désordre

MaxiMax-Iron Simenjangan
la source