Google · @Angular/Ssr · CVE-2026-27738
**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();
});
```