Testy penetracyjne Next.js: middleware bypass, cache poisoning i bezpieczeństwo nowoczesnego Reacta
Aplikacje Next.js łączą renderowanie po stronie serwera, edge middleware, cache ISR oraz Server Actions, a każdy z tych elementów stanowi unikalną powierzchnię ataku. Podatności Next.js z 2024 roku obejmują CVE-2024-43481 (middleware bypass, CVSS 9.1), CVE-2024-46982 (zatruwanie cache ISR) oraz CVE-2024-34351 (SSRF). Matproof Sentinel wykonuje ukierunkowane pentesty Next.js z proof-of-exploit oraz raportami gotowymi do audytów DORA / NIS2 / ISO 27001 już od 149 EUR.
Dlaczego Next.js wymaga specjalistycznej wiedzy pentestowej
Next.js to najpopularniejszy framework Reacta do nowoczesnych aplikacji full-stack, jednak jego unikalna powierzchnia ataku wymaga specjalistycznej wiedzy testowej. CVE-2024-43481 (CVSS 9.1, marzec 2024) umożliwia całkowity bypass middleware uwierzytelniającego za pośrednictwem nagłówka x-middleware-subrequest, dzięki czemu nieuwierzytelniony atakujący uzyskuje dostęp do chronionych tras, w tym paneli administracyjnych i endpointów transakcyjnych. CVE-2024-46982 naraża aplikacje Next.js na zatruwanie cache ISR (Incremental Static Regeneration). CVE-2024-34351 umożliwia ataki SSRF poprzez nieprawidłowo obsługiwane względne adresy URL. Poza CVE, Server Actions w Next.js 13+ wprowadzają nowe wzorce bezpieczeństwa: walidację danych po stronie serwera, jawną autoryzację dla każdej akcji oraz prawidłową obsługę tagów revalidate. Dla organizacji objętych DORA art. 24 lub NIS2, udokumentowany pentest Next.js jest standardowym dowodem zgodności technicznej.
- CVE-2024-43481 (CVSS 9.1): całkowity bypass middleware Next.js przez nagłówek x-middleware-subrequest, czyli nieuwierzytelniony dostęp do chronionych tras, w tym paneli admin i endpointów płatniczych.
- CVE-2024-46982: zatruwanie cache ISR, gdzie atakujący manipuluje regenerowanym cache statycznym i serwuje skompromitowane treści innym użytkownikom bez konieczności uwierzytelnienia.
- CVE-2024-34351: SSRF poprzez zniekształcone względne adresy URL, dający dostęp do endpointów metadanych chmury (AWS IMDSv1, Google metadata server) oraz usług wewnętrznych.
- Server Actions (Next.js 13+): nowy model bezpieczeństwa wymaga walidacji danych po stronie serwera oraz jawnej autoryzacji dla każdej akcji. Niezabezpieczony Server Action to publiczny endpoint API.
- Strategie cache (ISR, dynamic, force-static): błędna konfiguracja może wyciekać dane cache pomiędzy użytkownikami, co jest szczególnie krytyczne dla wielodzierżawnych aplikacji SaaS.
- Edge middleware na Vercel / Cloudflare: ograniczone środowiska runtime wymagają specyficznych testów w celu wykluczenia bypassu wynikającego z różnic środowiskowych.
- Dla aplikacji objętych DORA art. 24, NIS2 lub GDPR art. 32, udokumentowany pentest Next.js stanowi standardowy dowód zgodności.
Co konkretnie testujemy w aplikacji Next.js
- Middleware bypass (CVE-2024-43481): test ze zmanipulowanymi nagłówkami x-middleware-subrequest w celu uzyskania dostępu do chronionych tras; weryfikacja wersji Next.js < 14.2.25 / < 13.5.7 / < 15.0.4.
- Cache poisoning ISR (CVE-2024-46982): test manipulacji cache przez nagłówek x-now-route-matches; weryfikacja konfiguracji revalidate-on-stale.
- SSRF przez serwer Next.js (CVE-2024-34351): zniekształcone względne adresy URL, próba dotarcia do endpointów metadanych chmury (169.254.169.254/) i wewnętrznych usług VPC.
- Bezpieczeństwo Server Actions: walidacja danych Zod / Yup, jawna autoryzacja dla każdej akcji, prawidłowe useFormState z sanityzacją wyjścia.
- API routes: standardowe OWASP Top 10 (injection, broken auth, IDOR), walidacja typów runtime TypeScript z Zod, rate limiting (brak domyślnego w Next.js).
- Konfiguracja next.config.js: nagłówki bezpieczeństwa (CSP strict, HSTS z preload), images.remotePatterns w celu uniknięcia bypassu whitelisty.
- Wzorce uwierzytelniania: Next-Auth / Auth.js, Clerk, Lucia, czyli weryfikacja podpisu JWT, flagi cookie sesji (Secure, HttpOnly, SameSite), prawidłowa obsługa CSRF.
- Specyfika Vercel: edge functions vs node runtime, zmienne środowiskowe eksponowane po stronie klienta (NEXT_PUBLIC_*), preview deployments z uwierzytelnianiem.
- Composition Analysis: package.json + package-lock.json pod kątem CVE w zależnościach (next, react, react-dom), audyt tranzytywny z npm audit --production.
- Tryb strict TypeScript: noUncheckedIndexedAccess zapobiegający błędom runtime z niezdefiniowanych indeksów, strictNullChecks dla integralności typów.
Sample finding
CVE-2024-43481, czyli middleware bypass przez nagłówek x-middleware-subrequest
Aplikacja Next.js 14.2.3 jest podatna na CVE-2024-43481, co umożliwia całkowity bypass middleware uwierzytelniającego poprzez zmanipulowaną wartość nagłówka HTTP x-middleware-subrequest. Nieuwierzytelniony atakujący może wysłać żądanie typu 'GET /admin/users HTTP/1.1 + x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware', co powoduje pominięcie middleware authentication.ts. Test uzyskał dostęp do /admin/users (panel administracyjny z pełną listą użytkowników, e-mailami, rolami), /admin/orders (panel zamówień z częściowymi danymi płatności) oraz endpointów /api/admin/* bez uwierzytelnienia. Podatność jest udokumentowana i naprawiona w Next.js >= 14.2.25, >= 13.5.7, >= 15.0.4. Czas do exploita: 12 sekund.
Fix: Działanie natychmiastowe (priorytet 1): aktualizacja Next.js do wersji z patchem: >= 14.2.25 dla linii 14.x, >= 13.5.7 dla linii 13.x, >= 15.0.4 dla linii 15.x. Weryfikacja: po aktualizacji ponowne uruchomienie exploita z tym samym payloadem musi zwrócić 401/403. Działania uzupełniające: implementacja autoryzacji drugiej warstwy na poziomie API route / Server Action (nigdy nie polegaj na middleware jako jedynej obronie); włączenie strict Content-Security-Policy z report-uri w celu wykrywania prób eksploatacji; konfiguracja WAF (Cloudflare, AWS WAF) z jawną regułą blokującą nagłówek x-middleware-subrequest ze źródeł nieinternalnych.
Reference: CVE-2024-43481 (CVSS 9.1) · CWE-285 Improper Authorization · OWASP A01:2021 Broken Access Control · Next.js Security Advisory GHSA-7gfc-8cq8-jh5f
Porównanie opcji pentestu Next.js
| — | Free scan | Matproof Sentinel | Traditional consultancy |
|---|---|---|---|
| Automated scan engine | ✓ (3-min preview) | ✓ Full scan | ✗ Manual only |
| OWASP Top 10 coverage | Partial | ✓ Complete | ✓ Complete |
| Proof-of-exploit evidence | ✗ | ✓ Per finding | ✓ Per finding |
| Regulatory mapping (DORA/NIS2/ISO 27001) | ✗ | ✓ Automated | ✓ Manual |
| Audit-ready PDF report | ✗ | ✓ Instant | ✓ 2–4 weeks delivery |
| Continuous / recurring scans | ✗ | ✓ Per deploy | ✗ Annual engagement |
| Time to first result | ~3 min | ~30 min full scan | 2–4 weeks |
| Price | €0 | From €149 | €8,000–€25,000 |
| Source code review (SAST) | ✗ | ✓ On Growth plan | ✓ Scoped engagement |
| API testing (REST/GraphQL) | ✗ | ✓ Automated | ✓ Manual |
Pakiety pentestów Next.js
- 1 full pentest scan
- AI-prioritized findings with CVSS 3.1
- Proof-of-exploit per finding
- Audit-ready PDF report
- Regulatory mapping (DORA, NIS2, ISO 27001)
- Unlimited scans (up to 3 domains)
- Continuous monitoring
- CI/CD integration (GitHub, GitLab)
- All regulatory mappings
- Priority support
- Unlimited scans + domains
- Authenticated / White-Box testing
- API & cloud infrastructure tests
- Dedicated security account manager
- 24h SLA response time
Najczęściej zadawane pytania o pentest Next.js
Które wersje Next.js są podatne na CVE-2024-43481?
Wszystkie wersje Next.js < 14.2.25 (linia 14.x), < 13.5.7 (linia 13.x) oraz < 15.0.4 (linia 15.x) są podatne. Podatność została ujawniona i naprawiona 14 marca 2024 roku. Wersje Next.js < 12.x nie są bezpośrednio podatne, ale są End-of-Life od 2023 roku i powinny zostać zmigrowane.
Czy pentest obejmuje Vercel, Cloudflare Workers, AWS Amplify, czy tylko self-hosted?
Pokrywamy wszystkie cele wdrożeniowe Next.js: Vercel (ze specyfiką Edge Functions vs Node Runtime), Cloudflare Workers + Pages, AWS Amplify, Netlify oraz self-hosted (Node.js, Docker, Kubernetes). W przypadku Vercel testujemy również preview deployments z uwierzytelnianiem, Edge Config i KV store. W przypadku Cloudflare, Durable Objects i połączenia z bazą D1.
Czy testujecie również Next.js App Router (Next.js 13+), czy tylko Pages Router?
Oba. App Router (Next.js 13+) ma nowe wzorce bezpieczeństwa: Server Actions, Streaming SSR, parallel routes ze zróżnicowanym uwierzytelnianiem, pobieranie danych na poziomie layoutu. Dla klasycznego Pages Router (nadal używanego w 65% baz kodu Next.js według Vercel 2024), testujemy wzorce legacy: getServerSideProps, API routes /pages/api/*.
Jak długo trwa kompletny pentest Next.js?
Pełny zautomatyzowany skan (CVE-2024-43481, cache poisoning, SSRF, Server Actions, OWASP Top 10) trwa około 60 minut dla typowej aplikacji Next.js. Dla bardziej złożonych aplikacji (mikroserwisy Next.js, wielodzierżawne SaaS, globalny edge deployment) 2-3 godziny. Raport gotowy do audytu w ciągu 24 godzin.
Czy możemy zintegrować Matproof Sentinel z naszym CI/CD na Vercel lub Cloudflare?
Tak, w pakietach Starter (299 EUR/mies.) i Growth (799 EUR/mies.). Dla Vercel: integracja GitHub Actions uruchamiana na preview deployments, czyli szybki skan (15 min) dla każdego PR oraz pełny skan tygodniowy na produkcji. Dla Cloudflare: integracja webhook ze zdarzeniami Cloudflare Workers Deployment. Znaleziska Critical/High mogą automatycznie blokować merge poprzez GitHub Status Checks.
Czy testujecie również aplikacje Next.js z tRPC, GraphQL lub REST API?
Wszystkie wzorce API: tRPC (ze specyfiką walidacji Zod i autoryzacji routera), GraphQL (Apollo Server, GraphQL Yoga, urql) z naciskiem na query depth limiting, introspection na produkcji oraz ataki batch. Klasyczne REST API zgodnie z OWASP API Top 10 (2023).
Czy raport Matproof Sentinel jest akceptowany dla audytów DORA art. 24 lub NIS2?
Tak. Raport techniczny jest strukturyzowany z jawnym mapowaniem do DORA art. 24 (regularny pentest), DORA art. 25 (zarządzanie podatnościami), NIS2 art. 21 (środki techniczne) oraz ISO 27001:2022 A.8.29 (testowanie bezpieczeństwa w procesie tworzenia). Dla headless deployments Vercel dołączamy konkretne dowody dla kwestionariusza bezpieczeństwa najpopularniejszych marketplace SaaS.
Co się dzieje, gdy podczas pentestu znajdziemy ustalenia Critical?
Natychmiastowe powiadomienie e-mailowe w ciągu 15 minut od wykrycia. Raport zawiera: severity CVSS 3.1, krok po kroku odtworzenie z dokładnym poleceniem, dowody (screenshot, request/response), analizę wpływu oraz konkretne działania naprawcze wraz z przykładowym kodem. Dla znalezisk Critical z potencjałem natychmiastowej eksploatacji oferujemy emergency response: bezpośrednia rozmowa z inżynierem bezpieczeństwa Matproof w ciągu 2 godzin roboczych.
Go deeper — related blog articles
Zabezpiecz swoją aplikację Next.js już teraz
Pierwszy skan w 3 minuty, kompletny pentest Next.js w 60 minut z proof-of-exploit dla każdego znaleziska. Raport gotowy do audytów DORA / NIS2 / ISO 27001 już od 149 EUR.
Rozpocznij darmowy skan