Twee onlangs bekendgemaakte CVE's — CVE-2025-55182 in React Server Components en CVE-2025-29927 in Next.js middleware — openen een pad voor remote-code execution en authentication bypass op moderne JavaScript-stacks. Eén enkele aanvraag kan de kwetsbaarheden triggeren; alleen configuratie is niet voldoende om ze te stoppen. Teams die vertrouwen op React Server Components of Next.js middleware moeten deze bugs als urgent beschouwen en onmiddellijk patches uitrollen.
Waarom de ruis in de logs misleidend is
We hebben een maand aan edge-logs geanalyseerd van een productie-site die Next.js gebruikt. De dataset bevatte 8.900 aanvragen die als kwaadaardig werden gemarkeerd. Bijna elke aanvraag faalde bij de eerste stap (hop). De meest voorkomende URL was /wp-admin/install.php, die 518 keer werd geraakt, ook al draait de site geen WordPress, gebruikt deze geen PHP en bevat deze geen WordPress-bestanden.
Geautomatiseerde scanners genereren dit verkeer. Ze bestoken het internet met gissingen, op zoek naar:
- Geheimen en configuratiebestanden – 64% van de pogingen
- PHP-panels en shells – 22%
- WordPress-paden – 11%
- Database-tools – 1%
Een hoog aantal geblokkeerde aanvragen vertelt je alleen dat je niet de software draait die de bots verwachten. Het garandeert niet dat de applicatie die je wel draait, veilig is.
De stille aanvallen op frameworkniveau
Wanneer een aanvaller een Next.js-app target, lijkt het verkeer op gewone gebruikersaanvragen, waarbij het framework zelf tegen zichzelf wordt gebruikt.
React2Shell (CVE-2025-55182)
Een kwetsbaarheid in React Server Components stelt een aanvaller in staat om een speciaal vervaardigde payload te injecteren die de server als code evalueert. Het resultaat is volledige remote-code execution zonder dat een firewall of web-application filter omzeild hoeft te worden. De kwetsbaarheid bevindt zich binnen het framework; de enige oplossing is upgraden naar een versie waarin de fix is opgenomen.
Middleware Authorization Bypass (CVE-2025-29927)
Next.js middleware kan beveiligingscontroles afdwingen op basis van request headers. Deze CVE laat zien dat een aanvaller een specifieke interne header kan meesturen, waardoor de middleware deze controles volledig overslaat. Van buitenaf ziet de aanvraag er gewoon uit, wat detectie bemoeilijkt.
Beide bugs laten zien dat het gevaarlijkste verkeer kan opgaan in het dagelijkse verkeer, waardoor het de alarmen omzeilt die de luidruchtige WordPress-probes opvangen.
Wat er op het spel staat
- Developers die framework-updates als optioneel beschouwen, riskeren een volledige overname van hun servers.
- Operations-teams die vertrouwen op statische configuratie om een stack te harden, kunnen zich niet beschermen tegen code die binnen het framework zelf wordt uitgevoerd.
Een praktische checklist voor verdediging
- Deployment-hygiëne – Lever geen geheimen aan in bestanden zoals
.env. Sla ze op in omgevingsvariabelen die tijdens runtime worden aangeleverd of in een dedicated systeem voor geheimbeheer (secret management). - Minimaal aanvalsoppervlak – Schakel framework-functies die je niet gebruikt uit. Dwing een strikte Content-Security-Policy af die het laden van ongeautoriseerde scripts blokkeert.
- Snelle patching – Automatiseer de build-pipeline zodat een nieuwe frameworkversie binnen enkele uren na release kan worden getest en uitgerold. Beschouw beveiligingsupdates als een regulier onderdeel van de release-cyclus, niet als een bijzaak.
Waar je voortaan op moet letten
- Abonneer je op de officiële security advisory feeds voor React, Next.js en alle andere runtime-libraries waar je afhankelijk van bent.
- Integreer vulnerability scanners die JavaScript-packagemetadata begrijpen, zodat een nieuw gepubliceerde CVE een automatische melding triggert.
- Bouw een deployment-pipeline die klaar is voor een rollback; als een patch regressies veroorzaakt, kun je snel terugdraaien zonder het systeem kwetsbaar te laten.
De les is duidelijk: de luidruchtigste aanvallen in je logs zijn vaak afleidingsmanoeuvres. Het echte gevaar schuilt in het framework dat je code vertrouwt. Houd de stack lean, sla geheimen veilig op en behandel patches als routine, dan verander je stille dreigingen op frameworkniveau in beheersbare risico's.
