O que é ofuscação de JavaScript e por que é uma ameaça?

O que é ofuscação de JavaScript e por que é uma ameaça?

O AVG me informou recentemente que uma página da web foi bloqueada por causa deOfuscação de JavaScript.

Por que a página da web foi bloqueada e o que isso significa exatamente?

Responder1

A ofuscação é um meio de “obscurecer” o real significado e intenção do seu código javascript. Alguns sites usam isso como um obstáculo para pessoas que desejam copiar/emprestar seu código. Outros sites o utilizam como um meio de ocultar a real intenção do código.

Algumas formas de obscurecimento:

  1. Renomear variáveis ​​automaticamente para nomes curtos e sem sentido para tornar o código menos legível e mais difícil de entender.
  2. Removendo todos os espaços em branco extras e quebras de linha para que o código seja uma longa linha gigante.
  3. Tornar partes do código autogeradas para que uma primeira passagem do código seja executada para criar o código real que então é executado para realizar a operação pretendida.
  4. Usa códigos de caracteres e manipulação de strings combinados com eval em vez de código javascript normal para construir o código real que seria executado.

O obscurecimento não é por si só mau, mas pode ser usado para tentar esconder uma intenção maligna e é provavelmente a isso que o AVG se opôs. Ele detectou tanto obscurecimento que não conseguiu dizer se o javascript estava tentando fazer algo que estava tentando impedir. Como tal, declarou o código como inseguro por padrão, uma vez que não pode verificar se o código parece OK.

Responder2

Ofuscação refere-se a ocultar o significado pretendido de algo.

Nesse caso, um trecho de JavaScript claramente legível, como

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

pode ser substituído por

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

ou mesmo

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"));

Todos os três trechos de código fazem exatamente a mesma coisa, mas apenas a leitura do primeiro permitirá que você entenda facilmente suas intenções.

Aparentemente, o AVG tenta entender o propósito do código JavaScript antes de permitir sua execução. Quando o código estiver ofuscado, o AVG provavelmente falhará. Daí o aviso.

Dito isto, alguns sites ofuscam seu JavaScript não por causa de más intenções, mas para dificultar o roubo de seu trabalho. A ofuscação geralmente é inútil se usada para esse propósito, mas a questão é que ofuscação não significa necessariamente más intenções.

informação relacionada