
Bu laboratuvar ortamını sıfırdan kendim oluşturdum. Next.js uygulaması içerisinde giriş, ana sayfa ve admin sayfalarını hazırladım. Middleware ile yetkilendirme mekanizmasını kurduktan sonra Burp Suite kullanarak CVE-2025-29927 zafiyetini kontrollü ortamda gösterdim.
Em aplicações Next.js, o middleware é executado antes que as requisições cheguem à aplicação, realizando verificações como autenticação e autorização.
Na vulnerabilidade CVE-2025-29927, devido ao cabeçalho HTTP x-middleware-subrequest adicionado especificamente, o middleware pode, em alguns casos, considerar a requisição como verificada. Essa situação pode fazer com que usuários não autorizados acessem páginas protegidas.
Neste projeto, demonstrei a vulnerabilidade CVE-2025-29927, que afeta aplicações Next.js, em um ambiente de laboratório que criei usando Docker.
Criei o ambiente de laboratório do zero. Com Next.js, preparei as páginas de login, index e admin. Em seguida, adicionei o controle de autorização para a página admin usando o middleware.
Capturei as requisições HTTP com o Burp Suite, adicionei o cabeçalho x-middleware-subrequest e demonstrei o acesso não autorizado à página admin ao contornar o controle do middleware.
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
Antes de executar o projeto, os seguintes itens precisam estar instalados.
Baixe o repositório para o seu computador.
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
Entre na pasta.
cd nextjs-middleware-auth-bypass-lab
Crie a imagem Docker.
docker build -t nextjs-auth-bypass .
Inicie o contêiner.
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
Acesse o seguinte endereço no navegador.
http://localhost:3000
O projeto contém as seguintes páginas.
O acesso à página admin é controlado por meio do middleware.
Primeiro, tente acessar a página /admin pelo navegador.
Como você não tem permissão, será redirecionado para a página de login.
Capture a requisição com o Burp Suite.
Adicione o seguinte cabeçalho HTTP à requisição.
x-middleware-subrequest: middleware
Envie a requisição novamente.
Quando o controle do middleware é contornado, é possível observar que a página admin se torna acessível.
Após a conclusão da instalação:
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
Para corrigir esta vulnerabilidade, recomenda-se que as versões afetadas do Next.js sejam substituídas por versões atualizadas.
Além disso, a autorização não deve ser feita apenas no middleware; também devem ser aplicadas verificações adicionais de permissão no lado do servidor.