Skip to content
yisusvii
Go back

Security Thursdays by yisusvii — 2026-10-08

Suggest Changes

By

Table of Contents

Open Table of Contents

🚨 Cybersecurity News of the Week

1. Payload CMS — Form Builder RCE, SQLi, first-register RCE, ACL failures (Oct 6–7)

What happened: Between October 6 and October 7, 2026, Payload published a dense advisory set. The highest-severity item is GHSA-r488-j9vj-wx3q / CVE-2026-105857 — Critical, CVSS 3.1 10.0 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H): @payloadcms/plugin-form-builder < 3.90.0 allowed submissions crafted to execute remote code on the server. Companion issues in the same patch train include:

AdvisoryCVEIssue (short)
GHSA-f7hx-52q9-hcrfCVE-2026-105859Critical CVSS 3.1 9.8 — unauthenticated update of collection documents when orderable: true is used
GHSA-97rh-rhh2-7vjvCVE-2026-105858High CVSS 3.1 8.1 — RCE via public first-register while no initial user exists
GHSA-pj7x-6wpf-pgvpCVE-2026-105856High — SQLi in SQLite/Postgres adapters on json / blocksAsJSON fields (auth’d read+write)
GHSA-v49j-62m6-pgrrCVE-2026-105845Critical CVSS 3.1 9.8 — earlier SQLi via dynamic filters/joins; fixed ≥ 3.88.0 (Oct 6)
GHSA-66wr-7vmr-p5jqCVE-2026-105863Critical (no CVSS vector on GHSA) — auth token can include unintended claims under certain field configs

