¿Qué es la ofuscación de JavaScript y por qué es una amenaza?

¿Qué es la ofuscación de JavaScript y por qué es una amenaza?

AVG me dijo recientemente que una página web fue bloqueada debido aOfuscación de JavaScript.

¿Por qué se bloqueó la página web y qué significa eso exactamente?

Respuesta1

La ofuscación es una forma de "oscurecer" el verdadero significado y la intención de su código javascript. Algunos sitios lo utilizan como un obstáculo para las personas que quieren copiar/tomar prestado su código. Otros sitios lo utilizan como medio para ocultar la intención real del código.

Algunas formas de oscurecimiento:

  1. Cambiar automáticamente el nombre de las variables a nombres cortos y sin sentido para que el código sea menos legible y más difícil de entender.
  2. Eliminando todos los espacios en blanco y saltos de línea adicionales para que el código sea una línea gigante y larga.
  3. Hacer que partes del código se autogeneran para que se ejecute una primera pasada del código para crear el código real que luego se ejecuta para llevar a cabo la operación prevista.
  4. Utiliza códigos de caracteres y manipulación de cadenas combinados con eval en lugar de código javascript normal para construir el código real que se ejecutaría.

El oscurecimiento no es malo en sí mismo, pero puede usarse para tratar de ocultar una mala intención y eso es probablemente a lo que AVG se oponía. Detectó tanto oscurecimiento que no pudo decir si JavaScript estaba intentando hacer algo que intentaba evitar. Como tal, declaró el código como inseguro de forma predeterminada ya que no puede verificar que el código parezca correcto.

Respuesta2

La ofuscación se refiere a ocultar el significado pretendido de algo.

En este caso, un fragmento de JavaScript claramente legible, como

window.onload = function() { alert("Hello " + username) };

puede ser sustituido por

var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
        "\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
    function (){alert(_0xc5b2[1]+username);} ;

o incluso

eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hello%20%22%5D%3Bwindow"+
  "%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
  "%29%3B%7D%20%3B"));

Los tres fragmentos de código hacen exactamente lo mismo, pero solo leer el primero le permitirá comprender sus intenciones fácilmente.

Aparentemente, AVG intenta comprender el propósito del código JavaScript antes de permitir su ejecución. Cuando el código está ofuscado, AVG probablemente fallará. De ahí la advertencia.

Dicho esto, algunos sitios web ofuscan su JavaScript no por malas intenciones, sino para dificultar el robo de su trabajo. La ofuscación suele ser inútil si se utiliza para este propósito, pero la cuestión es que la ofuscación no significa necesariamente malas intenciones.

información relacionada