PT-2026-21961 · Google · @Angular/Ssr
Venkatkwest
·
Publicado
2026-02-25
·
Atualizado
2026-04-30
·
CVE-2026-27738
CVSS v4.0
6.9
Média
| Vetor | AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Nome do Software Vulnerável e Versões Afetadas
Versões do Angular SSR 19.x até 19.2.20
Versões do Angular SSR 20.x até 20.3.16
Versões do Angular SSR 21.x até 21.1.4
Versão 21.2.0-rc.0 do Angular SSR
Descrição
Existe um problema de Redirecionamento Aberto na lógica interna de processamento de URL do Angular SSR. A aplicação normaliza segmentos de URL removendo barras inclinadas iniciais, mas apenas uma única barra é removida. Se uma aplicação Angular SSR for implantada atrás de um proxy que repassa o cabeçalho
X-Forwarded-Prefix sem sanitização, um atacante pode fornecer um valor começando com três barras (por exemplo, ///evil.com). Isso pode levar a um redirecionamento para um domínio malicioso, potencialmente permitindo phishing em larga escala e sequestro de SEO. A vulnerabilidade requer que a aplicação use Angular SSR, tenha rotas que realizem redirecionamentos internos e que a infraestrutura repasse o cabeçalho X-Forwarded-Prefix ao processo SSR sem sanitização. O cache também não deve variar com base no cabeçalho X-Forwarded-Prefix. O problema ocorre porque navegadores modernos interpretam // como uma URL relativa ao protocolo, redirecionando o usuário do site legítimo para o domínio controlado pelo atacante.Recomendações
As versões do Angular SSR anteriores a 19.2.21 devem ser atualizadas.
As versões do Angular SSR anteriores a 20.3.17 devem ser atualizadas.
As versões do Angular SSR anteriores a 21.1.5 devem ser atualizadas.
A versão 21.2.0-rc.0 do Angular SSR deve ser atualizada.
Como solução temporária, sanitize o cabeçalho
X-Forwarded-Prefix no arquivo server.ts antes que o engine do Angular processe a requisição, removendo todas as barras inclinadas iniciais. Por exemplo:ts
app.use((req, res, next) => {
const prefix = req.headers['x-forwarded-prefix']?.trim();
if (prefix) {
// Sanitiza removendo todas as barras inclinadas iniciais
req.headers['x-forwarded-prefix'] = prefix.replace(/^[/]+/, '/');
}
next();
});Exploit
Correção
Open Redirect
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
@Angular/Ssr