Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2025-29927 PoC — Authorization Bypass in Next.js Middleware

Source
Associated Vulnerability
Title: Authorization Bypass in Next.js Middleware (CVE-2025-29927)
Description:Next.js is a React framework for building full-stack web applications. Starting in version 1.11.4 and prior to versions 12.3.5, 13.5.9, 14.2.25, and 15.2.3, it is possible to bypass authorization checks within a Next.js application, if the authorization check occurs in middleware. If patching to a safe version is infeasible, it is recommend that you prevent external user requests which contain the x-middleware-subrequest header from reaching your Next.js application. This vulnerability is fixed in 12.3.5, 13.5.9, 14.2.25, and 15.2.3.
Readme
# Scanner de Vulnerabilidade Middleware Subrequest do Next.js

Uma ferramenta robusta de prova de conceito (PoC) para detectar a vulnerabilidade de middleware do Next.js (CVE-2025-29927).

## Visão Geral

Esta ferramenta testa uma vulnerabilidade crítica em aplicações Next.js onde o cabeçalho `x-middleware-subrequest` pode ser usado para contornar verificações de segurança implementadas no middleware. O exploit envolve o envio de solicitações HTTP com cabeçalhos maliciosos específicos, variando conforme a versão do Next.js.

## Como Funciona o Exploit

De acordo com a pesquisa, existem diferentes payloads para diferentes versões do Next.js:

1. **Versões anteriores à 12.2**:
   ```
   x-middleware-subrequest: pages/_middleware
   ```

2. **Versões a partir da 12.2**:
   ```
   x-middleware-subrequest: middleware
   ```
   ou
   ```
   x-middleware-subrequest: src/middleware
   ```
   (se a aplicação usar o diretório src)

3. **Versões mais recentes (como 15.x)**:
   ```
   x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
   ```
   ou
   ```
   x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
   ```

Nossa PoC testa todos esses payloads automaticamente e reporta qual foi bem-sucedido.

## Funcionalidades

- Teste de um ou múltiplos alvos
- Escaneamento concorrente com multithreading
- Caminhos de requisição personalizáveis
- Teste automático de todos os payloads possíveis
- Saída detalhada e colorida no terminal
- Exportação de resultados em JSON
- Tratamento robusto de erros
- Detecção abrangente de vulnerabilidades

## Requisitos

- Python 3.7+
- Pacotes necessários:
  - requests
  - colorama

## Instalação

```bash
# Clone o repositório ou baixe os arquivos
# Navegue até o diretório
cd poc-nextjs-2025

# Instale os pacotes necessários
pip install -r requirements.txt
```

## Uso

```bash
python main.py -u https://exemplo.com   # Testar uma única URL
python main.py -f alvos.txt             # Testar múltiplas URLs de um arquivo
```

### Argumentos de Linha de Comando

| Opção | Descrição |
| ------ | ----------- |
| `-u, --url URL` | URL alvo para escanear |
| `-f, --file ARQUIVO` | Arquivo contendo múltiplas URLs para escanear (uma por linha) |
| `-p, --paths CAMINHOS` | Lista de caminhos para testar separados por vírgula (padrão: caminhos comuns) |
| `-t, --threads N` | Número de threads concorrentes (padrão: 5) |
| `-o, --output ARQUIVO` | Salvar resultados em arquivo JSON |
| `--timeout N` | Tempo limite da requisição em segundos (padrão: 10) |

### Exemplos

```bash
# Escaneamento básico de um único alvo
python main.py -u https://exemplo.com

# Escanear múltiplos alvos com caminhos personalizados
python main.py -f alvos.txt -p /api/users,/admin,/dashboard

# Escanear com maior concorrência e timeout mais longo
python main.py -u https://exemplo.com -t 10 --timeout 15

# Salvar resultados em um arquivo JSON
python main.py -u https://exemplo.com -o resultados_scan.json
```

## Metodologia de Detecção

O scanner funciona através de:

1. Envio de uma requisição normal para o alvo
2. Envio de requisições com diferentes variações do cabeçalho `x-middleware-subrequest` conforme as versões do Next.js
3. Comparação das respostas para identificar indicadores de vulnerabilidade:
   - Requisição normal bloqueada (4xx/5xx) mas requisição de exploit permitida (2xx)
   - Diferença significativa no conteúdo da resposta
   - Indicadores de bypass de autenticação/autorização

## Mitigação

Se você descobrir aplicações vulneráveis, aplique estas mitigações:

- Atualize para as versões 14.2.25 ou 15.2.3 ou posteriores do Next.js
- Implemente um middleware que bloqueie requisições com o cabeçalho `x-middleware-subrequest`

```typescript
export function middleware(request: NextRequest) {
  if (request.headers.has('x-middleware-subrequest')) {
    return new Response('Unauthorized', { status: 401 });
  }
  return NextResponse.next();
}
```
File Snapshot

Log in to view the POC file snapshot cached by Shenlong Bot

Log in to view
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →