October 2026 security patches: Next.js 16.4.1 and PgBouncer 1.26.1

What the Next.js security updates of September 30 and October 14, 2026 and PgBouncer 1.26.1 fix, who is exposed in each case and a version checker.

In this article
In 30 seconds

On October 14 Next.js published 16.4.1 and 15.5.28 with two critical remote-code-execution fixes and one denial-of-service fix, and PgBouncer 1.26.1 fixed a SCRAM authentication bypass; if you use either, check your version today.

1. Next.js: the October 14 out-of-band update#

On October 14, 2026 Next.js published an out-of-band security update with two fixes postponed from the September release because of upstream dependency delays. The fixed versions are 16.4.1 (Active LTS) and 15.5.28 (Maintenance LTS). To install them: npm install [email protected] or npm install [email protected].

FindingSeverityWho is exposedIdentifier
Unauthenticated remote code execution in use cache functions returning typed arraysCriticalApp Router with Cache Components; no workaroundGHSA-673q-mjm6-r5xr
Remote code execution in the Image Optimization API with SVGCriticalNext.js on glibc-based Linux; workaround: sharp 0.35.5 or laterCVE-2026-96889
Denial of service in the App Router with Server ActionsHighApps with at least one Server Action; the Pages Router is not affectedGHSA-p3m5-59mp-jv5r

For the remote code execution in use cache, Next.js says there is no workaround and that you must upgrade even if your application has no similar functions. For the SVG image one, the workaround is to use sharp 0.35.5 or later; upgrading Next.js makes the package manager install a fixed version.

Documentation: Next.js: October 14, 2026 security update ↗

2. Next.js: the September release#

On September 30, 2026 Next.js had already published fixes in versions 16.3.8 and 15.5.27. The findings are mostly medium severity and depend on specific configurations. The table says who each one affects.

FindingSeverityWho is exposed
SSRF in Image Optimization (CVE-2026-94483)HighApps with images.remotePatterns configured
SSG/ISR cache poisoning in self-hosted Pages Router (CVE-2026-94543)MediumSelf-hosted; Vercel is not affected
Cache poisoning with a root catch-all page (CVE-2026-94484)MediumSSG/ISR pages with a root catch-all route
Leak in metadata image routes (CVE-2026-94485)MediumApp Router built with webpack; Turbopack is not affected
Leak across root param values in nested use cache (GHSA-h694-7cp9-m8p3)MediumWith Cache Components
Draft Mode content leaked from use cache (CVE-2026-94544)MediumWith Cache Components and Draft Mode previews
Leak in the development server's MCP endpoint (CVE-2026-94486)LowOnly with next dev

Anyone on 16.3.8 has the September fixes but not the October ones, which were published only in 16.4.1 and 15.5.28.

Documentation: Next.js: September 2026 security release ↗

3. PgBouncer 1.26.1#

PgBouncer 1.26.1 was released on October 14, 2026 and fixes three vulnerabilities. The most serious is an authentication bypass: a client that knows the password of a user in the authentication file can log in as another SCRAM user, including administrators. The changelog gives no severity score.

CVETypeAffected versionsCondition
CVE-2026-107350Authentication bypass1.17.0 to 1.26.0Both users use SCRAM; the attacker knows the password of an auth_file user
CVE-2026-107349Denial of service1.20.0 to 1.26.0ignore_startup_parameters non-empty and without options
CVE-2026-107348Denial of service1.21.0 to 1.26.0max_packet_size of 2147483649 or more; the default is not affected

If you use PgBouncer with SCRAM for several users, prioritize this update. Version 1.26.1 is the latest according to the changelog.

Documentation: PgBouncer: changelog ↗ · PostgreSQL: news archive ↗

4. Check your versions#

The script compares a Next.js version with the fixed versions in the advisories and a PgBouncer version with the affected ranges its changelog publishes. A Next.js line with no fixed version in the advisories (for example 16.2) is treated as «update to 16.4.1», because the advisories list no fixed version for it.

python
import re

L = {"ok": "up to date", "next": "update to %s", "newer": "newer than the patched lines: check the advisories"}

def parse(version):
    return tuple(int(n) for n in re.findall(r"\d+", version)[:3])

def next_action(version):
    major, minor, patch = parse(version)
    if (major, minor) > (16, 4):
        return L["newer"]
    if (major, minor) == (16, 4):
        return L["ok"] if patch >= 1 else L["next"] % "16.4.1"
    if (major, minor) == (15, 5):
        return L["ok"] if patch >= 28 else L["next"] % "15.5.28"
    return L["next"] % "16.4.1"          # lines with no fixed version in the advisories

PGBOUNCER = {                            # CVE: (first affected version, last affected)
    "CVE-2026-107350": ((1, 17, 0), (1, 26, 0)),
    "CVE-2026-107349": ((1, 20, 0), (1, 26, 0)),
    "CVE-2026-107348": ((1, 21, 0), (1, 26, 0)),
}

def pgbouncer_cves(version):
    v = parse(version)
    return [cve for cve, (first, last) in PGBOUNCER.items() if first <= v <= last]

for v in ["16.2.12", "16.3.8", "16.4.0", "16.4.1", "15.5.27", "15.5.28"]:
    print("next", v, "->", next_action(v))
for v in ["1.19.1", "1.22.0", "1.26.0", "1.26.1"]:
    print("pgbouncer", v, "->", pgbouncer_cves(v))
Prints the status of six Next.js versions and four PgBouncer versions. The rules come from the advisories above; it does not replace reading the full advisories.

5. What to do today#

  • Check the Next.js version in each project with npm ls next and upgrade to 16.4.1 or 15.5.28.
  • If you cannot upgrade immediately and use next/image with SVG, pin sharp at 0.35.5 or later.
  • Check whether you use use cache (Cache Components) or Server Actions: they are the surfaces of the most serious findings.
  • Upgrade PgBouncer to 1.26.1, especially if it authenticates several users with SCRAM.
  • Rebuild and redeploy: updating package.json is not enough until the image or server runs the new version.
  • Record in your inventory which projects were patched and the date.

We applied it at Codifly: the site was on 16.2.12 and we moved it to 16.4.1 after tests and the build passed.

Go deeperWhy your build works locally but fails on deploy

6. Keep your numbers current#

The versions and identifiers are those of the advisories published through October 19, 2026. New fixes may appear; check the official Next.js and PostgreSQL advisories regularly.

  • Subscribe to the Next.js and PgBouncer security advisories.
  • Automate an alert when your version falls below the fixed one.
  • Test in a staging environment before promoting to production.

Sources and scope

Documentation checked on October 19, 2026. Examples and decision criteria are editorial proposals; adapt them to your application's contract and validate them in an authorized test environment.

Compare these options

Compare cloud options

Review pricing, limits, conditions and sources for each option.

Open comparison
Advice

Is your case different?

Tell us your context and the options you're weighing. We reply with criteria and sources, and never sign you up for anything.

Request advice