O ajudante `unstable_redirect()` exportou- se de `waku/router/server` (`pacotes/waku/src/router/define-router.tsx: 156 – 161 `) aceita uma string arbitrária e reflete- a inalterada no cabeçalho de resposta do HTTP `Location` sem validação de URL, restrição de esquema ou aplicação somente de caminho. Qualquer aplicativo que passe a entrada controlada pelo usuário para este ajudante — o padrão natural documentado no JSDoc e na instalação oficial — é vulnerável a ataques de redirecionamento abertos. Um atacante que convença uma vítima a clicar num link criado pode redirecionar o navegador para um domínio externo arbitrário, permitindo o phishing, a colheita de credenciais e o roubo de símbolos OAuth. Além disso, URLs relativas ao esquema (`// evil.exemplo/`) evitam filtros ingênuos `https?://`- allow-list que os desenvolvedores podem adicionar como mitigações ad- hoc. PoC dinâmico confirmado contra **waku 1.0.0 -Beta. 0 ** (commitiu ` 8 e 9 f 542 `) em um ambiente Docker isolado. Duas corridas dinâmicas independentes produziram resultados idênticos. ` pacotes/waku/ src/ router/ define- router.tsx: 156 – 161 `. ```ts a função de exportação unstable_redirect( location: string, // somente URL `pathname` é suportado. status: 303 | 307 | 308 = 307, ): nunca { lançar criarCustomError('Redirecionar', { status, localização }); } ```.

O comentário do JSDoc indica "apenas o URL `pathname` é suportado", mas esta limitação é expressa apenas como documentação — a função executa ** nenhuma validação**. O valor `locality` se propaga através de `crearCustomError` (`custom-errors.ts: 22 – 26 `) em um digest de erros, é recuperado pelo `getErrorInfo` no gestor da solicitação (`handler.ts: 79 – 89 `), e refletido diretamente em `headers.location` do 'Response' que sai sem desinfectação: ```ts if (info?.location) { headers.location = info.location; // handler.ts: 87 — reflexão não validada } retorna a resposta (corpo, { status, cabeçalhos }); ```.

Disparador (resumo de uma linha). Qualquer entrada de usuário fornecida por desenvolvedores, passada para ` unstable_redirect()`, é refletida inalterada no cabeçalho HTTP `Location', permitindo navegar para um domínio controlado pelo atacante. ## Superfícies de entrada afetadas. - `unstable_redirect(location, status?)` — `waku/router/server` public export - Qualquer componente de página/rota que passe `searchParams`, `query' ou outras strings controladas pelo usuário para `unstable_redirect` (o padrão padrão pós- login ou redirecionamento de chamadas) - Todos os adaptadores de waku (Node.js, Cloudflare Workers, Vercel Edge, Deno) compartilham o mesmo caminho de reflexão `handler.ts`; a paridade cross- runtime CRLF não é auditada (veja a nota abaixo).

Defesa adicional em profundidade. No Node.js, a injeção CRLF através do cabeçalho `Location` é rejeitada por `node:_http_outgoing.setHeader` (`ERR_INVALID_CHAR`). Esta defesa é **plataforma- específica** e não está presente na fonte waku. Os trabalhadores Cloudflare, Deno Deploy e outros tempos de execução de borda não foram verificados para oferecer proteção equivalente. Recomenda- se uma auditoria de execução cruzada. ## Sugerente Resolução. Validar o argumento `location` dentro de `unstable_redirect` antes de o erro ser jogado: rejeitar qualquer valor que não comece com um único `/` (não `//`), e rejeitar qualquer valor contendo caracteres de controle (`\x 00 `–`\x 1 F`). Uma lista de autorização opt- in para redirecionamentos intencionais de origem cruzada pode ser fornecida através de uma opção de configuração de framework.

Campo Valor--------------------------------------------------------------------- 0 hndo (`dohyun 4466 @gmail.com`)) 2026 - 05 - 17 Embargo 90 dias de reconhecimento Versão pacheada Ainda não disponível Referências públicas CWE- 601; OWASP A 01: 2021 | Registro de aconselhamento: GHSA- 43 fc- v 873 - qw 85. Identificadores relacionados: CVE- 2026 - 49456.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 08 T 20: 30: 21.000 Z e lista a sua última modificação como 2026 - 07 - 08 T 20: 30: 21.000 Z. Severidade: LOW. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N.

Informações sobre software e versão afetadas: pacote npm waku — ECOSYSTEM: introduzido 0, corrigido 1.0.0 -Beta. 1. Classificação e evidência: identificadores de fraqueza CWE- 601. O registro contém 3 suporte de referências nestes tipos: WEB, PACKAGE.