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

VetorAV: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

CVE-2026-27738
GHSA-XH43-G2FQ-WJRJ

Produtos afetados

@Angular/Ssr