Guia que cruza as 10 categorias do OWASP Top 10 com as 25 fraquezas do CWE TOP 25 (MITRE). Cada item reúne conceitos, exemplos de código vulnerável e correção, casos documentados, matriz OWASP↔CWE, simuladores, terminais interativos e checklist de mitigação — com labs práticos no OWASP Juice Shop.
«The OWASP Top 10 is a standard awareness document for developers and web application security. It represents a broad consensus about the most critical security risks to web applications.» A edição 2025 combina 2,8M+ aplicações testadas com pesquisa comunitária para categorias sub-representadas em scanners.
O salto de +14 pontos percentuais em mapeamento CNA melhora a qualidade do ranking: menos abstrações genéricas, mais fraquezas Base/Variant acionáveis em revisão de código e triagem de patch.
§00·mercado
Panorama 2024–2025
Dados OWASP Top 10:2025 (2,8M+ apps), MITRE CWE TOP 25 (39.080 CVEs), DBIR, IBM.
Campanha UNC5537 explorou contas Snowflake com autenticação fraca e credenciais reutilizadas. Ticketmaster, Santander e dezenas de outros clientes tiveram dados exfiltrados.
Não houve zero-day — o atacante usou credenciais vazadas em ambientes onde MFA não era obrigatório por padrão. Session hijack e data exfiltration em escala industrial.
Organizações com security AI e automação encurtaram o ciclo de vida do incidente em 108 dias. O gap não é só ferramenta — é detectar, correlacionar e responder antes que logging vire arquivo morto (A09).
Uso de credenciais roubadas e credential stuffing permanecem entre os principais vetores de breach em aplicações web. Misconfiguration responde por parcela significativa dos ataques web — alinhado com A02 subindo para #2 no OWASP 2025.
«Organizations with extensive use of security AI and automation reported significantly lower breach costs and faster incident resolution.» O inverso também aparece nos dados: 97% tiveram incidentes de IA sem controles adequados — novo eixo de risco além do Top 10 clássico.
US$ 4,4MCusto médio
97%IA sem controles
Metodologia OWASP Top 10:2025 (documento oficial): ranking data-informed com 8 categorias vindas de testes em 2,8M+ aplicações e 2 promovidas pela pesquisa comunitária (supply chain e logging/alerting). Dados IBM: Cost of a Data Breach 2025 (US$ 4,4M médio, gap de governança IA). DBIR: Verizon DBIR 2025. CWE: MITRE TOP 25 2025 (67% CNA mapping).
O catálogo Known Exploited Vulnerabilities lista CVEs com exploit confirmado in-the-wild. CWE-78 (OS Command Injection) lidera em entradas — relevante mesmo em apps web com bindings nativos, parsers PDF e pipelines CI.
🎓DiscussãoGuia · Inteligência de ameaças
De relatório a backlog de engenharia
Para cada insight do hub (MITRE, OWASP, DBIR, IBM), pergunte: qual user story quebra se isso for explorado? Qual teste automatizado detecta? Quem é owner do controle? Sem essa ponte, intel vira slide — não sprint.
MITRE CWE TOP 25 2025
39.080 CVEs analisados — CWE-79 lidera com score 60,38
39.080CVE Records no dataset
67%CVEs com CWE mapeado pelo CNA (+14pp vs 2024)
28.336Mapeamentos CWE no Top 25
71,82%Mappings em nível Base (actionable)
O CWE TOP 25 2025 reflete mapeamentos reais de CNAs — sem normalização forçada para View-1003 do NVD. Isso traz CWEs mais precisos (Base/Variant) ao ranking, explicando a entrada de buffer overflows clássicos (#11, #14, #16) e a saída de abstrações como CWE-119 e CWE-287.
CWE-862 (Missing Authorization) subiu 5 posições para #4 — o maior salto. CWE-476 (NULL deref) subiu 8 posições. CWE-306 (Missing Authentication) subiu 4 posições. Isso confirma que falhas de authZ/authN dominam o ecossistema web/API.
Mapeamentos para CWEs 'Discouraged' caíram de 10,19% (2024) para 5,42% (2025) — melhoria na qualidade de root cause mapping pela comunidade CVE.
CWE-79 manteve #1 apesar de +3.000 CVEs adicionais mapeadas. CWE-787 caiu de #2 para #5; CWE-20 caiu 6 posições; SSRF (CWE-918) caiu para #22 mas permanece crítico em cloud.
2,8 milhões de aplicações testadas — 2 categorias novas
2,8M+Apps no dataset
248CWEs nas 10 categorias
589CWEs analisados
175kCVEs mapeados no NVD
8ª edição do OWASP Top Ten. Metodologia data-informed + community survey: 8 categorias vêm dos dados, 2 da pesquisa comunitária (supply chain e logging/alerting sub-representados em testes automatizados).
A01 mantém #1: 3,73% das apps testadas tinham pelo menos uma das 40 CWEs de Broken Access Control. SSRF foi consolidado em A01 (saiu como categoria própria do Top 10).
A03 Software Supply Chain Failures expande A06:2021 (Vulnerable Components) para pipeline, build e distribuição. Tem as menores ocorrências nos dados mas os maiores scores médios de exploit e impacto.
A10 Mishandling of Exceptional Conditions é nova: 24 CWEs cobrindo error handling, fail-open, race conditions e estados inconsistentes após exceções.
Contribuidores de dados: Accenture, Bugcrowd, Contrast, Semgrep, Sonar, Veracode, Orca Security e outros.
Ataques web e credenciais continuam dominando breaches
16%Breaches via credential stuffing
15%Web attacks — misconfiguration
32%Breaches envolvendo ransomware
3ªPosição de erros humanos como vetor
O DBIR 2024 analisa milhares de incidentes reais. Credential stuffing e uso de credenciais roubadas permanecem no topo — reforçando A07 e a necessidade de MFA + rate limiting.
Misconfiguration em aplicações web responde por ~15% dos ataques web — alinhado com A02 subindo para #2 no OWASP 2025.
O relatório destaca que vulnerabilidades exploradas (não zero-days) continuam sendo o vetor principal — patch management e hardening baseline são ROI alto.
Setor financeiro: 94% dos breaches envolvem sistema web, aplicativo ou API como vetor principal.
Memory corruption e command injection ativamente explorados
20KEV em CWE-78 OS Command Injection
14KEV em CWE-416 Use After Free
12KEV em CWE-787 OOB Write
11KEV em CWE-502 Deserialization
O catálogo KEV da CISA lista vulnerabilidades com exploit conhecido in-the-wild. CWEs de memory safety e command injection dominam — relevante mesmo em apps web com bindings nativos (imagem, PDF, Node addons).
Detecção de incidentes é obrigação legal, não opcional
Art. 46LGPD — segurança e boas práticas
Art. 32GDPR — medidas técnicas adequadas
72hPrazo notificação GDPR
Ambos os marcos exigem medidas técnicas para proteger dados pessoais E capacidade de detectar incidentes. Logging sem alerting (A09) é gap de compliance.
ANPD orienta que exposição por misconfiguration (A02) pode exigir comunicação aos titulares se houver risco relevante.
Na prática: correlacione cada OWASP com artigo LGPD/GDPR aplicável.
KEV não é opcional para órgãos US — referência global de prioridade
«Federal Civilian Executive Branch agencies are required to remediate vulnerabilities identified in the CISA KEV catalog within prescribed timeframes.» Mesmo fora do setor público US, o KEV é o melhor proxy de «explorado agora» disponível gratuitamente.
Shostack enfatiza que threat model não é diagrama bonito — é atividade repetida que alimenta design seguro (A06). STRIDE, attack trees e misuse cases devem aparecer no backlog, não só no Confluence.
— Adam Shostack · Threat Modeling
Timeline de breaches — clique para filtrar OWASP↔CWE
§N·news
Notícias & pesquisa
Curadoria 2024–2026 · MITRE, OWASP, IBM, Verizon, CISA · clique para filtrar na matriz
Trechos e citaçõesContexto editorial — 2 por linha
«The CWE Top 25 is a compilation of the most common and impactful weakness types in software. The goal is to help prioritize mitigation efforts by focusing on weaknesses that are most often exploited.» O ranking 2025 prioriza mapeamentos CNA reais — não normalização forçada do NVD.
Schneier repete há décadas: comprar ferramenta sem processo de patch, revisão e resposta não fecha risco. Os relatórios desta seção (DBIR, IBM, MITRE) quantificam o que ele descreve qualitativamente — breaches continuam por falhas conhecidas e não corrigidas.
— Bruce Schneier · Schneier on Security
Cada notícia abaixo deve virar uma ação verificável — não apenas clipping.
Na prática
Relacione headline → OWASP → CWE → controle
Pergunte: isso existe no nosso stack?
Derive 1 ticket de engenharia por incidente lido
cwe
MITRE
CWE TOP 25 2025 publicado
Maior salto: CWE-862 (+5 pos.)
Ranking definitivo com 39.080 CVEs analisados. CWE-79 (XSS) mantém liderança com score 60,38 — mais que o dobro do segundo colocado.
Destaques: CNA mapping subiu de 53% para 67% (+14pp). CWE-862 (Missing Authorization) subiu 5 posições para #4. Buffer overflows clássicos retornam ao TOP 25. Mapeamentos para CWEs 'Discouraged' caíram para 5,42%.
39.080 CVEs67% CNA map#1 CWE-79
Priorize authZ server-side (CWE-862)
Exija CWE Base/Variant em disclosures
Correlacione com a matriz OWASP desta página
mercado
IBM
Cost of a Data Breach Report 2025
Gap de governança IA é novo vetor de custo
Custo médio global cai 9% para US$ 4,4M, mas incidentes envolvendo IA sem controles atingem 97% das organizações analisadas.
Organizações com IA defensiva extensiva economizam US$ 1,9M e reduzem ciclo de vida do incidente. Shadow data e terceiros continuam amplificando impacto. Logging sem alerting perpetua MTTI alto — gap direto em A09.
US$ 4,4M Custo médio97% IA sem controlesUS$ 1,9M Economia IA def.
SIEM + SOAR com playbooks acionáveis
DPIA para features com GenAI
Vendor risk em cadeia de terceiros
mercado
Verizon
DBIR 2025 — terceiros e vulnerabilidades em alta
Vuln explorada > zero-day na maioria dos casos
Ameaças via terceiros dobraram no período. Intrusão em sistemas responde por 81% dos breaches analisados.
Exploração de vulnerabilidades conhecidas volta a crescer — reforça patch management e hardening baseline como ROI alto. Setor financeiro: 94% dos breaches envolvem web, app ou API como vetor.
2× Terceiros81% Intrusão sistema94% Fin. web/API
MFA obrigatório (FIDO2)
SBOM + avaliação de fornecedores
Monitoramento CTI de credenciais vazadas
owasp
OWASP
OWASP Top 10:2025 — versão final
A02 misconfig sobe para #2
8ª edição publicada com 2 categorias novas promovidas pela pesquisa comunitária e metodologia data-informed em 2,8M+ apps.
A03 Software Supply Chain Failures e A09 Logging and Alerting entram via survey — sub-representados em testes automatizados. A10 Mishandling of Exceptional Conditions é categoria inédita com 24 CWEs. SSRF consolidado em A01.
2,8M+ Apps testadas248 CWEs mapeadas2 Categorias novas
Mapear 248 CWEs no seu stack
Threat model supply chain (SLSA/SBOM)
Fail-closed em authZ e error paths
incidente
CISA
Snowflake — campanha MFA bypass
Maior campanha SaaS de 2024–2025
UNC5537 explorou centenas de tenants Snowflake com credenciais sem MFA obrigatório e reutilização de senhas.
Ticketmaster, Santander, Advance Auto Parts entre afetados. Não houve zero-day — vetor foi credencial vazada + configuração permissiva de autenticação. Lição direta para A07 + A02 em ambientes SaaS multi-tenant.
165+ ClientesA07 Auth failureA02 Misconfig
MFA obrigatório em todos os tenants
Rate limit e lockout no login
Monitoramento de credenciais em CTI
incidente
NVD
CVE-2024-3094 — backdoor XZ Utils
Maior incidente supply chain OSS de 2024
Backdoor inserido em liblzma após comprometimento social do maintainer solo — detectado por anomalia em sshd, não por scanner.
Atacante acumulou confiança por anos antes de inserir código malicioso. Afetou distros Linux mainstream. Marco definitivo de supply chain em open source — motivação direta para A03:2025 no OWASP Top 10.
3 anos InfiltraçãoA03 Supply chainCWE-829 Dep. maliciosa
Pin + hash verification em deps nativas
Revisão humana de mudanças críticas
Proveniência SLSA nível 3+
pesquisa
PortSwigger
Web Security Academy — novos labs SSRF/IDOR
Broken Access Control domina pentest manual
Conteúdo 2024–2025 reforça APIs cloud-native, JWT abuse e GraphQL BOLA — alinhado a A01 como #1 em pentests manuais.
Pesquisa anual confirma IDOR em 94% dos apps testados. SSRF cresce com microserviços e serverless que fazem fetch de URLs. Business logic flaws em ~40% dos escopos — overlap com A06 Insecure Design.
94% IDOR↑ SSRF APIs40% Logic flaws
AuthZ matrix automatizada em CI
Block metadata IPs em fetchers
Abuse case testing no backlog
incidente
Change Healthcare
Maior breach saúde EUA — credenciais sem MFA
Maior breach healthcare EUA
Ransomware ALPHV/BlackCat via credencial Citrix comprometida sem MFA. Paralisou pagamentos de saúde por semanas.
Maior incidente do setor saúde nos EUA. Vetor inicial: credencial válida sem segundo fator em portal exposto. Impacto em cadeia: farmácias, hospitais e processamento de claims. Caso emblemático de A07 em ambientes críticos.
Até 80 hospitais potencialmente impactados por falhas em integração legada e exposição de dados clínicos.
Ambientes healthcare combinam sistemas legados, integrações HL7/FHIR mal protegidas e superfície exposta. Correlaciona A02 (misconfig) com CWE-200 (exposure) — dados clínicos sem controles proporcionais ao risco.
80 HospitaisA02 MisconfigPII/PHI Dados
Inventário de integrações legadas
Criptografia em trânsito e repouso
Auditoria de permissões em APIs clínicas
owasp
OWASP
ASVS 5.0 em desenvolvimento
Checklist evolui para stack 2025+
Nova versão do Application Security Verification Standard incorpora APIs, cloud, containers e requisitos para GenAI/LLM.
ASVS 5.0 expande cobertura para arquiteturas modernas: microserviços, serverless, service mesh e copilots internos. Use como checklist de verificação cruzada com cada categoria OWASP:2025 neste guia.
5.0 VersãoAPI CoberturaLLM Novos reqs
Mapear ASVS level alvo por aplicação
Gates bloqueantes em CI por capítulo
Security champions por squad
cwe
CISA
KEV catalog — recorde de adições Q1
Exploit in-the-wild = prioridade zero
Catálogo de vulnerabilidades exploradas ativamente cresce em ritmo recorde. Software de borda e VPN lideram entradas.
CWE-78 (OS Command Injection) e memory corruption dominam KEV. Prioridade de patch para CVEs listadas deve ser < 48h — antes de hardening genérico. Correlacione com o gráfico CWE↔KEV nesta página.
20 CWE-78 KEV<48h SLA patchCWE TOP 25 overlap
Pipeline de patch KEV automatizado
WAF temporário só sem patch
Inventário de parsers nativos
pesquisa
IETF
OAuth 2.1 draft — simplificação PKCE
Padrão OAuth amadurece para APIs modernas
Consolidação de boas práticas OAuth para SPAs, mobile e APIs — PKCE obrigatório, implicit flow removido.
OAuth 2.1 simplifica implementações seguras e elimina fluxos deprecados. Impacto direto em A07 (Authentication Failures) e A01 (Broken Access Control) em APIs que usam tokens sem validação rigorosa de audience e scope.
PKCE Obrigatório2.1 DraftA07 OWASP
Migrar implicit → authorization code + PKCE
Validar audience e scope no resource server
Rotacionar refresh tokens
§mapa·owasp ↔ cwe
Matriz de correlação
Clique na célula, no cabeçalho OWASP/CWE ou na lista lateral.
CWE-200 (Exposure) aparece em A02 (misconfig) e A09 (logs). CWE-502 liga A03 (supply chain) e A08 (integridade). A matriz 10×25 mostra onde priorizar esforço quando o mesmo defeito alimenta múltiplos riscos de compliance.
«OWASP Top 10 categories are mapped to CWEs to provide a deeper technical understanding of the weaknesses that can lead to each risk category.» A matriz interativa torna esse mapeamento navegável — clique filtra toda a página.
29 correlações · filtro: nenhum
Correlações por categoria OWASP
Quantidade de CWEs correlacionadas em cada categoria · clique para filtrar
Distribuição
↗ Interativo — passe o mouse ou clique na legenda
79
89
352
862
787
22
416
125
78
94
120
434
476
121
502
122
863
20
284
200
306
918
77
639
770
A01
A02
A03
A04
A05
A06
A07
A08
A09
A10
Selecione uma correlação na matriz 10×25 para filtrar as seções e ver a explicação.
curl, sqlmap e jwt_tool no terminal didático espelham passos do Web Security Testing Guide. A diferença entre ler sobre IDOR e ver o JSON de outro usuário no terminal é o que fixa o conceito para auditoria e dev.
Cada lab do terminal mapeia para um capítulo WSTG: WSTG-ATHZ-03 (IDOR), WSTG-INPV-05 (SQLi), WSTG-SESS-10 (JWT). A saída formatada simula o que você colaria em um laudo de pentest.
O fluxo didático segue a mesma ordem da IDE Juice Shop: reproduzir → entender → corrigir → validar que o exploit falha.
12+Comandos
WSTGGuia base
A01–A07OWASP cobertos
Na prática
curl /rest/basket/{id} — IDOR sem checagem de ownership (CWE-639)
sqlmap no login — valida CWE-89 com payload real do Juice Shop
jwt decode + alg:none — testa A07/A08 em lib/insecurity.ts
npm audit — correlaciona A03 com CVEs intencionais do package.json
Em pentest ou auditoria, cada comando bem-sucedido deve gerar: request/response redigido, timestamp, impacto (confidencialidade/integridade/disponibilidade) e CWE/OWASP mapeados. O terminal desta página simula a cadeia de reprodução.
Um achado completo inclui: descrição técnica, passos de reprodução, evidência (screenshot ou log redigido), classificação CVSS simplificada e recomendação de mitigação com referência ASVS.
Em laboratório, trate cada sessão no terminal como mini-relatório: hipótese → teste → resultado → conclusão.
CIATriade impacto
Art. 46LGPD
ASVSControle ref.
Na prática
Redija e-mails, tokens e CPF antes de colar output — minimização de PII
Registre HTTP method, path, status code e trecho relevante do body
Mapeie cada achado a OWASP + CWE + severidade para o backlog
Inclua comando fix ou snippet de correção na recomendação
Por que importa
Relatórios sem evidência reproduzível não sobrevivem a reteste nem a auditoria ANPD/GDPR.
SQLi — login.tsA05 · CWE-89
Lab Juice Shop · SQL Injection
Digite help ou experimente curl/sqlmap.
$
IDOR — basket.tsA01 · CWE-639
Lab IDOR · Broken Object Level Authorization
$
XSS — busca e feedbackA05 · CWE-79
Lab XSS · CWE #1 MITRE 2025 (score 60.38)
$
JWT — insecurity.tsA04 · CWE-347
Lab JWT · weak crypto + alg confusion
$
Supply Chain — npm auditA03 · CWE-829
Lab Supply Chain · SBOM + audit
$
SSRF — profile imageA01 · CWE-918
Lab SSRF · metadata cloud
$
Auth — login + adminA07 · CWE-306
Lab Authentication · CWE-306 Missing Auth
Clique nos comandos ou ▶ Demo.
$
§code·vault
Cofre de código
25 padrões vulnerável→correção · 19 labs Juice Shop
✓AprendizadoCofre de Código
Diff vulnerável → correção é o artefato central
Cada padrão no cofre mostra o anti-pattern exato e a correção idiomática na linguagem do exemplo. Em code review, treine o olho para o mesmo shape: concatenação em query, substring em redirect, parse sem validação.
Vulnerabilidades intencionais com código de produção real
«Juice Shop is an intentionally insecure web application for security trainings written in Node.js, Express and Angular.» Os trechos em routes/ e lib/ são os mesmos padrões encontrados em auditorias reais — apenas concentrados em um repositório didático.
A05CWE-89Python/Flask
SQLi em query raw
Mesmo com ORM, .raw() e text() com f-string reintroduzem CWE-89.
cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")
cursor.execute('SELECT * FROM users WHERE email = %s', (email,))
A05CWE-89Node/Sequelize
SQLi — Juice Shop login.ts
Padrão exato do Juice Shop — concatenação em template literal.
sequelize.query(`SELECT * FROM Users WHERE email = '${email}'`)
@app.get('/orders/{order_id}')
def get_order(order_id, user=Depends(auth)):
o = db.get_order(order_id)
if o.user_id != user.id: raise HTTPException(403)
return o
A01CWE-862Go
Missing Authorization middleware
Deny-by-default: rotas sensíveis atrás de middleware explícito.
O mesmo login.ts do Juice Shop é CWE-89 (SQLi) e categoria A05 (Injection). Os 25 simuladores CWE forçam vocabulário MITRE — essencial para triagem de CVE, relatórios SOC e comunicação com desenvolvimento.
📌Menção · referênciaMenção · Root cause
Atacantes pensam em inputs que devs não imaginam
O livro clássico separa bugs de flaws — design flaws (A06) vs implementation bugs (A05/A01). Os 25 simuladores CWE focam implementation; combine com abuse cases para cobrir design.
— Greg Hoglund & Gary McGraw · Exploiting Software
Broken Access Control permanece na primeira posição do OWASP Top 10:2025. Em testes de penetração, falhas de autorização aparecem em praticamente todos os escopos web — não por ausência de login, mas porque a checagem de permissão não acompanha cada operação no servidor.
CWE-862CWE-863CWE-639CWE-284CWE-22CWE-918
vs 2021Mantido #1. SSRF saiu do Top 10 mas continua mapeado aqui via APIs que buscam URLs internas.
Pontos-chave
Broken Access Control permanece na primeira posição do OWASP Top 10:2025. Em testes de penetração, falhas de autorização aparecem em praticamente todos os escopos web — não por aus…
CWEs centrais: CWE-862, CWE-863, CWE-639, CWE-284
Mantido #1. SSRF saiu do Top 10 mas continua mapeado aqui via APIs que buscam URLs internas.
Deny-by-default em middleware de autorização
Policy-as-code (OPA, Cedar)
Testes automatizados BOLA/BFLA (OWASP ZAP)
Conceitos
Visão geral
Broken Access Control permanece na primeira posição do OWASP Top 10:2025. Em testes de penetração, falhas de autorização aparecem em praticamente todos os escopos web — não por ausência de login, mas porque a checagem de permissão não acompanha cada operação no servidor.
Contexto técnico
IDOR (Insecure Direct Object Reference), BOLA em APIs, escalação vertical para rotas /admin e bypass de workflow são padrões recorrentes. O CWE-862 (Missing Authorization) subiu cinco posições no TOP 25 MITRE 2025, sinalizando que o mercado ainda subestima autorização server-side.
Impacto e prevalência
No Juice Shop, routes/basket.ts retorna qualquer cesta pelo ID da URL sem validar ownership — reproduzível em 30 segundos com DevTools. O mesmo padrão destruiu dados de milhões em APIs REST mal modeladas.
Ecossistema e labs
Dados oficiais OWASP 2025: 3,73% das 2,8M+ aplicações testadas tinham pelo menos uma das 40 CWEs desta categoria. SSRF (CWE-918) foi incorporado aqui — saiu como categoria autônoma do Top 10.
Como o ataque funciona
Recon → enumerar IDs/recursos → trocar chave controlada pelo usuário (basketId, orderId) → escalar para /admin ou SSRF interno → exfiltrar dados de outro tenant.
Causas raiz frequentes
Confiar que login implica permissão em todo endpoint
IDs sequenciais ou previsíveis em APIs REST
Autorização só no frontend ou em gateway genérico
Ausência de testes por matriz role × recurso × ação
Exemplos de código · vulnerável → correção
A01CWE-639Python/FastAPI
IDOR em API REST
Padrão BOLA — derive identity do token, não do path.
@app.get('/orders/{order_id}')
def get_order(order_id, user=Depends(auth)):
o = db.get_order(order_id)
if o.user_id != user.id: raise HTTPException(403)
return o
A01CWE-862Go
Missing Authorization middleware
Deny-by-default: rotas sensíveis atrás de middleware explícito.
Broken Access Control permanece na primeira posição do OWASP Top 10:2025. Em testes de penetração, falhas de autorização aparecem em praticamente todos os escopos web — não por ausência de login, mas porque a checagem de permissão não acompanha cada operação no servidor.
IDOR (Insecure Direct Object Reference), BOLA em APIs, escalação vertical para rotas /admin e bypass de workflow são padrões recorrentes. O CWE-862 (Missing Authorization) subiu cinco posições no TOP 25 MITRE 2025, sinalizando que o mercado ainda subestima autorização server-side.
Broken Access Control não é exagero de consultoria — é a falha mais encontrada em pentest manual. APIs REST com IDs sequenciais e GraphQL sem authZ por field continuam entregando dados de terceiros.
Ex-funcionária explorou SSRF em WAF para acessar 169.254.169.254 e obter credenciais IAM. 106 milhões de registros exfiltrados. A lição: qualquer fetch de URL user-controlled em cloud é candidato a A01.
API1:2023 Broken Object Level Authorization descreve o mesmo defeito de basket.ts — confiar no ID do recurso sem checar ownership no servidor. Em microsserviços, o bug migra para service-to-service tokens mal escopados.
CWEs relacionadas
◎Detecção
◈Mapa de endpoints × roles esperadas
◈Teste horizontal: trocar IDs de recursos
◈Teste vertical: acessar /admin sem role
◈Log de 403 e tentativas de escalação
⚡Testes WSTG
▸WSTG-ATHZ-01: Directory traversal
▸WSTG-ATHZ-02: Bypassing auth schema
▸WSTG-ATHZ-03: IDOR
▸WSTG-ATHZ-04: OAuth weaknesses
✓ASVS
◇V4.1 Access control enforcement
◇V4.2 Operation level access
◇V13.1 Generic webhook validation
Incidentes reais que ilustram Controle de Acesso Quebrado em produção.
Ex-funcionária explorou SSRF em WAF para acessar 169.254.169.254 e obter credenciais IAM. 106 milhões de registros exfiltrados. A lição: qualquer fetch de URL user-controlled em cloud é candidato a A01.
Padrões vulneráveis e correções do Cofre de Código mapeados para A01.
A01CWE-639Python/FastAPI
IDOR em API REST
Padrão BOLA — derive identity do token, não do path.
@app.get('/orders/{order_id}')
def get_order(order_id, user=Depends(auth)):
o = db.get_order(order_id)
if o.user_id != user.id: raise HTTPException(403)
return o
A01CWE-862Go
Missing Authorization middleware
Deny-by-default: rotas sensíveis atrás de middleware explícito.
Ambientes cloud com buckets públicos, headers de segurança ausentes, CORS * e painéis de administração expostos compõem a maior parte dos achados em auditorias de configuração. O Verizon DBIR 2024 atribui cerca de 15% dos incidentes web a misconfiguration.
CWE-16CWE-200CWE-1188
vs 2021Subiu de A05:2021 para A02:2025 — reflexo de adoção cloud sem baseline.
Pontos-chave
Ambientes cloud com buckets públicos, headers de segurança ausentes, CORS * e painéis de administração expostos compõem a maior parte dos achados em auditorias de configuração. O V…
CWEs centrais: CWE-16, CWE-200, CWE-1188
Subiu de A05:2021 para A02:2025 — reflexo de adoção cloud sem baseline.
CIS hardening automatizado no CI
CSP restritiva com nonce
Desabilitar métodos HTTP desnecessários
Conceitos
Visão geral
Ambientes cloud com buckets públicos, headers de segurança ausentes, CORS * e painéis de administração expostos compõem a maior parte dos achados em auditorias de configuração. O Verizon DBIR 2024 atribui cerca de 15% dos incidentes web a misconfiguration.
Contexto técnico
Diferente de vulnerabilidade de código, misconfiguration é corrigida por IaC, policy gates e hardening automatizado — mas só funciona se o baseline for testado continuamente.
Impacto e prevalência
Juice Shop expõe diretórios /ftp, /encryptionkeys e package.json acessíveis — simulando deploy onde static files e artefatos de build ficaram no docroot.
Ecossistema e labs
OWASP 2025: subiu de #5 (2021) para #2 — 3,00% das apps com falha em uma das 16 CWEs. Tendência explicada pelo aumento de comportamento configurável (cloud, K8s, feature flags) sem baseline automatizado.
Como o ataque funciona
Scan de superfície (headers, buckets, /.git) → misconfig expõe credencial ou log → pivot para acesso privilegiado ou vazamento em massa.
Causas raiz frequentes
Defaults inseguros em cloud, K8s e frameworks
Headers de segurança não configurados
Secrets em repositório ou ConfigMap
Superfície de admin/debug exposta em produção
Exemplos de código · vulnerável → correção
A02CWE-200Kubernetes
Secret em ConfigMap
15% incidentes web — misconfig (Verizon DBIR 2024).
Ambientes cloud com buckets públicos, headers de segurança ausentes, CORS * e painéis de administração expostos compõem a maior parte dos achados em auditorias de configuração. O Verizon DBIR 2024 atribui cerca de 15% dos incidentes web a misconfiguration.
Diferente de vulnerabilidade de código, misconfiguration é corrigida por IaC, policy gates e hardening automatizado — mas só funciona se o baseline for testado continuamente.
Listas configuradas como públicas expuseram PII, dados de COVID e informações corporativas. Não houve exploit sofisticado — apenas default inseguro não revisado em escala.
Diferente de bug lógico, configuração insegura responde a baseline automatizado: Terraform plan com OPA, AWS Config, K8s admission controllers. O DBIR atribui ~15% dos ataques web a misconfiguration.
Cerca de 15% dos ataques web analisados no DBIR envolvem misconfiguration — buckets públicos, permissões excessivas, headers ausentes. A02 subiu para #2 no OWASP 2025 porque cloud e SaaS multiplicaram superfície configurável.
CWEs relacionadas
◎Detecção
◈Scanner CSP/headers (Mozilla Observatory)
◈CIS Benchmark compliance
◈Enumeração de superfície (ffuf, amass)
◈Review de Terraform/CloudFormation
⚡Testes WSTG
▸WSTG-CONF-01: Network infrastructure
▸WSTG-CONF-02: Security headers
▸WSTG-CONF-06: Test HTTP methods
▸WSTG-CONF-07: HSTS
✓ASVS
◇V14.4 HTTP security headers
◇V14.2 Dependency configuration
◇V1.1 Secure SDLC
Incidentes reais que ilustram Configuração Insegura em produção.
Listas configuradas como públicas expuseram PII, dados de COVID e informações corporativas. Não houve exploit sofisticado — apenas default inseguro não revisado em escala.
Padrões vulneráveis e correções do Cofre de Código mapeados para A02.
A02CWE-200Kubernetes
Secret em ConfigMap
15% incidentes web — misconfig (Verizon DBIR 2024).
Categoria nova em 2025, absorvendo 'Vulnerable Components' e expandindo para pipeline, dependências transitivas e integridade de build. SolarWinds (2020) e XZ Utils (2024) demonstram que um único artefato comprometido escala para milhares de vítimas.
CWE-829CWE-494CWE-502
vs 2021Nova categoria — separa componente vulnerável de falha sistêmica de supply chain.
Pontos-chave
Categoria nova em 2025, absorvendo 'Vulnerable Components' e expandindo para pipeline, dependências transitivas e integridade de build. SolarWinds (2020) e XZ Utils (2024) demonstr…
CWEs centrais: CWE-829, CWE-494, CWE-502
Nova categoria — separa componente vulnerável de falha sistêmica de supply chain.
SBOM CycloneDX em cada release
Sigstore para assinatura de artefatos
Renovate com auto-merge só se CVE=0
Conceitos
Visão geral
Categoria nova em 2025, absorvendo 'Vulnerable Components' e expandindo para pipeline, dependências transitivas e integridade de build. SolarWinds (2020) e XZ Utils (2024) demonstram que um único artefato comprometido escala para milhares de vítimas.
Contexto técnico
SBOM não é checklist: sem ele, incident response não sabe o que patchar. SLSA nível 3+ exige proveniência assinada e build hermético.
Impacto e prevalência
No Juice Shop, package.json declara versões vulneráveis de propósito — exercício de correlacionar advisory npm com CVE e CVSS.
Ecossistema e labs
OWASP 2025: categoria com 5 CWEs — menor presença nos dados de teste, mas maiores scores médios de exploit e impacto nas CVEs associadas. Vencedora da pesquisa comunitária; testes automatizados ainda não capturam pipeline/build compromise em escala.
Como o ataque funciona
Comprometer maintainer ou pipeline CI → inserir artefato malicioso → consumidores instalam update → RCE ou backdoor em escala.
Causas raiz frequentes
Dependências sem inventário (SBOM) ou pin de versão
Pipeline CI com permissões excessivas
Artefatos sem assinatura ou proveniência
Confiança cega em pacotes npm/PyPI sem auditoria
Exemplos de código · vulnerável → correção
A03CWE-829Node/npm
Dependência não verificada — typosquat
event-stream (2018) e XZ Utils (2024) — supply chain em maintainer/dep.
Categoria nova em 2025, absorvendo 'Vulnerable Components' e expandindo para pipeline, dependências transitivas e integridade de build. SolarWinds (2020) e XZ Utils (2024) demonstram que um único artefato comprometido escala para milhares de vítimas.
SBOM não é checklist: sem ele, incident response não sabe o que patchar. SLSA nível 3+ exige proveniência assinada e build hermético.
Código malicioso inserido no pipeline de build do Orion. 18.000+ organizações instalaram o update confiando na assinatura digital. Supply chain destrói a premissa 'confie no vendor'.
Backdoor em liblzma após anos de pressão sobre maintainer solo. Detectado por anomalia em sshd, não por scanner de dependências. Ameaça a open source sob-financiado entrou no TOP 25 via A03:2025.
SLSA (Supply-chain Levels for Software Artifacts) define níveis de maturidade: script build, build service, hermético, dois pontos de revisão. SolarWinds e XZ Utils falharam em múltiplos níveis — não só «dependência velha».
— OpenSSF · SLSA framework
Na prática
SBOM em todo release
Assinatura de artefato
Política de dependência pinada
CWEs relacionadas
◎Detecção
◈OSV-Scanner / Dependency-Track no CI
◈Verificação de hash de releases
◈Monitoramento de typosquatting
◈Audit de pipeline permissions
⚡Testes WSTG
▸WSTG-CONF-04: Review old backup files
▸Dependency composition analysis
▸Verify package lock integrity
✓ASVS
◇V14.2.1 Dependency inventory
◇V1.14 Build pipeline security
Incidentes reais que ilustram Falhas na Cadeia de Suprimentos em produção.
Código malicioso inserido no pipeline de build do Orion. 18.000+ organizações instalaram o update confiando na assinatura digital. Supply chain destrói a premissa 'confie no vendor'.
Backdoor em liblzma após anos de pressão sobre maintainer solo. Detectado por anomalia em sshd, não por scanner de dependências. Ameaça a open source sob-financiado entrou no TOP 25 via A03:2025.
Padrões vulneráveis e correções do Cofre de Código mapeados para A03.
A03CWE-829Node/npm
Dependência não verificada — typosquat
event-stream (2018) e XZ Utils (2024) — supply chain em maintainer/dep.
Dados sensíveis sem proteção em trânsito ou repouso: TLS 1.0, MD5 para senhas, JWT sem validação de algoritmo. IBM Cost of a Data Breach 2024: US$ 4,88M de custo médio global.
CWE-327CWE-328CWE-798CWE-311
vs 2021Era A02:2021 — reposicionada após misconfiguration subir.
Pontos-chave
Dados sensíveis sem proteção em trânsito ou repouso: TLS 1.0, MD5 para senhas, JWT sem validação de algoritmo. IBM Cost of a Data Breach 2024: US$ 4,88M de custo médio global.
CWEs centrais: CWE-327, CWE-328, CWE-798, CWE-311
Era A02:2021 — reposicionada após misconfiguration subir.
TLS 1.3 only + HSTS preload
Argon2id cost factor calibrado
KMS com rotação automática
Conceitos
Visão geral
Dados sensíveis sem proteção em trânsito ou repouso: TLS 1.0, MD5 para senhas, JWT sem validação de algoritmo. IBM Cost of a Data Breach 2024: US$ 4,88M de custo médio global.
Contexto técnico
lib/insecurity.ts do Juice Shop usa MD5 para hash de senha — violação direta do ASVS. Localize a função hash() e proponha Argon2id.
Impacto e prevalência
Criptografia mal aplicada é pior que ausência: transmite falsa sensação de segurança em auditorias superficiais.
Ecossistema e labs
OWASP 2025: caiu de #2 para #4 — 3,80% das apps com uma das 32 CWEs de falha criptográfica. Frequentemente resulta em exposição de dados sensíveis ou comprometimento total do sistema.
Como o ataque funciona
Tráfego TLS fraco ou hash quebrado (MD5) → offline crack ou interceptação → reutilização de credencial → acesso indevido.
Causas raiz frequentes
Algoritmos obsoletos (MD5, SHA1, DES)
TLS legado ou certificados mal gerenciados
Secrets hardcoded ou em logs
JWT sem validação de algoritmo, audience e expiração
Exemplos de código · vulnerável → correção
A04CWE-327Python
MD5 para senha
Juice Shop insecurity.ts usa MD5 — mesmo antipadrão.
hashlib.md5(password.encode()).hexdigest()
ph.hash(password) # Argon2 via argon2-cffi
# verify: ph.verify(hash, password)
Dados sensíveis sem proteção em trânsito ou repouso: TLS 1.0, MD5 para senhas, JWT sem validação de algoritmo. IBM Cost of a Data Breach 2024: US$ 4,88M de custo médio global.
Criptografia mal aplicada é pior que ausência: transmite falsa sensação de segurança em auditorias superficiais.
Juice Shop usa MD5 em lib/insecurity.ts de propósito. Em produção, bcrypt/Argon2id com salt único e pepper em vault são baseline. Criptografia errada não precisa de atacante ativo — basta vazamento offline.
«Anyone can invent a security system that they cannot break»
Criptografia caseira e algoritmos obsoletos (MD5, RC4, ECB) aparecem em legado e em labs como insecurity.ts. A04 não exige quebrar AES — exige identificar crypto errada antes do vazamento offline.
CWEs relacionadas
◎Detecção
◈Testssl.sh / sslyze
◈Auditoria de algoritmos em código
◈Busca de secrets (gitleaks, trufflehog)
◈Validação JWT (alg, exp, iss)
⚡Testes WSTG
▸WSTG-CRYP-01: Weak transport
▸WSTG-CRYP-03: Sensitive data exposure
▸WSTG-ATHN-10: Weak password policy
✓ASVS
◇V2.4 Credential storage
◇V6.2 Algorithms
◇V3.5 Token validation
Incidentes reais que ilustram Falhas Criptográficas em produção.
Equifax, 2017
147M registrosTLS + patch
RockYou2024
10B senhasAgregado leak
First American, 2019
885M docsSem auth em portal
Uber, 2016
57M usuáriosAWS keys em Git
Padrões vulneráveis e correções do Cofre de Código mapeados para A04.
A04CWE-327Python
MD5 para senha
Juice Shop insecurity.ts usa MD5 — mesmo antipadrão.
hashlib.md5(password.encode()).hexdigest()
ph.hash(password) # Argon2 via argon2-cffi
# verify: ph.verify(hash, password)
CWE-79 (XSS) lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. SQLi permanece em routes/login.ts e routes/search.ts do Juice Shop com concatenação direta.
CWE-79CWE-89CWE-78CWE-94CWE-77CWE-20
vs 2021Desceu de A03:2021 mas CWE-79 no topo MITRE prova que o problema persiste.
Pontos-chave
CWE-79 (XSS) lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. SQLi permanece em routes/login.ts e routes/search.ts do Juice Shop com concatenação …
CWEs centrais: CWE-79, CWE-89, CWE-78, CWE-94
Desceu de A03:2021 mas CWE-79 no topo MITRE prova que o problema persiste.
ORM/param queries exclusivamente
CSP + HttpOnly cookies
Escape por contexto (HTML/JS/URL)
Conceitos
Visão geral
CWE-79 (XSS) lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. SQLi permanece em routes/login.ts e routes/search.ts do Juice Shop com concatenação direta.
Contexto técnico
Injeção não se limita a SQL: LDAP, OS command, template e header injection compartilham a mesma raiz — dados não confiáveis interpretados como comando.
Impacto e prevalência
Prepared statements e context-aware encoding resolvem a maioria dos casos; o gap está em ORMs mal usados e em microsserviços que montam queries dinâmicas.
Ecossistema e labs
OWASP 2025: desceu de #3 para #5, mas permanece uma das categorias mais testadas — 38 CWEs e o maior volume de CVEs associadas. Espectro de XSS (alta frequência/baixo impacto unitário) a SQLi (baixa frequência/alto impacto).
Como o ataque funciona
Parâmetro refletido ou armazenado → payload de injeção (SQL, XSS, comando) → bypass de autenticação, execução ou exfiltração de dados.
Causas raiz frequentes
Concatenação de SQL ou comandos de shell
Encoding único para todos os contextos HTML/JS/URL
ORM com raw queries em input do usuário
Confiança em WAF sem correção na origem
Exemplos de código · vulnerável → correção
A05CWE-89Python/Flask
SQLi em query raw
Mesmo com ORM, .raw() e text() com f-string reintroduzem CWE-89.
cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")
cursor.execute('SELECT * FROM users WHERE email = %s', (email,))
A05CWE-89Node/Sequelize
SQLi — Juice Shop login.ts
Padrão exato do Juice Shop — concatenação em template literal.
sequelize.query(`SELECT * FROM Users WHERE email = '${email}'`)
models.sequelize.query(`SELECT * FROM Products WHERE ((name LIKE '%${criteria}%' OR description LIKE '%${criteria}%') AND deletedAt IS NULL) ORDER BY name`)
CWE-79 (XSS) lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. SQLi permanece em routes/login.ts e routes/search.ts do Juice Shop com concatenação direta.
Injeção não se limita a SQL: LDAP, OS command, template e header injection compartilham a mesma raiz — dados não confiáveis interpretados como comando.
Prepared statements e context-aware encoding resolvem a maioria dos casos; o gap está em ORMs mal usados e em microsserviços que montam queries dinâmicas.
Cl0p explorou SQL injection em Progress MOVEit Transfer. Mais de 2.500 organizações afetadas — BBC, British Airways, Maximus. Patch tardio + superfície exposta na internet = breach em escala industrial.
Apache Struts OGNL injection (CVE-2017-5638) conhecida e patcheável. 147 milhões de registros. Injection aqui é falha de processo (vuln management) tanto quanto de código.
Injection caiu de #3 para #5 — mas XSS lidera o CWE
A categoria Injection permanece crítica: mais CVEs associadas que qualquer outra. XSS (CWE-79) tem frequência altíssima; SQLi mantém impacto desproporcional em dados estruturados.
CWEs relacionadas
◎Detecção
◈SAST para fluxos source→sink
◈DAST com payloads OWASP
◈IAST em staging
◈WAF como camada compensatória
⚡Testes WSTG
▸WSTG-INPV-01: Reflected XSS
▸WSTG-INPV-02: Stored XSS
▸WSTG-INPV-05: SQL injection
▸WSTG-INPV-12: Command injection
✓ASVS
◇V5.1 Input validation
◇V5.3 Output encoding
◇V13.2 REST injection
Incidentes reais que ilustram Injeção em produção.
Cl0p explorou SQL injection em Progress MOVEit Transfer. Mais de 2.500 organizações afetadas — BBC, British Airways, Maximus. Patch tardio + superfície exposta na internet = breach em escala industrial.
Apache Struts OGNL injection (CVE-2017-5638) conhecida e patcheável. 147 milhões de registros. Injection aqui é falha de processo (vuln management) tanto quanto de código.
Padrões vulneráveis e correções do Cofre de Código mapeados para A05.
A05CWE-89Python/Flask
SQLi em query raw
Mesmo com ORM, .raw() e text() com f-string reintroduzem CWE-89.
cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")
cursor.execute('SELECT * FROM users WHERE email = %s', (email,))
A05CWE-89Node/Sequelize
SQLi — Juice Shop login.ts
Padrão exato do Juice Shop — concatenação em template literal.
sequelize.query(`SELECT * FROM Users WHERE email = '${email}'`)
models.sequelize.query(`SELECT * FROM Products WHERE ((name LIKE '%${criteria}%' OR description LIKE '%${criteria}%') AND deletedAt IS NULL) ORDER BY name`)
Falhas arquiteturais: sem rate limit, recuperação de senha previsível, lógica de cupom explorável. Corrigir em produção custa até 100× mais que no design (NIST SSDF).
CWE-352CWE-770CWE-840CWE-20
vs 2021Mantido conceito de A04:2021 com ênfase em abuse cases.
Pontos-chave
Falhas arquiteturais: sem rate limit, recuperação de senha previsível, lógica de cupom explorável. Corrigir em produção custa até 100× mais que no design (NIST SSDF).
CWEs centrais: CWE-352, CWE-770, CWE-840, CWE-20
Mantido conceito de A04:2021 com ênfase em abuse cases.
Threat Dragon no repositório
Rate limit por IP+user
CSRF token em mutações
Conceitos
Visão geral
Falhas arquiteturais: sem rate limit, recuperação de senha previsível, lógica de cupom explorável. Corrigir em produção custa até 100× mais que no design (NIST SSDF).
Contexto técnico
Threat modeling com STRIDE ou PASTA antes do sprint 1. Abuse user stories no backlog.
Impacto e prevalência
Juice Shop: CAPTCHA só no client, cupons previsíveis, redirect allowlist por substring — todos defeitos de design, não de implementação pontual.
Ecossistema e labs
OWASP 2025: caiu de #4 para #6 — a indústria avançou em threat modeling (NIST SSDF PW.1), mas abuse cases ainda escapam de scanners. PortSwigger: ~40% dos pentests encontram business logic flaws.
Como o ataque funciona
Mapear fluxos de negócio → abusar ausência de rate limit, CSRF ou regras de cupom → impacto financeiro ou escalação lógica.
Causas raiz frequentes
Backlog sem abuse cases ou threat modeling
Mutações state-changing sem anti-CSRF
CAPTCHA ou rate limit só no client
Regras de negócio não validadas server-side
Exemplos de código · vulnerável → correção
A06CWE-352Express
POST sem CSRF token
SameSite=Strict em cookies de sessão + token synchronizer.
Falhas arquiteturais: sem rate limit, recuperação de senha previsível, lógica de cupom explorável. Corrigir em produção custa até 100× mais que no design (NIST SSDF).
Threat modeling com STRIDE ou PASTA antes do sprint 1. Abuse user stories no backlog.
Insecure Design (A06) captura falhas que nenhum WAF corrige: preço negativo, cupom reutilizável, race em estoque, CSRF em ação irreversível. O custo de redesenhar após produção é ordens de magnitude maior.
Shostack enfatiza que threat model não é diagrama bonito — é atividade repetida que alimenta design seguro (A06). STRIDE, attack trees e misuse cases devem aparecer no backlog, não só no Confluence.
Design inseguro inclui ausência de rate limit, workflows sem compensating control e confiança no client-side. WAF e patch não corrigem cupom infinito, race condition ou lógica de preço invertida.
Na prática
Abuse cases no refinamento
Threat model por epic
Revisão de UX de fluxos críticos
CWEs relacionadas
◎Detecção
◈Review de abuse cases
◈Modelagem de ameaças documentada
◈Análise de lógica de negócio (BUA)
◈Rate limit metrics
⚡Testes WSTG
▸WSTG-BUSL-01: Business logic
▸WSTG-SESS-05: CSRF
▸WSTG-APIT-01: API business flow
✓ASVS
◇V1.1 Secure SDLC
◇V4.2 Anti-automation
◇V11.1 Business logic
Incidentes reais que ilustram Design Inseguro em produção.
Twitter 2020
Contas verificadasAdmin tool design
Uber 2016
57M usersHardcoded AWS creds
Robinhood CSRF, 2019
Trades não autorizadosSem anti-CSRF
Padrões vulneráveis e correções do Cofre de Código mapeados para A06.
A06CWE-352Express
POST sem CSRF token
SameSite=Strict em cookies de sessão + token synchronizer.
CWE-306 subiu 4 posições no TOP 25 2025. Credential stuffing representa 16% dos breaches no Verizon DBIR. MFA reduz risco em 99,2% segundo Microsoft — mas implementação fraca de JWT e session anula o ganho.
CWE-306CWE-287CWE-384CWE-521
vs 2021Mantido de A07:2021.
Pontos-chave
CWE-306 subiu 4 posições no TOP 25 2025. Credential stuffing representa 16% dos breaches no Verizon DBIR. MFA reduz risco em 99,2% segundo Microsoft — mas implementação fraca de JW…
CWEs centrais: CWE-306, CWE-287, CWE-384, CWE-521
Mantido de A07:2021.
MFA obrigatório (FIDO2/WebAuthn)
Bloqueio progressivo + CAPTCHA server-side
Rotação de session ID pós-login
Conceitos
Visão geral
CWE-306 subiu 4 posições no TOP 25 2025. Credential stuffing representa 16% dos breaches no Verizon DBIR. MFA reduz risco em 99,2% segundo Microsoft — mas implementação fraca de JWT e session anula o ganho.
Contexto técnico
Juice Shop: weak passwords hardcoded, bcrypt rounds=1, JWT com private key no repo — três falhas distintas em lib/insecurity.ts.
Impacto e prevalência
Autenticação ≠ autorização. Esta categoria cobre identidade; A01 cobre o que o identificado pode fazer.
Ecossistema e labs
OWASP 2025: mantém #7 com 36 CWEs. Frameworks padronizados (OAuth2/OIDC, Spring Security) reduzem ocorrências, mas MFA fraco e session management incorreto persistem — CWE-306 subiu 4 posições no MITRE TOP 25.
Como o ataque funciona
Credencial obtida (phishing, leak, stuffing) → MFA fraco ou JWT mal validado → sessão fixada → impersonação.
Causas raiz frequentes
Política de senha fraca ou hashing rápido
MFA opcional ou implementação TOTP frágil
Sessão não rotacionada após login
OAuth/OIDC com fluxos deprecados
Exemplos de código · vulnerável → correção
A07CWE-306Node/Express
Rota admin sem autenticação
Juice Shop appConfiguration.ts — CWE-306 subiu +4 no MITRE 2025.
CWE-306 subiu 4 posições no TOP 25 2025. Credential stuffing representa 16% dos breaches no Verizon DBIR. MFA reduz risco em 99,2% segundo Microsoft — mas implementação fraca de JWT e session anula o ganho.
Autenticação ≠ autorização. Esta categoria cobre identidade; A01 cobre o que o identificado pode fazer.
Comprometimento do sistema de suporte permitiu acesso a sessões de clientes enterprise. Quem guarda identidade centralizada concentra risco — MFA, least privilege e segregação de ambientes de suporte são mandatórios.
NIST recomenda MFA, rate limiting e detecção de credenciais comprometidas. A07 cobre JWT fraco, session fixation, credential stuffing e ausência de lockout — Juice Shop concentra vários em lib/insecurity.ts.
Hunt mantém o maior agregador público de breaches — credential stuffing funciona porque usuários reutilizam senhas e sistemas não têm rate limit nem MFA. Change Healthcare e Snowflake são casos em escala enterprise.
— Troy Hunt
14B+Contas HIBP
A07OWASP
CWEs relacionadas
◎Detecção
◈Análise de política de senha
◈Teste de session fixation
◈JWT alg confusion test
◈MFA bypass attempts
⚡Testes WSTG
▸WSTG-ATHN-01: Credentials
▸WSTG-ATHN-03: Session management
▸WSTG-ATHN-09: Password reset
✓ASVS
◇V2.1 Password security
◇V3.2 Session management
◇V3.5 Token-based auth
Incidentes reais que ilustram Falhas de Autenticação em produção.
Comprometimento do sistema de suporte permitiu acesso a sessões de clientes enterprise. Quem guarda identidade centralizada concentra risco — MFA, least privilege e segregação de ambientes de suporte são mandatórios.
Padrões vulneráveis e correções do Cofre de Código mapeados para A07.
A07CWE-306Node/Express
Rota admin sem autenticação
Juice Shop appConfiguration.ts — CWE-306 subiu +4 no MITRE 2025.
Updates sem assinatura, CI/CD sem proteção, desserialização insegura. CWE-502 tem 11 entradas no CISA KEV. fileUpload.ts executa yaml.load dentro de vm.runInContext — vetor de negação de serviço e RCE.
CWE-502CWE-345CWE-829
vs 2021Mantido de A08:2021.
Pontos-chave
Updates sem assinatura, CI/CD sem proteção, desserialização insegura. CWE-502 tem 11 entradas no CISA KEV. fileUpload.ts executa yaml.load dentro de vm.runInContext — vetor de nega…
CWEs centrais: CWE-502, CWE-345, CWE-829
Mantido de A08:2021.
Assinatura GPG/Sigstore em releases
Proibir desserialização de input externo
SRI em assets
Conceitos
Visão geral
Updates sem assinatura, CI/CD sem proteção, desserialização insegura. CWE-502 tem 11 entradas no CISA KEV. fileUpload.ts executa yaml.load dentro de vm.runInContext — vetor de negação de serviço e RCE.
Contexto técnico
Integridade de dados entre microsserviços (mTLS, assinatura de mensagens) entra nesta categoria em arquiteturas distribuídas.
Impacto e prevalência
Codecov (2021) provou que comprometer o pipeline equivale a comprometer todos os consumidores do artefato.
Ecossistema e labs
OWASP 2025: mantém #8 — foco em integridade de software/dados em runtime, abaixo da cadeia de suprimentos (A03). 643 CWEs únicos mapeados a CVEs no NVD (vs 241 em 2021) ampliam a superfície de análise.
Como o ataque funciona
Input não confiável desserializado ou update sem verificação → integridade do runtime comprometida → persistência ou RCE.
Causas raiz frequentes
Desserialização de input externo
Updates sem verificação de assinatura
CDN sem Subresource Integrity
Integridade entre microsserviços assumida por rede interna
Exemplos de código · vulnerável → correção
A08CWE-502Java
Desserialização insegura
Commons Collections gadget chain — ysoserial PoC.
ObjectInputStream ois = new ObjectInputStream(req.getInputStream());
Object obj = ois.readObject();
// Use JSON + schema validation
UserDto u = mapper.readValue(req.getInputStream(), UserDto.class);
// ou ObjectInputFilter allowlist
Updates sem assinatura, CI/CD sem proteção, desserialização insegura. CWE-502 tem 11 entradas no CISA KEV. fileUpload.ts executa yaml.load dentro de vm.runInContext — vetor de negação de serviço e RCE.
Integridade de dados entre microsserviços (mTLS, assinatura de mensagens) entra nesta categoria em arquiteturas distribuídas.
Codecov (2021) provou que comprometer o pipeline equivale a comprometer todos os consumidores do artefato.
Atacante alterou bash uploader para exfiltrar secrets de CI. 29.000+ ambientes afetados. Integridade de artefatos de build (A08) é extensão direta de supply chain (A03).
«Integrity of the tooling pipeline is foundational»
Após o breach, a lição publicada foi verificar integridade de scripts de CI/CD — hash, assinatura, ambiente isolado. Um único bash uploader modificado exfiltrou secrets de milhares de pipelines.
CWEs relacionadas
◎Detecção
◈Verificação de assinatura de update
◈Análise de desserialização
◈Pipeline permission audit
◈Subresource Integrity em CDN
⚡Testes WSTG
▸WSTG-INPV-11: Code injection
▸WSTG-CLNT-12: Subresource integrity
✓ASVS
◇V1.14 CI/CD security
◇V12.3 File integrity
Incidentes reais que ilustram Falhas de Integridade em produção.
Atacante alterou bash uploader para exfiltrar secrets de CI. 29.000+ ambientes afetados. Integridade de artefatos de build (A08) é extensão direta de supply chain (A03).
Padrões vulneráveis e correções do Cofre de Código mapeados para A08.
A08CWE-502Java
Desserialização insegura
Commons Collections gadget chain — ysoserial PoC.
ObjectInputStream ois = new ObjectInputStream(req.getInputStream());
Object obj = ois.readObject();
// Use JSON + schema validation
UserDto u = mapper.readValue(req.getInputStream(), UserDto.class);
// ou ObjectInputFilter allowlist
IBM 2024: automação de resposta reduz custo de breach em US$ 1,76M. Sem log correlacionado, MTTD mede meses — Marriott levou 4 anos.
CWE-778CWE-117CWE-532CWE-200
vs 2021Logging and Alerting — ênfase em alertas acionáveis, não só em gravar.
Pontos-chave
IBM 2024: automação de resposta reduz custo de breach em US$ 1,76M. Sem log correlacionado, MTTD mede meses — Marriott levou 4 anos.
CWEs centrais: CWE-778, CWE-117, CWE-532, CWE-200
Logging and Alerting — ênfase em alertas acionáveis, não só em gravar.
JSON estruturado: who/what/when/outcome
Centralização em SIEM com retention
Alertas com runbook linkado
Conceitos
Visão geral
IBM 2024: automação de resposta reduz custo de breach em US$ 1,76M. Sem log correlacionado, MTTD mede meses — Marriott levou 4 anos.
Contexto técnico
Juice Shop grava tokens em access.log acessível — dupla falha: logging inseguro (exposição) + ausência de alerta.
Impacto e prevalência
LGPD Art. 46 e GDPR Art. 32 exigem capacidade de detectar incidentes — logging não é opcional em programas de segurança.
Ecossistema e labs
OWASP 2025: mantém #9 — sub-representado em dados automatizados; promovido pela pesquisa comunitária. Nome atualizado para enfatizar alerting: log sem ação tem valor mínimo em resposta a incidentes (IBM: automação reduz ciclo em 108 dias).
Como o ataque funciona
Ataque sem correlação em logs → ausência de alerta → detecção tardia → impacto regulatório e operacional.
Causas raiz frequentes
Logs sem estrutura, retenção ou proteção
Tokens e PII gravados em claro
SIEM sem regras acionáveis
Ausência de runbooks ligados a alertas
Exemplos de código · vulnerável → correção
A09CWE-532Java
Log com PII/token
Juice Shop access.log expõe Bearer tokens.
log.info("Login OK user=" + user + " token=" + jwt)
log.info("Login OK userId={}", user.getId()); // MDC, sem token
ANPD e reguladores europeus esperam capacidade de detectar incidentes — não apenas armazenar logs. A09:2025 renomeia a categoria para enfatizar alerting, não archiving.
Sem detecção, o atacante permanece meses no ambiente (MTTI de 277 dias no IBM). A09:2025 renomeia a categoria para Logging and Alerting — armazenar terabyte de log sem alerta não é controle.
Na prática
Alertas com owner e runbook
Correlação auth + data access
Teste de alerta trimestral
CWEs relacionadas
◎Detecção
◈SIEM rules para auth failures
◈UEBA em contas privilegiadas
◈Audit trail imutável
◈Tabletop com logs reais
⚡Testes WSTG
▸WSTG-LOGG-01: Log review
▸WSTG-LOGG-02: Log injection
✓ASVS
◇V7.1 Log content
◇V7.2 Log protection
◇V7.4 Alerting
Incidentes reais que ilustram Falhas de Logging e Alerta em produção.
Target, 2013
40M cartõesAlertas ignorados
Marriott, 2018
500M registros4 anos MTTD
SolarWinds, 2020
Detecção tardiaLog insuficiente
Padrões vulneráveis e correções do Cofre de Código mapeados para A09.
A09CWE-532Java
Log com PII/token
Juice Shop access.log expõe Bearer tokens.
log.info("Login OK user=" + user + " token=" + jwt)
log.info("Login OK userId={}", user.getId()); // MDC, sem token
2 labs reproduzíveis no Juice Shop local — código real do repositório oficial.
Nova em 2025. Stack traces em HTTP 500, fail-open em falha de auth, race conditions e estados parciais após timeout. Equifax (Struts) e Heartbleed são casos de exceção mal tratada com impacto nacional.
CWE-209CWE-787CWE-416CWE-125CWE-476CWE-400
vs 2021Nova — substitui SSRF no Top 10 (SSRF continua em CWE-918 #22).
Pontos-chave
Nova em 2025. Stack traces em HTTP 500, fail-open em falha de auth, race conditions e estados parciais após timeout. Equifax (Struts) e Heartbleed são casos de exceção mal tratada …
CWEs centrais: CWE-209, CWE-787, CWE-416, CWE-125
Nova — substitui SSRF no Top 10 (SSRF continua em CWE-918 #22).
Mensagem genérica ao cliente
Fail-closed em authZ
Circuit breaker + timeout
Conceitos
Visão geral
Nova em 2025. Stack traces em HTTP 500, fail-open em falha de auth, race conditions e estados parciais após timeout. Equifax (Struts) e Heartbleed são casos de exceção mal tratada com impacto nacional.
Contexto técnico
CWEs de memory corruption (787, 416, 125) dominam em código nativo — relevante para quem também desenvolve em C/C++ embarcado.
Impacto e prevalência
Diferencie de A02: aqui o código executa, mas o caminho de erro vaza informação ou deixa o sistema em estado inseguro.
Ecossistema e labs
OWASP 2025: categoria nova com 24 CWEs — error handling, fail-open, race conditions e estados inconsistentes após exceções. Substitui SSRF no Top 10 (SSRF permanece em A01/CWE-918 #22 MITRE). CISA KEV: 12 CVEs ativos em CWE-787, 14 em CWE-416.
Como o ataque funciona
Condição de erro (input malformado, race, OOB) → stack trace ou fail-open → vazamento de schema/credencial ou crash/RCE.
Causas raiz frequentes
Stack traces e queries em respostas 500
Fail-open quando authZ ou validação falha
Código nativo sem sanitizers/fuzzing
Race conditions e estados parciais após timeout
Exemplos de código · vulnerável → correção
A10CWE-209Python
Stack trace ao cliente
Equifax Struts — erro verboso precedeu RCE.
except Exception as e:
return jsonify({"error": traceback.format_exc()})
models.sequelize.query(`SELECT * FROM Products WHERE ((name LIKE '%${criteria}%' OR description LIKE '%${criteria}%') AND deletedAt IS NULL) ORDER BY name`)
Nova em 2025. Stack traces em HTTP 500, fail-open em falha de auth, race conditions e estados parciais após timeout. Equifax (Struts) e Heartbleed são casos de exceção mal tratada com impacto nacional.
CWEs de memory corruption (787, 416, 125) dominam em código nativo — relevante para quem também desenvolve em C/C++ embarcado.
Diferencie de A02: aqui o código executa, mas o caminho de erro vaza informação ou deixa o sistema em estado inseguro.
OpenSSL TLS heartbeat permitiu leitura out-of-bounds de 64KB por request — chaves privadas, sessões, credenciais. A10 cobre error handling, fail-open e estados inconsistentes após exceção.
«Fail securely — assume every input will eventually be hostile»
Error handlers que fazem fail-open (liberam acesso em exceção), vazam stack trace ou deixam transação inconsistente são A10. Heartbleed mostrou que parsing de baixo nível também entra nesta categoria.
CWEs relacionadas
◎Detecção
◈Fuzzing de error paths
◈Verificar respostas 500 em produção
◈Static analysis memory safety
◈Crash reporting sem PII
⚡Testes WSTG
▸WSTG-ERRH-01: Error codes
▸WSTG-ERRH-02: Stack traces
✓ASVS
◇V7.4 Error handling
◇V14.5 Unhandled exceptions
Incidentes reais que ilustram Tratamento Incorreto de Exceções em produção.
OpenSSL TLS heartbeat permitiu leitura out-of-bounds de 64KB por request — chaves privadas, sessões, credenciais. A10 cobre error handling, fail-open e estados inconsistentes após exceção.
Padrões vulneráveis e correções do Cofre de Código mapeados para A10.
A10CWE-209Python
Stack trace ao cliente
Equifax Struts — erro verboso precedeu RCE.
except Exception as e:
return jsonify({"error": traceback.format_exc()})
models.sequelize.query(`SELECT * FROM Products WHERE ((name LIKE '%${criteria}%' OR description LIKE '%${criteria}%') AND deletedAt IS NULL) ORDER BY name`)
«Injection can occur in many contexts — SQL, LDAP, XPath, NoSQL, OS command, SMTP header, expression language.» O OWASP agrupa o risco de negócio; o CWE nomeia a fraqueza no código. A matriz que você acabou de ver une os dois.
Seacord enfatiza que CWE descreve classe de defeito — exploitabilidade depende de contexto, exposição e controles compensatórios. O TOP 25 MITRE prioriza prevalência em CVEs, não severidade no seu app específico.
— Robert C. Seacord · CERT
Top 10 CWE — score MITRE 2025
Quanto maior o score, mais CVEs reais usam essa fraqueza · 39.080 CVEs analisados
Como ler: Barras = score MITRE (quanto maior, mais prevalente em CVEs reais). Nomes completos ficam na legenda à direita.
XSS (CWE-79) tem score 60,38 — mais que o dobro do segundo colocado. Priorize correção e testes nessas 10 primeiras.
Ranking
↗ Interativo — passe o mouse ou clique na legenda
Quem mais subiu e desceu no ranking
Comparativo MITRE TOP 25 2025 vs 2024 · só fraquezas que mudaram de posição
Como ler: Centro = ranking 2024. Laranja à direita = subiu (mais crítica). Ciano à esquerda = desceu. Detalhes na legenda.
Maior queda: CWE-77 (−10 pos.). Maior subida: CWE-476 (+8). CWE-862 (+5) reforça o foco em autorização (A01 OWASP).
↑ Subiu — ficou mais crítica| ranking 2024↓ Desceu — menos crítica
Mudanças 2024→2025
↗ Interativo — passe o mouse ou clique na legenda
Top 10 — quem subiu e quem desceu
Posição atual no MITRE TOP 25 e mudança vs. edição 2024. Posição menor = mais crítica.
Como ler: Cada linha é uma fraqueza. A seta mostra se ganhou ou perdeu posições no ranking anual. Clique para abrir o painel completo.
CWE-79 (XSS) lidera com folga. Entre as 10 primeiras, CWE-862 e CWE-352 subiram — sinal de que falhas de autorização e CSRF seguem em alta.
§C·cwe
TOP 25 MITRE 2025
Clique em uma fraqueza para abrir o painel interativo — OWASP, labs, detecção e mitigação.
25 fraquezas · + Info abre guia completo · Simulador para prática · ←→ no modal
O ranking agrega CVEs globais. Sua aplicação pode ter CWE-352 (CSRF) frequente e CWE-787 rara. Use o score para priorizar estudo; use o repositório para priorizar sprint.
«Common Weakness Enumeration (CWE) is a community-developed list of software and hardware weakness types. It serves as a common language for describing the root cause of vulnerabilities.» Use ao lado do CVE: CVE é instância, CWE é classe.
Na prática
CVE → instância específica (patch)
CWE → padrão no código (fix pattern)
OWASP → risco de negócio (prioridade)
01CWE-79→ mantido
Cross-site Scripting (XSS)
Cross-site Scripting (XSS)
CWE-79 lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. A fraqueza nasce quando dados …
60.38
KEV 7
A05
02CWE-89↑ +1
Injeção SQL
SQL Injection
Segunda posição com score 28,72. A query SQL é montada por concatenação — o padrão clássico que prepared statements elim…
28.72
KEV 4
A05
03CWE-352↑ +1
Cross-Site Request Forgery (CSRF)
Cross-Site Request Forgery
Score 13,64. O browser da vítima envia request autenticado para ação que ela não intencionou. APIs que usam apenas cooki…
13.64
sem KEV
A06
04CWE-862↑ +5
Autorização Ausente
Missing Authorization
Subiu 5 posições — o maior salto do ranking 2025. O endpoint executa sem verificar se o caller tem permissão. Diferente …
13.28
sem KEV
A01
05CWE-787↓ -3
Escrita Fora dos Limites (OOB Write)
Out-of-bounds Write
Score 12,68 com 12 CVEs no KEV. Escrita além dos limites de buffer em C/C++. Base de RCE em software nativo, kernels e f…
12.68
KEV 12
A10
06CWE-22↓ -1
Path Traversal
Path Traversal
Score 8,99. Sequências ../ permitem leitura de arquivos fora do diretório permitido. Comum em download de relatórios, im…
8.99
KEV 10
A01
07CWE-416↑ +1
Use After Free
Use After Free
Score 8,47 com 14 KEV — classe dominante em exploits de browser e kernel. Ponteiro usado após memória liberada.
8.47
KEV 14
A10
08CWE-125↓ -2
Leitura Fora dos Limites (OOB Read)
Out-of-bounds Read
Score 7,88. Leitura além do buffer vaza memória adjacente — tokens, chaves, ponteiros para exploit chain.
7.88
KEV 3
A10
09CWE-78↓ -2
Injeção de Comando OS
OS Command Injection
Score 7,85 com 20 KEV — um dos mais explorados ativamente. Input passa para exec(), system(), popen() ou subprocess shel…
7.85
KEV 20
A05
10CWE-94↑ +1
Injeção de Código
Code Injection
Score 7,57. Input gera código executável — eval(), Function(), template engines server-side, EL injection.
7.57
KEV 7
A05
11CWE-120→ mantido
Buffer Overflow Clássico
Classic Buffer Overflow
Score 6,96. memcpy/strcpy sem verificação de tamanho — vulnerabilidade fundacional ensinada em sistemas operacionais.
6.96
sem KEV
A10
12CWE-434↓ -2
Upload Irrestrito de Arquivo
Unrestricted Upload
Score 6,87. Servidor aceita .php, .jsp, .aspx sem validar tipo, conteúdo e local de armazenamento.
6.87
KEV 4
A01A08
13CWE-476↑ +8
Desreferência de Ponteiro NULL
NULL Pointer Dereference
Score 6,41 — subiu 8 posições, maior ascensão relativa. Crash por dereference de NULL — DoS ou, em casos raros, execução…
6.41
sem KEV
A10
14CWE-121→ mantido
Stack Buffer Overflow
Stack-based Buffer Overflow
Score 5,75. Overflow na pilha — permite sobrescrever return address para ROP chain.
5.75
KEV 4
A10
15CWE-502↑ +1
Desserialização de Dados Não Confiáveis
Deserialization of Untrusted Data
Score 5,23 com 11 KEV. Objeto desserializado de fonte não confiável executa código via magic methods ou gadgets.
5.23
KEV 11
A08
16CWE-122→ mantido
Heap Buffer Overflow
Heap-based Buffer Overflow
Score 5,21. Overflow no heap — exploração via heap spraying e metadata corruption.
5.21
KEV 6
A10
17CWE-863↑ +1
Autorização Incorreta
Incorrect Authorization
Score 4,14. Checagem existe mas está errada — lógica invertida, comparação == vs ===, role string case-sensitive, JWT cl…
4.14
KEV 4
A01
18CWE-20↓ -6
Validação de Entrada Inadequada
Improper Input Validation
Score 4,09 — desceu 6 posições mas continua transversal. Raiz de quase toda injeção: validação ausente, incompleta ou ap…
4.09
KEV 2
A05A06
19CWE-284→ mantido
Controle de Acesso Inadequado
Improper Access Control
Score 4,07. Política de acesso não restringe atores não autorizados — umbrella term que inclui RBAC mal configurado e AC…
4.07
KEV 1
A01
20CWE-200↓ -3
Exposição de Informação Sensível
Exposure of Sensitive Information
Score 4,01. Resposta HTTP, log ou erro expõe PII, tokens, stack traces ou dados de outros usuários.
4.01
KEV 1
A02A09
21CWE-306↑ +4
Autenticação Ausente
Missing Authentication
Score 3,47 com 11 KEV — subiu 4 posições. Função crítica acessível sem autenticação: admin panels, debug endpoints, APIs…
3.47
KEV 11
A07
22CWE-918↓ -3
Server-Side Request Forgery (SSRF)
Server-Side Request Forgery
Score 3,36. Servidor faz HTTP request para URL controlada pelo atacante — acessa metadata cloud (169.254.169.254), Redis…
3.36
sem KEV
A01
23CWE-77↓ -10
Injeção de Comando
Command Injection
Score 3,15 — desceu 10 posições mas ainda com 2 KEV. Generalização de injeção em interpreters de comando (não só OS shel…
3.15
KEV 2
A05
24CWE-639↑ +6
Bypass de Autorização via Chave do Usuário
Authorization Bypass via User Key
Score 2,62 — subiu 6 posições. ID controlado pelo usuário (userId, accountId, basketId) usado na query sem validar owner…
2.62
sem KEV
A01
25CWE-770↑ +1
Alocação Sem Limites
Allocation Without Limits
Score 2,54. Sem throttling: brute force de senha, account enumeration, resource exhaustion, expensive API calls ilimitad…
CWE-79 lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. A fraqueza nasce quando dados não confiáveis entram no DOM sem encoding adequado ao contexto (HTML, atributo, JavaScript, URL).
#01score 60.387 entradas no CISA KEV (exploração ativa)A05
Pontos-chave
CWE-79 lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. A fraqueza nasce quando dados não confiáveis entram no DOM sem encoding adequado ao contex…
Rank #1 · score MITRE 60.38
OWASP: A05
7 CVE(s) no CISA KEV — priorizar patch.
OWASP XSS Prevention Cheat Sheet por contexto
CSP: default-src 'self'; script-src 'nonce-…'
HttpOnly + Secure + SameSite em cookies
Conceitos
Visão geral
CWE-79 lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. A fraqueza nasce quando dados não confiáveis entram no DOM sem encoding adequado ao contexto (HTML, atributo, JavaScript, URL).
Contexto técnico
Existem três variantes principais: reflected (resposta imediata), stored (persistido no servidor) e DOM-based (sink no client, sem round-trip). Em SPAs Angular/React, DOM XSS via bypass de sanitização é o vetor mais comum em pentests corporativos.
Impacto e prevalência
No ecossistema Juice Shop, buscas e feedbacks renderizam input sem escape. O challenge DOM XSS demonstra que sanitização parcial é pior que ausência — passa falso negativo em scanners.
Como o ataque funciona
Dado não confiável entra no DOM → encoding inadequado ao contexto → execução de script → roubo de sessão ou skimmer.
Causas raiz frequentes
Entrada ou estado não validado na fronteira de confiança
Reuso de código legado em caminhos expostos à web
Controles genéricos que não cobrem esta fraqueza específica
CWE-79 lidera o TOP 25 MITRE 2025 com score 60,38 — mais que o dobro do segundo colocado. A fraqueza nasce quando dados não confiáveis entram no DOM sem encoding adequado ao contexto (HTML, atributo, JavaScript, URL).
Existem três variantes principais: reflected (resposta imediata), stored (persistido no servidor) e DOM-based (sink no client, sem round-trip). Em SPAs Angular/React, DOM XSS via bypass de sanitização é o vetor mais comum em pentests corporativos.
Cross-site Scripting permanece #1 apesar de +3.000 CVEs novas no dataset. Stored XSS em painéis admin e DOM XSS em SPAs continuam entregando takeover de sessão.
Ferramentas de detecção
Burp DOM InvaderOWASP ZAPSemgrep
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-79.
380k cartões
British Airways Magecart, 2018XSS em checkout third-party
Skimmer via XSS
Sam's Club, 2023Supply chain script
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈Mapear sources→sinks no código (Semgrep/CodeQL)
◈CSP report-only coletando violações
◈DOM Invader no Burp para sinks
◈Fuzzing de contexto HTML/attr/JS
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Segunda posição com score 28,72. A query SQL é montada por concatenação — o padrão clássico que prepared statements eliminam desde 2004, mas que persiste em ORMs mal utilizados (sequelize.query raw, ORDER BY dinâmico).
#02score 28.724 entradas no CISA KEV (exploração ativa)Tendência vs 2024: +1A05
Pontos-chave
Segunda posição com score 28,72. A query SQL é montada por concatenação — o padrão clássico que prepared statements eliminam desde 2004, mas que persiste em ORMs mal utilizados (se…
Rank #2 · score MITRE 28.72
OWASP: A05
4 CVE(s) no CISA KEV — priorizar patch.
Parameterized queries / bind variables
ORM sem raw SQL em paths de usuário
Least privilege no usuário DB
Conceitos
Visão geral
Segunda posição com score 28,72. A query SQL é montada por concatenação — o padrão clássico que prepared statements eliminam desde 2004, mas que persiste em ORMs mal utilizados (sequelize.query raw, ORDER BY dinâmico).
Contexto técnico
No Juice Shop, routes/login.ts linha 34 concatena email e password diretamente na query. routes/search.ts linha 20 expõe UNION-based injection no campo de busca.
Impacto e prevalência
Impacto: leitura de tabelas inteiras, bypass de autenticação, escrita e em alguns SGBDs RCE via xp_cmdshell ou INTO OUTFILE.
Como o ataque funciona
Query montada por concatenação → UNION ou error-based → dump de tabelas → bypass de login ou escrita no SGBD.
Causas raiz frequentes
Entrada ou estado não validado na fronteira de confiança
Reuso de código legado em caminhos expostos à web
Controles genéricos que não cobrem esta fraqueza específica
Exemplos de código · vulnerável → correção
A05CWE-89Python/Flask
SQLi em query raw
Mesmo com ORM, .raw() e text() com f-string reintroduzem CWE-89.
cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")
cursor.execute('SELECT * FROM users WHERE email = %s', (email,))
A05CWE-89Node/Sequelize
SQLi — Juice Shop login.ts
Padrão exato do Juice Shop — concatenação em template literal.
sequelize.query(`SELECT * FROM Users WHERE email = '${email}'`)
Segunda posição com score 28,72. A query SQL é montada por concatenação — o padrão clássico que prepared statements eliminam desde 2004, mas que persiste em ORMs mal utilizados (sequelize.query raw, ORDER BY dinâmico).
Impacto: leitura de tabelas inteiras, bypass de autenticação, escrita e em alguns SGBDs RCE via xp_cmdshell ou INTO OUTFILE.
Concatenação em login.ts é o padrão clássico. UNION em search.ts demonstra exfiltração. Em MySQL com FILE privilege, SQLi escala para leitura de arquivos — CWE-89 raramente fica só em leitura de tabela.
Concatenação em login.ts é o padrão clássico. UNION em search.ts demonstra exfiltração. Em MySQL com FILE privilege, SQLi escala para leitura de arquivos — CWE-89 raramente fica só em leitura de tabela.
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈sqlmap com --risk 3 --level 5 em staging
◈grep sequelize.query / createQueryBuilder raw
◈Error-based: provocar syntax error
◈Time-based blind em endpoints lentos
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Score 13,64. O browser da vítima envia request autenticado para ação que ela não intencionou. APIs que usam apenas cookies de sessão sem token anti-CSRF são vulneráveis.
#03score 13.64Tendência vs 2024: +1A06
Pontos-chave
Score 13,64. O browser da vítima envia request autenticado para ação que ela não intencionou. APIs que usam apenas cookies de sessão sem token anti-CSRF são vulneráveis.
Rank #3 · score MITRE 13.64
OWASP: A06
Anti-CSRF token por sessão
SameSite=Strict em cookies sensíveis
Verificar Origin/Referer header
Conceitos
Visão geral
Score 13,64. O browser da vítima envia request autenticado para ação que ela não intencionou. APIs que usam apenas cookies de sessão sem token anti-CSRF são vulneráveis.
Contexto técnico
SameSite=Lax mitiga GET; POST cross-origin ainda exige token synchronizer ou double-submit cookie.
Impacto e prevalência
Em Juice Shop, mutações sem CSRF token permitem forjar transferências e alterações de perfil a partir de página maliciosa.
Como o ataque funciona
Vítima autenticada visita página maliciosa → request forjado com cookies → ação não intencionada no servidor.
Causas raiz frequentes
Entrada ou estado não validado na fronteira de confiança
Reuso de código legado em caminhos expostos à web
Controles genéricos que não cobrem esta fraqueza específica
Exemplos de código · vulnerável → correção
A06CWE-352Express
POST sem CSRF token
SameSite=Strict em cookies de sessão + token synchronizer.
Score 13,64. O browser da vítima envia request autenticado para ação que ela não intencionou. APIs que usam apenas cookies de sessão sem token anti-CSRF são vulneráveis.
SameSite=Lax mitiga GET; POST cross-origin ainda exige token synchronizer ou double-submit cookie.
O cheat sheet OWASP lista defesa em profundidade: token synchronizer, double-submit, SameSite=Strict/Lax conforme fluxo. CWE-352 liga design (A06) e implementação — state-changing POST sem proteção continua comum.
— OWASP CSRF Prevention Cheat Sheet
Ferramentas de detecção
Burp CSRF PoC generatorOWASP ZAP
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-352.
Milhões de routers
Router CSRF wave, 2014Config change
Ações em massa
Instagram, 2015CSRF em API
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈Verificar presença de token em forms POST
◈Testar cross-origin com Origin diferente
◈Review SameSite cookie attribute
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Subiu 5 posições — o maior salto do ranking 2025. O endpoint executa sem verificar se o caller tem permissão. Diferente de autenticação: o usuário está logado, mas acessa recurso alheio.
#04score 13.28Tendência vs 2024: +5A01
Pontos-chave
Subiu 5 posições — o maior salto do ranking 2025. O endpoint executa sem verificar se o caller tem permissão. Diferente de autenticação: o usuário está logado, mas acessa recurso a…
Rank #4 · score MITRE 13.28
OWASP: A01
Checagem server-side em TODA operação
Policy engine (OPA, Cedar)
Testes automatizados por role matrix
Conceitos
Visão geral
Subiu 5 posições — o maior salto do ranking 2025. O endpoint executa sem verificar se o caller tem permissão. Diferente de autenticação: o usuário está logado, mas acessa recurso alheio.
Contexto técnico
BOLA (Broken Object Level Authorization) da OWASP API Top 10 é a manifestação em REST. Juice Shop basket.ts retorna cesta por ID sem checar user.bid.
Impacto e prevalência
94% dos apps testados pelo OWASP apresentam alguma falha de access control em pentests recentes.
Como o ataque funciona
Operação executada sem checagem de permissão → BOLA/IDOR → leitura ou escrita de recurso alheio.
Causas raiz frequentes
Entrada ou estado não validado na fronteira de confiança
Reuso de código legado em caminhos expostos à web
Controles genéricos que não cobrem esta fraqueza específica
Exemplos de código · vulnerável → correção
A01CWE-862Go
Missing Authorization middleware
Deny-by-default: rotas sensíveis atrás de middleware explícito.
Subiu 5 posições — o maior salto do ranking 2025. O endpoint executa sem verificar se o caller tem permissão. Diferente de autenticação: o usuário está logado, mas acessa recurso alheio.
94% dos apps testados pelo OWASP apresentam alguma falha de access control em pentests recentes.
Missing Authorization reflete APIs que autenticam mas não autorizam por recurso. Correlação direta com A01 e com achados PortSwigger/DBIR em IDOR e BOLA.
Ferramentas de detecção
OWASP ZAPPostmanAuthZEN
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-862.
11,2M clientes
Optus, 2022API sem authZ
60M registros
USPS, 2018API Informed Visibility
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈Trocar IDs sequenciais: /api/order/1001 → 1002
◈Acessar admin endpoints com token de user
◈GraphQL: campos sem @auth
◈Mass assignment de role
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Score 12,68 com 12 CVEs no KEV. Escrita além dos limites de buffer em C/C++. Base de RCE em software nativo, kernels e firmware.
#05score 12.6812 entradas no CISA KEV (exploração ativa)Tendência vs 2024: -3A10
Pontos-chave
Score 12,68 com 12 CVEs no KEV. Escrita além dos limites de buffer em C/C++. Base de RCE em software nativo, kernels e firmware.
Rank #5 · score MITRE 12.68
OWASP: A10
12 CVE(s) no CISA KEV — priorizar patch.
Bounds-checked APIs (memcpy_s)
Memory-safe languages (Rust)
Stack canaries + ASLR + DEP
Conceitos
Visão geral
Score 12,68 com 12 CVEs no KEV. Escrita além dos limites de buffer em C/C++. Base de RCE em software nativo, kernels e firmware.
Contexto técnico
Menos comum em web puro, mas crítico em extensões nativas, parsers (imagem, PDF) e IoT. Heartbleed era OOB read; exploits modernos combinam read+write.
Impacto e prevalência
Relaciona-se a A10 Mishandling of Exceptional Conditions quando bounds check falha silenciosamente.
Como o ataque funciona
Input maior que o buffer → escrita fora dos limites → corrupção de memória → RCE em código nativo.
Causas raiz frequentes
Entrada ou estado não validado na fronteira de confiança
Reuso de código legado em caminhos expostos à web
Controles genéricos que não cobrem esta fraqueza específica
Exemplos de código · vulnerável → correção
A10CWE-787C
OOB write — strcpy
12 CVEs KEV em CWE-787 — parsers nativos em APIs web.
Score 12,68 com 12 CVEs no KEV. Escrita além dos limites de buffer em C/C++. Base de RCE em software nativo, kernels e firmware.
Menos comum em web puro, mas crítico em extensões nativas, parsers (imagem, PDF) e IoT. Heartbleed era OOB read; exploits modernos combinam read+write.
Relaciona-se a A10 Mishandling of Exceptional Conditions quando bounds check falha silenciosamente.
CWE-787 permanece no top 5 apesar da queda. Bindings Node nativos, parsers de imagem/PDF e libs C/C++ em dependências trazem memory corruption para apps «só web».
#5Ranking 2025
12KEV entries
A10OWASP
Ferramentas de detecção
AFL++ValgrindCodeQL
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-787.
OOB read
OpenSSL Heartbleed, 2014500k servers
Android RCE
Stagefright, 2015Media parser
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈ASAN/MSAN em CI para código nativo
◈Fuzzing AFL++ em parsers
◈Code review de memcpy/strcpy
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Score 8,99. Sequências ../ permitem leitura de arquivos fora do diretório permitido. Comum em download de relatórios, importação de templates e APIs de arquivo.
#06score 8.9910 entradas no CISA KEV (exploração ativa)Tendência vs 2024: -1A01
Pontos-chave
Score 8,99. Sequências ../ permitem leitura de arquivos fora do diretório permitido. Comum em download de relatórios, importação de templates e APIs de arquivo.
Rank #6 · score MITRE 8.99
OWASP: A01
10 CVE(s) no CISA KEV — priorizar patch.
Canonicalize path e verificar prefixo permitido
chroot ou jail por tenant
Deny list de .. e symlinks
Conceitos
Visão geral
Score 8,99. Sequências ../ permitem leitura de arquivos fora do diretório permitido. Comum em download de relatórios, importação de templates e APIs de arquivo.
Contexto técnico
Em Juice Shop, challenges de directory traversal exploram /ftp e parâmetros de download sem canonicalização de path.
Impacto e prevalência
10 CVEs no KEV — frequentemente encadeado com information disclosure para obter credenciais.
Como o ataque funciona
Sequências ../ em path → sem canonicalização → leitura de arquivos sensíveis fora do diretório permitido.
Causas raiz frequentes
Entrada ou estado não validado na fronteira de confiança
Reuso de código legado em caminhos expostos à web
Controles genéricos que não cobrem esta fraqueza específica
Score 8,99. Sequências ../ permitem leitura de arquivos fora do diretório permitido. Comum em download de relatórios, importação de templates e APIs de arquivo.
10 CVEs no KEV — frequentemente encadeado com information disclosure para obter credenciais.
Ferramentas de detecção
Burp Intruderffuf
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-22.
Milhares de libs
Zip Slip, 2018../ em unzip
CVE-2019-19781
Citrix ADC, 2019Arbitrary read
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈Payload: ../../../etc/passwd
◈URL encoding duplo: ..%252f
◈Unicode normalization bypass
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
CWE-416 subiu no radar com exploits em browsers e libs nativas. Para devs de aplicação web, o paralelo é gerenciar lifecycle de objetos em bindings nativos e parsers — não só JavaScript.
Ferramentas de detecção
ASANCoverity
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-416.
RCE em browser
Chrome UAF exploits, ongoingV8/Blink
Supply chain
SolarWinds SUNBURST, 2020Nativo + managed
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈ASAN detecta UAF em testes
◈Static analysis em código C/C++
◈Fuzzing com sanitizers
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Um heartbeat TLS mal validado vazou até 64KB de memória por request. Certificados, chaves e sessões saíram sem log de acesso — detecção (A09) também falhou em massa.
Um heartbeat TLS mal validado vazou até 64KB de memória por request. Certificados, chaves e sessões saíram sem log de acesso — detecção (A09) também falhou em massa.
64KBPor request
500k+Servidores
A10OWASP
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈Fuzzing de parsers binários
◈Valgrind memcheck
◈Bounds analysis
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
CWE-20 é pai conceitual de muitas injection — validação ausente ou no client-side só desloca o bug. Desceu 6 posições no TOP 25 2025 mas permanece onipresente em APIs que confiam no schema do frontend.
Ferramentas de detecção
SchemathesisHypothesis
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-20.
Preço negativo
Integer overflow purchases, váriosE-commerce
Role escalation
API mass assignmentJSON body
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈Fuzzing de tipos: string onde espera int
◈Boundary values: MAX_INT, -1, 0
◈Unicode normalization
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Exposure não é só «dados vazados» — é qualquer info útil ao atacante
Stack traces, versões de framework, paths internos e logs verbosos são CWE-200. First American (885M docs) e Power Apps (38M) são exposição sem exploit sofisticado — apenas ID sequencial ou lista pública.
Ferramentas de detecção
trufflehoggitleaks
Correlação primária
Todas as categorias OWASP
Matriz OWASP ↔ CWE
CVEs e incidentes que exemplificam CWE-200.
885M docs
First American, 2019Sem auth
Dados agregados
Verizon DBIR leaksMisconfig
Como encontrar esta fraqueza em revisão de código, SAST/DAST e pentest.
◈grep console.log / print em código
◈Verificar 500 responses em produção
◈Scan de /.git, /backup, /.env
Checklist de controles
Marque cada controle ao revisar o design ou o código da aplicação.
Juice Shop expõe application-configuration sem token — reproduz CWE-306 em segundos com curl. O mesmo padrão aparece em Snowflake (sem MFA), Change Healthcare (Citrix) e dezenas de APIs admin sem auth.
Juice Shop expõe application-configuration sem token — reproduz CWE-306 em segundos com curl. O mesmo padrão aparece em Snowflake (sem MFA), Change Healthcare (Citrix) e dezenas de APIs admin sem auth.
@app.get('/orders/{order_id}')
def get_order(order_id, user=Depends(auth)):
o = db.get_order(order_id)
if o.user_id != user.id: raise HTTPException(403)
return o
@app.get('/orders/{order_id}')
def get_order(order_id, user=Depends(auth)):
o = db.get_order(order_id)
if o.user_id != user.id: raise HTTPException(403)
return o
«OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security trainings, awareness demos, CTFs and as a guinea pig for security tools!» O setup abaixo sobe o ambiente em menos de 2 minutos — o trabalho começa no código-fonte.
Na prática
Docker: porta 3000 · Score Board em /#/score-board
Aprender segurança exige quebrar coisas em ambiente controlado
Hunt defende labs intencionalmente vulneráveis como ponte entre teoria e reflexo profissional — o mesmo princípio do Juice Shop citado em treinamentos OWASP globais. Você não aprende IDOR lendo só a definição CWE-639.
— Troy Hunt · Have I Been Pwned
Após o docker compose, rode o Score Board e tente 3 challenges mapeados neste guia antes de seguir para a IDE.
docker · deploy
$docker run --rm -p 3000:3000 bkimminich/juice-shop
→ http://localhost:3000
$docker compose up -d
→ Score Board em /#/score-board
source · audit
$git clone https://github.com/juice-shop/juice-shop.git && cd juice-shop
$npm install && npm audit --audit-level=moderate
! Dezenas de CVEs intencionais — correlacione com A03
$grep -r "sequelize.query" routes/ lib/
→ login.ts, search.ts — SQLi
§IDE·juice shop
IDE — correção ao vivo
Explorer à esquerda · compare no centro · terminal de validação embaixo · 19 arquivos vulneráveis do repositório oficial.
Selecione um arquivo do Juice Shop: o código vulnerável fica à esquerda com contexto completo do arquivo; clique Aplicar correção para a versão segura ser digitada à direita, lado a lado. Use Validar para rodar o exploit no terminal.
Vulnerabilidades intencionais com código de produção real
«Juice Shop is an intentionally insecure web application for security trainings written in Node.js, Express and Angular.» Os trechos em routes/ e lib/ são os mesmos padrões encontrados em auditorias reais — apenas concentrados em um repositório didático.
🎓DiscussãoLab prático
Da vulnerabilidade ao patch verificável
Fluxo completo: reproduzir no terminal → entender root cause na IDE → aplicar correção digitada → validar que o exploit falha. Documente CWE, OWASP, arquivo e linha no relatório — mesmo formato de ticket Jira em time maduro.
Perguntas cruzam OWASP 2025 vs 2021, CWE em KEV e mapeamento Juice Shop. Errou? Volte ao modal da categoria, aba Casos ou Destaques, e refaça o lab correspondente.
❝CitaçãoQuiz · Estudo de caso
«O que não é medido, não é aprendido»
O quiz não testa memorização — verifica se você consegue correlacionar OWASP, CWE, evidência de exploit e mitigação. Cada erro aponta para um lab específico nesta página.