¿Cuál es el impacto de la minificación de JavaScript en la seguridad?

4

En los últimos años, el uso de la minificación de JavaScript para aplicaciones web proliferó tan rápidamente que puede considerarse un estándar de facto en la actualidad. Me pregunto si es probable que el uso de tales herramientas introduzca nuevas vulnerabilidades que no están presentes en el código fuente inicial.

    
pregunta westbeam87 28.10.2017 - 11:40
fuente

1 respuesta

4

Es poco probable que las sustituciones simples introduzcan nuevas vulnerabilidades.

Las reglas que siguen a continuación son simples y fáciles de implementar y la gramática del lenguaje es bastante fácil de analizar.

Por lo tanto, la minificación en sí misma no representa una amenaza adicional significativa para el uso de JavaScript (esencialmente un método para la ejecución remota de código arbitrario) en general.

Después de un comentario de @Armenius, me gustaría señalar que hay ciertos casos de borde en el cual los minificadores hacen suposiciones sobre el sistema de tipificación (de alguna manera complicado) de JavaScript que introduce - bien - errores.

Esto aún no se ha solucionado, pero, por supuesto, no hay pruebas de que no haya más miniaturas con un diseño deficiente que hagan cosas para minimizar que (ab) utilicen las funciones de forma diferente a la que pretendía el autor.

Tenga en cuenta también que depende del minificador que use, por ejemplo, como evidencia anecdótica: el cambio de gcc a clang ha generado desbordamientos de búfer que fueron "arreglados" al verificar si un entero se desbordó en una declaración if. El estándar dice que el comportamiento de los enteros desbordados no está definido y que gcc se utiliza para iniciarlos de nuevo en minint. Clang estaba siendo inteligente: »si el entero no fluye, no puede ser negativo. Si es negativo, debe haber un desbordamiento. Las consecuencias no están definidas, por lo que estoy optimizando el conjunto de la declaración "

Entonces, sí, hay una pequeña posibilidad de que (básicamente cualquier software también) los mineros introduzcan nuevos errores. Sin embargo, estoy seguro de que son raros y fáciles de solucionar, ya que la sintaxis no es tan complicada.

Sin embargo, hay una implicación que a menudo se pasa por alto cuando se trata de la minificación: cuando se minimizan los scripts, se vuelven esencialmente ininteligibles para los humanos a menos que se vuelvan a inflar. Por lo tanto, cuando no están incluidos en un CDN confiable y bien conocido, pueden contener piezas de script maliciosas ocultas en una implementación jQuery por lo demás, por ejemplo.

Y la introducción de dicho código malicioso puede hacerse muy bien por los minificadores. Pero, por otro lado, estas herramientas suelen ser de código abierto y la comunidad podrá detectar un crypto-miner oculto en cada secuencia de comandos minimizada.

Aparte de eso, eliminar un código malicioso que no sea obvio en un script minificado después de su generación y antes de su despliegue a los usuarios puede ser un buen escondite, y la minificación continua hace que las revisiones de seguridad manuales de los sitios web sean más complicadas.

    
respondido por el Tobi Nary 28.10.2017 - 11:48
fuente

Lea otras preguntas en las etiquetas