Alerta de seguridad de Google Play Store Indica que su aplicación contiene bibliotecas JavaScript vulnerables ¿Cómo eliminar la advertencia de seguridad?


13

En Google Play Store recibo una advertencia a continuación como esta,

Su aplicación contiene una o más bibliotecas con problemas de seguridad conocidos. Consulte este artículo del Centro de ayuda de Google para obtener más detalles.

Bibliotecas JavaScript vulnerables:

  • Nombre -> jquery
  • Versión -> 3.3.1
  • Problemas conocidos -> SNYK-JS-JQUERY-174006
  • Archivos identificados -> res / raw / jquery_min.js

Nota: cuando cargue webview en mi aplicación, interceptaré la solicitud en la url de webview y cargaré el archivo jquery_min.js local desde el recurso de carpeta sin procesar que nos ayuda a cargar la página web más rápido debido a esta función y ahorro 5 gb de descarga del servidor por mes.

ingrese la descripción de la imagen aquí

Programa de muestra de 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);

Clase para cargar scripts locales

 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 actualizo el nuevo script de Jquery, ¿Google Play eliminará la alerta de seguridad (bibliotecas de JavaScript vulnerables)?
  2. Si coloco el script Jquery en otro lugar de mi aplicación, ¿Google Play eliminará la Alerta de seguridad?
  3. Avíseme cuál es la forma eficiente de cargar el script en webview sin cargarlo cada vez desde el servidor.

Probablemente podría descargar los scripts de un cubo de nube (tal vez Firebase) y luego usarlos. Al hacerlo, Play Console no encontrará ninguna vulnerabilidad en su aplicación.
Shubham Panchal

Respuestas:


12

Este problema se refiere a una antigua vulnerabilidad de jquery de su archivo res / raw / jquery_min.js.

Acabo de actualizar jquery_min.js a v3.4.1 y arreglarlo.

Puede arreglarlo manualmente en su cambio de archivo en el código:

Desde:

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

A:

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

Encontré esta solución en https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/ y trabajé para mí.


1
  1. utiliza la última versión de jquery v3.4.0 +
  2. si el viejo jQuery v1.x / v2.xy debe ser utilizado debido a sus códigos o la dependencia de las bibliotecas 3 ª parte (como jQuery ETCS móviles), se puede tomar un parche de DanielRuf snyk-js-jquery-174006 (*)

(*) pero no estoy seguro de cómo Google encuentra que el archivo jquery en apk tiene vulnerabilidad y ha sido parcheado ... necesita probar (**)

2/1/2020 actualizado: utilizar el archivo parcheado del método 2 anterior no puede evitar la verificación de alertas de Google. Elimina la primera línea de comentario.

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

dentro de jquery-2.2.4.min.js (y también cambio el nombre a jquery-patched.2.2.4.min.js) parece funcionar en mi nueva versión. (y esto funcionó incluso en el archivo no parcheado en mi prueba, debería hacer un parche)


Gracias, todo lo que tomó fue eliminar el comentario de la versión jQuery del archivo .js.
Andrew Lim

0

Notificación de seguridad

Su aplicación contiene una o más bibliotecas que tienen problemas de seguridad generales. Consulte este artículo del Centro de ayuda de Google para obtener más detalles.

Biblioteca de JavaScript vulnerable:

Nombre de la versión Problema conocido Archivo identificado jquery 2.2.4 SNYK-npm: jquery: 20150627 SNYK-JS-JQUERY-174006 assets / jquery-2.2.4.min.js afecta la versión 9 de APK.

Problema: he usado jquery versión 3.4.1 y tiene un efecto en la apariencia de mi aplicación, por ejemplo, en el tema de visualización, el icono de la aplicación no es visible y se vuelve desordenado

correcto ... Cambié la advertencia de seguridad de la versión 3.4.1 de Google resuelta pero, el ícono de la aplicación no es visible y se vuelve desordenado

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.