Segurança no HTML 5 – Visão geral
Grande parte dos profissionais de desenvolvimento, principalmente de aplicações web, já utilizam o HTML 5 – que é o sucessor da atual linguagem HTML. Esse padrão é muito comum para desenvolvedores de Apps para smartphones, que geralmente o utilizam para a criação de aplicações híbridas.
Mesmo com os novos recursos e a evolução dos navegadores para melhorar a experiência com o HMTL 5, pessoas mal intencionadas encontram brechas e exploram possíveis vulnerabilidades
Neste artigo, vou apresentar algumas formas de ataques que podem ser realizadas utilizando alguns dos atributos e elementos dessa linguagem e como podem ser contornados.
Vulnerabilidade HTML 5
Hoje o tratamento e a filtragem dos parâmetros são realizados basicamente de três formas, converter e/ou filtrar caracteres especiais nas entradas realizadas pelos usuários e variáveis, criar uma whitelist permitindo que seja executado apenas algumas funções e/ou valores explicitamente permitidos ou por meio da criação de uma blacklist, que irá bloquear as entradas que são explicitamente negadas.
Durante as pesquisas que realizei, a maioria dos ataques que podem acontecer no HTML5 é do tipo Cross-Site-Scripting (XSS), seja reflected ou stored. Para facilitar a compreensão, vou explicar cada um deles.
Os tipos de ataques continuam sendo os mesmos, mas os vetores onde irão ocorrer são diferentes.
Vamos a um exemplo prático:
Caso você tentasse injetar um determinado código de JavaScript, seria possível utilizar o onmouseover e aguardar que a vítima passasse o mouse sobre o elemento para conseguir ativar o ataque.
No HTML5, o JavaScript injetado poderia ser executado automaticamente por cada usuário que visita essa página, isso é possível adicionando o código malicioso no campo onfocus, acompanhado pelo atributo autofocos, com isso o usuário será direcionado para o site malicioso. Veja o exemplo abaixo:
<input onfocus="window.location='http://www.siteblindado.com.br';" autofocus/>
Claro que isso somente seria possível caso o site estivesse vulnerável a algum ataque que permitisse a inserção de códigos, como o XSS.
Se fosse um reflected, o atacante poderia atingir seus clientes por meio de engenharia social. Se fosse stored, aí sim seria bem complicado, pois qualquer um que visitasse o site poderia ser direcionado para a página maliciosa.
Além desse exemplo acima, outra opção seria a exploração da configuração incorreta do CORS (Cross-Origin Resource Sharing), caso a aplicação esteja configurado com o header abaixo:
Access-Control-Allow-Origin: *
Dessa forma, existe a probabilidade de conseguir a manipulação das requisições que permitem a utilização do CORS a nosso favor, ou seja, neste caso podemos tentar realizar um RFI (Remote File Include) e tentar injetar o nosso script no servidor.
O HTML também pode ser muito seguro
Mas não é somente de falhas que vive o HTML5, uma opção bem legal é a sandbox no IFRAME. Com ela você conseguirá restringir algumas permissões que a utilização do IFRAME pode ter em seu site. Hoje se o endereço que você está inserindo no site for infectado por algum tipo de malware e resolver disseminar esse código utilizando esse IFRAME, você acabará contaminando seus visitantes também, ao utilizar o sandbox você elimina ou reduz esse risco.
Nesse endereço você encontra mais informações: http://www.w3schools.com/tags/att_iframe_sandbox.asp.
Como se proteger
Podemos dizer que a preocupação com segurança no HTML5 deve ser a mesma que você já tem com o HTML. Procure filtrar todas as variáveis que serão utilizadas nas aplicação, além claro, de utilizar headers de segurança.
Procure sempre:
- Filtrar e realizar o tratamento correto de todas as variáveis que serão utilizadas no sistema;
- Utilizar o header de segurança X-XSS-Protection;
- Configurar corretamente o Cross-Origin Resource Sharing (CORS).
O HTML5 poderá sofrer mudanças e receber diversas melhorias, por isso é importante você ficar atento a todas novidades que a linguagem pode trazer.
0 comentários: