jquery.js Evaluación de código dinámico: Inyección de código en la línea setTimeout ()

2

Estoy trabajando para solucionar un posible problema de seguridad. Ejecuté mi HP fortify SCA y obtuve un informe de prioridad crítica en mi archivo jquery.js.

  

Categoría: Evaluación de código dinámico: Inyección de código (3 problemas).

Miré el código fuente y resultó ser la línea donde se encuentra el código setTimeout() eval.

if (s.async && s.timeout) {
    timeoutTimer = setTimeout( function() {
        jqXHR.abort("timeout");
    }, s.timeout );
}

con un bloque try catch anterior.

Hice un par de excavaciones y dicen que no se metan con el código fuente de un tercero, puede que esté manipulando otras funciones. Estoy pensando simplemente suprimir y seguir adelante? Normalmente no me gusta suprimir la crítica.

¿Alguna idea?

    
pregunta A1a5h3 20.02.2017 - 17:43
fuente

1 respuesta

3

Es un falso positivo.

Informar sobre vulnerabilidades de inyección de código falso es un problema bien conocido con HP Fortify y ha confundido a los desarrolladores antes . Fortify solo realiza un análisis estático básico del código Javascript y no puede profundizar arbitrariamente para comprender cómo funciona. Como sugirió @AlexanderOMara, parece que descubre la peligrosa función potencialmente setTimeout() que puede, como setInterval() , tomar un argumento de cadena que se ejecutaría como código, al igual que eval() . Este tipo de vulnerabilidad, la herramienta pretende descubrir:

setTimeout('alert(' + document.location.hash.split('#')[1] + ')', 0);

Pero en su caso, no hay entrada sin filtro suministrada por el usuario a la función setTimeout() y, por lo tanto, parece segura. Dejando con una gran conclusión del hilo vinculado:

  

Mi consejo es que dejes de ejecutar los informes de HP Fortify.   O pague los cinco mil dólares, o lo que sea, en dólares para ir a sus clases, de modo que pueda entender realmente su clave.

    
respondido por el Arminius 20.02.2017 - 18:58
fuente

Lea otras preguntas en las etiquetas