Who is affected: npm payload and related @payloadcms/* packages on 3.x < 3.90.0 (canary < 4.0.0-canary.34). Form Builder RCE requires the form-builder plugin. MongoDB users are out of scope for the SQLi advisories that name SQL adapters only.

Why it matters: Payload is a common headless CMS/backend for Next.js and Node apps. Unauthenticated Form Builder RCE and open first-register RCE are internet-facing patterns, not niche admin bugs.

Exploitation status: Not confirmed as mass in-the-wild exploitation in sources reviewed. Severity and prerequisites are taken from vendor GHSAs.

Defender actions: Upgrade to v3.90.0 (or canary ≥ 4.0.0-canary.34). Ensure an initial admin user already exists so first-register is closed. Review orderable: true collections and form-builder exposure at the edge.

Primary sources: linked GHSAs; v3.90.0; v3.88.0.

2. Langflow — MCP stdio command injection + Python REPL RCE (Oct 6–7)

What happened: On October 7, 2026, Langflow published GHSA-w794-rj3p-xv45 / CVE-2026-105697 (Critical, CVSS 3.1 9.9, AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H). Before 1.10.3, MCP stdio server configs accepted arbitrary command/args. Pre-1.10.3 execution wrapped them in bash -c "exec …". Any user who can hit MCP server settings or embed MCP Tools in a flow can run OS commands as the Langflow process user when Langflow connects to the “server.” With default LANGFLOW_AUTO_LOGIN=true, GET /api/v1/auto_login issues a token without credentials — so default exposed installs are effectively unauthenticated. Partial allowlisting landed in 1.9.0; the execution sink was fully fixed in 1.10.3 (no shell; shared validation).

Separately, on October 6, GHSA-8qpj-27x8-pwpq / CVE-2026-10561 (Critical, CVSS 3.1 9.9) covered PythonREPLComponent / legacy REPL tool executing unsandboxed Python in-process — fixed core in 1.10.1 (further hardening through 1.12.3 per advisory text).

Who is affected: PyPI langflow ≥ 1.1.2, < 1.10.3 (MCP); REPL < 1.10.1. Also langflow-base / lfx bands on the MCP advisory.

Why it matters: AI flow UIs are being treated like internal notebooks while listening like production APIs. Command-exec sinks plus default auto-login is a predictable compromise path.

Exploitation status: Advisory states the reporter found several internet-facing vulnerable Langflow servers. That is confirmed exposure, not confirmed active exploitation campaigns in the sources reviewed.

Defender actions: Upgrade to v1.10.3 or newer. Disable auto-login. Do not publish Langflow on untrusted networks. On multi-tenant hosts, use package allowlists / interpreter hardening env vars documented in the advisory.

Primary sources: GHSA-w794-rj3p-xv45, GHSA-8qpj-27x8-pwpq, v1.10.3.

3. Flowise — prompt-injection RCE/SSRF and NodeVM/puppeteer escape (Oct 7)

What happened: On October 7, 2026, Flowise advisories for ≤ 3.1.2 (fixed 3.1.3) covered:

Who is affected: npm flowise and flowise-components ≤ 3.1.2. Patched release tag observed: flowise@3.1.3.

Why it matters: Same class as Langflow: agent UIs that eval model output or “sandbox” JS become host RCE when validators are regex blocklists and browser automation is allowlisted into the sandbox.

Exploitation status: Not confirmed mass exploitation in sources reviewed.

Defender actions: Upgrade to ≥ 3.1.3. Require auth on prediction APIs. Disable unused agent nodes. Do not run Flowise containers as root with broad network egress.

Primary sources: linked GHSAs; flowise@3.1.3.

4. Ghost CMS — bookmark-image RCE and theme-translation RCE (Oct 7)

What happened: On October 7, 2026, Ghost published multiple staff-driven RCE/XSS issues. Highest practical risk for self-hosters:

Additional stored XSS paths (embed cards, SVG uploads, oEmbed, local file uploads) share the same upgrade floor narrative — treat 6.67.0 as the practical self-host target this week.

Who is affected: Self-hosted Ghost on the version bands above. Ghost(Pro) customers should follow vendor communications; this digest tracks the open-source package advisories.

Why it matters: Contributor-level RCE via a normal editorial feature (bookmark cards) collapses the usual “only admins install themes” mental model.

Exploitation status: Not confirmed in the wild in sources reviewed.

Defender actions: Upgrade self-hosted Ghost to ≥ 6.67.0. Limit staff roles until patched. Review recently added bookmark cards and theme uploads.

Primary sources: linked GHSAs; v6.67.0, v6.64.0.

5. Backstage, Next.js floors, vm2, proxy-addr, and adjacent libraries (Oct 5–7)

Additional high-signal items from the window:


🛡️ CVEs That Deserve Attention

CVEProductSeverityExploitation statusPrimary riskRecommended action
CVE-2026-105857Payload Form BuilderCritical 10.0Not confirmed mass ITWUnauth RCE via form submissionsUpgrade plugin/payload ≥ 3.90.0
CVE-2026-105697Langflow MCP stdioCritical 9.9Internet-facing installs reported; ITW mass exploit not confirmedOS command injection as service userUpgrade ≥ 1.10.3; disable AUTO_LOGIN
CVE-2026-73487Flowise agentsCritical ~9.3Not confirmed mass ITWPrompt-injection → exfil/SSRF/RCEUpgrade ≥ 3.1.3; auth prediction API
CVE-2026-93605vm2 NodeVMCritical 10.0Not confirmed mass ITWSandbox escape via child_process≥ 3.12.1; migrate off vm2
CVE-2026-105642Ghost bookmark cardsHigh 8.8Not confirmed mass ITWContributor-level host RCESelf-host Ghost ≥ 6.67.0
CVE-2026-90711proxy-addr / Express trustCritical 9.1Not confirmed mass ITWClient spoofs req.ip≥ 2.0.8; fix trust CIDRs
CVE-2026-94483Next.js Image OptimizationHigh (3.1 6.5 / 4.0 8.3)Not confirmed mass ITWSSRF to private IPs via remotePatternsnext ≥ 16.3.8; audit remotePatterns

CVE-2026-105857 — Payload @payloadcms/plugin-form-builder RCE

CVE-2026-105697 — Langflow MCP stdio OS command injection

CVE-2026-73487 — Flowise CSV/Airtable agent validator bypass

CVE-2026-93605 — vm2 NodeVM sandbox escape

CVE-2026-105642 — Ghost bookmark card image RCE

CVE-2026-90711 — proxy-addr trusted-hop spoofing

CVE-2026-94483 — Next.js Image Optimization SSRF


🔧 Basic Security Tool of the Week

Syft v1.54.1 — SBOM generator for directories, images, and archives

What it does: Syft (Anchore) produces a Software Bill of Materials from container images, filesystems, archives, and more. Output formats include SPDX, CycloneDX, and Syft JSON. It inventories packages so you can prove what you shipped and feed scanners (including last week’s Grype).

Who it is for: Developers, DevOps/SRE, platform, and AppSec engineers who need repeatable dependency inventory after a week dominated by npm/PyPI patch floors (Payload, Ghost, Next, vm2, proxy-addr, Langflow, Flowise).

Why this week: Different category from last week’s Grype (vulnerability matching) and earlier Trivy / Checkov / TruffleHog / OSV-Scanner / gosec. Syft answers “what packages are actually in this artifact?” before you argue about CVE noise. Latest GitHub release tag observed at research time: v1.54.1 (published 2026-10-06 — inside this research window; active maintenance).

Install (authorized machine only, pick one):

# Quick install script (review script before use in production)
curl -sSfL https://get.anchore.io/syft | sh -s -- -b /usr/local/bin

# Homebrew
brew install syft

# Docker (no host install)
docker pull anchore/syft:v1.54.1

Safe basic example — generate SBOMs only for trees/images you own or are authorized to assess:

# SBOM for the current authorized project directory (SPDX JSON)
syft dir:. -o spdx-json=sbom.spdx.json

# SBOM for an authorized local/container image you built
syft your-registry.example/your-app:1.2.3 -o cyclonedx-json=sbom.cdx.json

# Dockerized run against the current authorized repo
docker run --rm -v "$PWD":/work -w /work anchore/syft:v1.54.1 dir:. -o table

# Optional: pipe inventory into Grype on an authorized artifact
# syft dir:. -o json | grype

How to read results: Confirm expected package names/versions for this week’s floors (payload, next, ghost, vm2, proxy-addr, langflow, flowise). Prefer SPDX/CycloneDX in CI artifacts. Diff SBOMs between builds to catch unexpected dependency drift. Then scan the same SBOM with a vuln matcher if needed.

Limitations: Inventory quality depends on detectable package metadata (scratch/distroless, vendored copies, and non-standard install paths can under-report). An SBOM is not a vulnerability verdict and not an exploitability proof. Never point Syft at third-party registries, customer clusters, or hosts without authorization. Pin the Syft version in CI.

Links: Repository · v1.54.1 release · Docs


💡 Security Tip of the Day

Today’s tip: Audit every Express/proxy-addr trust proxy setting for IPv4-mapped IPv6 “short prefix” mistakes (for example ::ffff:10.0.0.0/8); use the correct mapped prefix (/104 for a /8 IPv4 block) or plain IPv4 CIDR, then upgrade proxy-addr to ≥ 2.0.8.

Why it matters: CVE-2026-90711 shows a mis-typed mapped subnet can compile silently into “trust all IPv4,” so clients choose their own X-Forwarded-For and become req.ip. IP allowlists, admin rate limits, geo blocks, and audit trails then lie.

How to apply it (≈10 minutes):

  1. Search configs and code: trust proxy, proxy-addr, app.set('trust proxy', ::ffff:.
  2. Replace mapped short prefixes with documented correct forms (or IPv4 CIDRs your library accepts).
  3. Bump proxy-addr (and parent frameworks that bundle it) to ≥ 2.0.8.
  4. From an unauthorized client IP, send a forged X-Forwarded-For: 127.0.0.1 and confirm req.ip stays the real peer, not the forged hop.
  5. Add a CI/config test that fails if trust lists contain known-bad prefix lengths.

Verify: Forged forwarded headers no longer satisfy IP allowlists; legitimate traffic behind real proxies still resolves correctly; dependency lockfile shows proxy-addr@≥2.0.8.


✅ Security Actions for This Week

  1. Emergency: Patch Payload → ≥ 3.90.0 (Form Builder plugin included); confirm first admin user exists; review public form endpoints.
  2. Emergency/High: Upgrade Langflow → ≥ 1.10.3 and Flowise → ≥ 3.1.3; disable auto-login / lock prediction APIs; pull internet-facing agent UIs off the open internet until patched.
  3. High: Self-hosted Ghost → ≥ 6.67.0; Backstage TechDocs techdocs-node ≥ 1.15.4, Scaffolder backend patched trains, OIDC module ≥ 0.4.20.
  4. High: Lockfile sweep — vm2 ≥ 3.12.1 (or remove), proxy-addr ≥ 2.0.8, shell-quote ≥ 1.11.0, next ≥ 16.3.8 (15.x → 15.5.27), WeasyPrint ≥ 70.0, quasar ≥ 2.22.0 where applicable; finish last week’s next/og / Fastify / axios / PyJWT items if open.
  5. Hygiene: Generate an authorized Syft SBOM for one production image or repo and diff it against this week’s package floors; apply the trust-proxy tip.

Sources


Suggest Changes
Share this post on:


Previous Post
The Ultimate Guide to Playwright Website Testing
Next Post
Cloudflare’s September–October 2026 Updates: Quick Tunnels, Basin, and AI Tools