BYBOWU > Blog > Security

Next.js Security Update: Patch Order and Proof

blog hero image
React2Shell put real heat on React and Next.js teams this month. If you run the App Router, you can’t treat this like a routine bump. Here’s a practical 48‑hour plan that prioritizes what to patch first, how to verify you’re actually safe, when to rotate secrets, and what to hand auditors so you’re not stuck in a retro weeks from now. No drama—just the exact commands, versions, and proof you need to move on.
📅
Published
Dec 20, 2025
🏷️
Category
Security
⏱️
Read Time
10 min

The Next.js security update dropped into an already tense month: React’s RSC protocol saw a critical RCE (CVE‑2025‑55182, widely called React2Shell) on December 3, then two follow‑ups on December 11 (CVE‑2025‑55183 source code exposure and CVE‑2025‑55184 DoS, with a complete DoS fix later tracked as CVE‑2025‑67779). If you ship with the App Router, this is not a “we’ll get to it Friday” situation. Below is a field‑tested patch order, the exact versions to land, and a short list of artifacts to collect so you can prove you’re safe without grinding production to a halt.

Illustration of Next.js and RSC dependencies transitioning from vulnerable to patched

What changed in the Next.js security update on December 11?

After the React2Shell RCE fix, researchers found two more issues in the RSC protocol. The December 11 Next.js advisory confirms:

• DoS: CVE‑2025‑55184, superseded by CVE‑2025‑67779, could hang your server processes via a crafted request.
• Source code exposure: CVE‑2025‑55183 could cause a Server Function to return compiled source of other Server Functions. If you hard‑coded secrets in code (don’t), they may be exposed.

These hit App Router apps. Pages Router apps aren’t directly affected by these two, but you should still upgrade to the patched line so your base stack is aligned with the ecosystem fixes and future mitigations.

Patched Next.js versions to know (choose your line):

• 14.x → 14.2.35
• 15.0.x → 15.0.7
• 15.1.x → 15.1.11
• 15.2.x → 15.2.8
• 15.3.x → 15.3.8
• 15.4.x → 15.4.10
• 15.5.x → 15.5.9
• 16.0.x → 16.0.10
• Canary lines are also patched (15.6.0‑canary.60 and 16.1.0‑canary.19 as of Dec 11).

There’s also a one‑liner helper: npx fix-react2shell-next, which checks and bumps you deterministically to the recommended versions.

Quick timeline: how we got here

• December 3, 2025: React discloses CVE‑2025‑55182 (CVSS 10.0) affecting react-server-dom-* packages (RSC) in versions 19.0, 19.1.0, 19.1.1, 19.2.0, and publishes fixes (19.0.1, 19.1.2, 19.2.1). Next.js posts its advisory for App Router users, including a secrets rotation note if you were online and unpatched as of December 4, 1:00 PM PT.

• December 5, 2025: Exploitation is observed in the wild; initial payloads skew toward cryptominers, with some RATs and persistence techniques reported.

• December 11, 2025: Two more RSC issues disclosed (DoS and code exposure). Next.js releases the follow‑up bulletin and a consolidated patch matrix. The DoS fix requires the later CVE‑2025‑67779 completion.

• December 15, 2025: Defender researchers detail exploitation patterns, including targeting of cloud metadata endpoints and secret discovery tooling post‑compromise.

What’s actually vulnerable right now?

If your application supports React Server Components, you were exposed to the original RCE unless you upgraded the affected packages to 19.0.1, 19.1.2, or 19.2.1, and you were running a patched framework (for Next.js, see the version list above). The DoS and code exposure issues require the December 11+ framework fixes. Default configurations were enough to be at risk, which is why this spike matters even for teams that weren’t experimenting with custom Server Function plumbing.

Frameworks and tooling the React team called out as downstream consumers include Next.js, the Vite RSC plugin, Parcel’s RSC plugin, React Router’s RSC preview, Redwood SDK, and Waku. If any of those are in your pipeline, validate their patched state as well.

Here’s the thing: even if you think “we don’t use Server Functions,” many App Router apps still include RSC machinery via framework defaults. Treat this as an upgrade‑and‑verify event, not a debate about whether you toggled the right feature flag six months ago.

The 48‑Hour Patch‑and‑Prove Plan

This is the shortest, safest route my team uses with clients. Ship the fix, collect evidence, and keep prod healthy.

1) Inventory your exposure (30–60 minutes)

• Identify App Router services first. In monorepos, list Next.js apps and any services running RSC‑aware bundlers or previews.
• On each service, check for RSC packages and framework versions:

npm ls react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack next

• Snapshot your lockfile and node_modules/.package-lock.json or pnpm-lock.yaml for evidence. Export a quick SBOM (npx @cyclonedx/cdxgen -o sbom.json) so you can show “before/after” deltas later.

2) Upgrade with deterministic versions (60–90 minutes)

• For Next.js App Router apps, install the patched line for your major: for example, npm i [email protected] or npm i [email protected]. If you’re unsure, run npx fix-react2shell-next for guardrails.
• For custom stacks that wire React RSC directly, bump the affected packages to fixed versions: 19.0.1, 19.1.2, or 19.2.1. Keep React and React DOM aligned per your framework’s guidance.

• Rebuild. If your CI uses caching, clear module caches to avoid stale transitive deps. Verify no lockfile reverts post‑install.

3) Redeploy and verify behavior (90 minutes)

• Smoke tests: exercise key App Router routes and any Server Functions. Watch for regressions in serialization, streaming, and error boundaries.
• Metrics: confirm cold start and steady‑state latency didn’t balloon. DoS fixes should not materially dent throughput; if they do, profile custom middleware for tight loops.
• Logs: Search for anomalous POST requests to RSC endpoints around December 3–15. Save a short timeline export; it becomes part of your patch evidence.

4) Rotate secrets if you were online and unpatched (2–4 hours)

If your app was internet‑exposed and unpatched during the window highlighted by the advisories (notably December 4, 1:00 PM PT), rotate credentials used by the application. Prioritize:

• Cloud metadata‑reachable tokens (AWS/GCP/Azure/Tencent IMDS).
• Database and message queue credentials.
• API keys (OpenAI, Stripe, Twilio, etc.).
• OAuth client secrets and JWT signing keys.
• Any secrets baked into code (fix that practice during rotation).

Use your cloud’s automated key rotation where possible, and document new ARNs/URIs/fingerprints in a change ticket.

5) Prove you’re safe (60 minutes)

Collect these five artifacts and you’ll survive most audits:

• Dependency diff showing patched versions (lockfile delta).
• CI build log with the exact Next.js and RSC package versions.
• SBOM “after” file plus hash of the deployment image or function bundle.
• Log slice showing no suspicious RSC POST patterns post‑patch.
• Secrets rotation record: what rotated, when, by whom.

People also ask

Are Pages Router apps affected?

They weren’t impacted by the App Router‑specific DoS and code exposure issues disclosed on December 11. The RCE tied to RSC was about the server components protocol; if you’re purely Pages Router, you still benefit from being on a patched framework line for consistency and future hardening. In short: lower risk, still update.

Do I need to patch if I don’t use Server Functions?

Yes. The original React post made it clear: even apps that don’t explicitly expose Server Functions may be at risk if they support RSC. The safest posture is to update the affected packages and your framework, then verify.

What versions “fix” React2Shell and the follow‑ups?

For React’s RSC packages, fixed versions are 19.0.1, 19.1.2, and 19.2.1. For Next.js, choose the patched line for your major (e.g., 14.2.35, 15.0.7, 16.0.10). The DoS fix was completed under CVE‑2025‑67779; make sure you’re on or beyond those December 11 recommendations.

Can a WAF replace patching?

No. Several providers rolled out temporary mitigations, but the React and framework teams were explicit: treat mitigations as a seatbelt while you drive to the shop. You still need the patched packages and framework versions. That said, rate‑limit and anomaly detection on RSC endpoints can reduce noise while you patch.

How to keep production stable while you update

• Blue/green or canary deploys: shift 5–10% traffic to patched builds and watch error rates and p50/p95 latency for 10–15 minutes before full cutover.
• Lock your package manager: use --save-exact and a frozen lockfile to avoid surprise minor bumps that make debugging harder during an incident.
• Keep a rollback ready: store the pre‑patch image digest and a health‑checked rollback route in your deploy pipeline.

Evidence your execs will understand

Non‑technical leadership wants two answers: “Are we safe?” and “How do we know?” Give them:

• One‑page memo: versions before/after, date/time patches landed (UTC), and the services affected.
• Attachments: lockfile diff, build log snippet with exact versions, secrets rotation receipt from your vault/cloud KMS, and a 24‑hour log sample showing clean traffic after the cutover.

Detection ideas if you suspect compromise

• Hunt for unusual outbound traffic immediately after suspicious POSTs to RSC endpoints.
• Review system user creation, SSH authorized_keys changes, and installation of RMM tools you didn’t approve.
• Scan for common coin miner processes and persistence, then widen to any bespoke RATs seen in your telemetry. If you find anything, isolate hosts, rotate all credentials, and assume lateral movement attempts.

Strategic takeaways for engineering leaders

1) Treat RSC as server code. It runs close to your data and secrets; gate it with the same standards you use for APIs.
2) Budget for “security sprints.” Incidents like this aren’t hypothetical—and the cost of delay compounds.
3) Prove changes with artifacts. SBOMs and lockfile diffs remove ambiguity when auditors (or customers) ask hard questions.
4) Stop hard‑coding secrets. Environment variables and vault integrations exist for a reason.

What to do next (today and this week)

Today (2–4 hours):

• Run the inventory command, patch to the correct Next.js line, rebuild, redeploy.
• If you were online and unpatched on December 4 at 1:00 PM PT, start secret rotation immediately.
• Export and store your patch evidence (diffs, logs, SBOM, image digests).

This week (1–2 days):

• Add regression tests around Server Functions and App Router routes so future bumps are safer.
• Put a standing playbook on the shelf. If you need one, start with our Node.js patch frameworks here: 48‑Hour Node.js patch plan and the Dec 18 playbook we maintain for release weeks: Node.js Patch Playbook.
• For Next.js‑specific cadence, compare notes with our guide: Next.js Security Update: Patch, Prove, Repeat, and if you’re catching up on the exploit side, read the incident‑safe tips in React2Shell: Secure Next.js This Week.

FAQ for busy teams

Does Pages Router plus API routes need action?

You won’t see the App Router‑specific issues, but you should still align to the patched major/minor and verify no react-server-dom-* packages sit in your tree. Keep audits simple by standardizing on the recommended versions.

Can I skip secret rotation if I saw nothing suspicious?

Risk‑based call, but the guidance after the initial advisory set a clear line: if you were live and unpatched at that timestamp, rotate. Detection gaps are common in web stacks; err on the side of caution.

What about performance after patching?

RSC serialization and DoS hardening shouldn’t materially hurt throughput. If you observe regressions, profile user code and middleware first; the fixes address malformed payload handling, not core render performance.

Zooming out

RSC sits where client requests become server work. That’s powerful—and fragile if you treat it like a view template. The December 2025 cycle wasn’t “business as usual”; it was your reminder to treat framework servers like any other internet‑facing service. Patch quickly, prove it, and keep receipts. If you make that your norm, the next advisory is a routine sprint, not a midnight war room.

Incident response team monitors dashboards during a security patchInfographic of December 2025 RSC/Next.js security timeline

If you need a second set of eyes on a tricky deployment or rollback path, our team is happy to help. Start a conversation via Bybowu contacts and we’ll get you a plan that fits your release train.

Written by Viktoria Sulzhyk · BYBOWU
2,475 views

Work with a Phoenix-based web & app team

If this article resonated with your goals, our Phoenix, AZ team can help turn it into a real project for your business.

Explore Phoenix Web & App Services Get a Free Phoenix Web Development Quote

Get in Touch

Ready to start your next project? Let's discuss how we can help bring your vision to life

Email Us

[email protected]

We typically respond within 5 minutes – 4 hours (America/Phoenix time), wherever you are

Call Us

+1 (602) 748-9530

Available Mon–Fri, 9AM–6PM (America/Phoenix)

Live Chat

Start a conversation

Get instant answers

Visit Us

Phoenix, AZ / Spain / Ukraine

Digital Innovation Hub

Send us a message

Tell us about your project and we'll get back to you from Phoenix HQ within a few business hours. You can also ask for a free website/app audit.

💻
🎯
🚀
💎
🔥