Weekly Self-Hosted Security Summary (October 22 – October 28, 2026)
Here’s a roundup of 10 critical/high security issues disclosed this week affecting popular open-source self-hosted projects, plus 3 earlier advisories for GitLab, Next.js and MLflow we hadn’t covered yet (see Missed Earlier). Patch quickly: the Brotli “Node2Shell” bug and Nextcloud’s built-in Collabora CODE server are both being exploited in the wild, and LiteLLM has a CVSS 10.0 unauthenticated key leak.
1. Brotli “Node2Shell”: Decoder Out-of-Bounds Write → Remote Code Execution (Now Actively Exploited)
CVE-2026-111497 | Disclosed: October 21, 2026 (PyPI advisory October 22; added to CISA KEV October 27)
Project : Google Brotli (bundled in Node.js; also the PyPI brotli / brotlicffi packages)
Technical Details : When a Brotli stream signals a block switch that its own structure makes invalid, the decoder treats it as “need more input” instead of a format error and keeps appending bytes to an 8-byte internal buffer, writing past its end. Anyone who can get your app to decompress Brotli data can corrupt process memory: crash, memory disclosure or RCE, no authentication needed. In Node.js you don’t have to call the Brotli API yourself to be exposed: fetch() decompresses br responses automatically, and Express 5 / body-parser 2 decompress Content-Encoding: br request bodies by default (inflate: true). CISA added it to the Known Exploited Vulnerabilities catalog on October 27.
- Severity : Critical (CVSS v4.0 9.2). Node.js itself rates it High
- Affected : Node.js 22.x before 22.23.4, 24.x before 24.22.1, 26.x before 26.12.1 (EOL lines 20.x, 23.x, 25.x get no fix). PyPI
brotli1.0.3 – 1.2.0,brotlicffi1.0.3 – before 1.2.1.0 - Fixed : Node.js 22.23.4, 24.22.1, 26.12.1. Brotli 1.0.10, 1.1.1, 1.2.1. PyPI
brotli1.2.1,brotlicffi1.2.1.0 - Workaround : None from Node.js. Upgrade is the fix. If you don’t need compressed request bodies, set body-parser
inflate: false. Rebuild images that bundle Node or Python Brotli, and apply distronodejs/brotliupdates.
Reference : Node.js October 2026 Security Releases / GHSA-9v8h-qqgm-4m35 / CISA KEV alert (Oct 27) / Akamai analysis
2. Nextcloud “Collabora Online – Built-in CODE Server” Command Injection (Now Actively Exploited)
CVE-2026-110447 | Disclosed: October 14, 2026 (added to CISA KEV October 23)
Project : Collabora Online Built-in CODE Server (richdocumentscode Nextcloud app)
Technical Details : Unauthenticated OS command injection in the app’s proxy.php, reachable when the bundled CODE server isn’t running (for example right after a restart, upgrade or crash). Commands run as the web server user. Admins reported attacks from September 10 onward: PHP web shells dropped in the app directory, then searches for password-manager databases and crypto wallets. CISA added it to KEV on October 23. Only the bundled richdocumentscode app is affected. Standalone Collabora Online (Docker, DEB/RPM) used through the Nextcloud Office (richdocuments) connector is not.
- Severity : Critical (CVSS 9.8 v3.1 / 9.2 v4.0)
- Affected :
richdocumentscodebefore 26.4.303 - Fixed : 26.4.303 (needs Nextcloud 30 or later)
- Workaround : Upgrade or remove the app. Collabora says disabling it is not enough. Patching doesn’t remove a web shell: check
apps/richdocumentscodefor unexpected PHP files (Nextcloud’s integrity check helps), search access logs for oddproxy.phprequests, and rotate secrets if you find anything.
Reference : GHSA-f97p-r72q-64h2 / NVD — CVE-2026-110447 / BleepingComputer
3. LiteLLM Proxy Unauthenticated File Read Leaks the Master Key
GHSA-w4c7-34wj-hqm8 (no CVE assigned yet) | Disclosed: October 27, 2026
Project : LiteLLM (BerriAI)
Technical Details : On a proxy running with an Enterprise license, an unauthenticated request to any LLM route can make the proxy read a local file and POST its contents to an attacker-chosen URL. Reading /proc/self/environ gives up LITELLM_MASTER_KEY and your provider API keys, which means full admin on the proxy and, in some configurations, Python code execution as root. Open-source deployments without a license are not affected. A second advisory the same day, GHSA-7hp6-4w63-5g45 / CVE-2026-114612 (CVSS 9.9), lets a user escalate to proxy admin through cross-domain reuse of the salt key.
- Severity : Critical (CVSS 10.0)
- Affected : Before 1.103.10, 1.104.8, 1.105.6, 1.106.5 on their respective lines
- Fixed : 1.103.10, 1.104.8, 1.105.6, 1.106.5 (CVE-2026-114612: 1.100.4, 1.101.3, 1.102.2, 1.103.1)
- Workaround : At the edge, reject or strip POST bodies containing the JSON keys
standard_callback_dynamic_params,gcs_path_service_account,callbacks,success_callbackorfailure_callback. Restrict the proxy’s outbound traffic to your LLM providers. Load the master key from a secret manager and set a separateLITELLM_SALT_KEY. If you were exposed, rotate the master key and provider keys.
Reference : GHSA-w4c7-34wj-hqm8 / GHSA-7hp6-4w63-5g45
4. Portainer: Standard Users Can Grab Host Bind Mounts (Docker Socket) via volumes_from
GHSA-j3mf-q9qf-5qf8 (no CVE assigned yet) | Disclosed: October 22, 2026
Project : Portainer CE / BE
Technical Details : The “Hide bind mounts for non-administrators” check inspects a stack’s volumes but never volumes_from. A Standard user with access to a Docker environment can deploy a Compose stack that inherits the mounts of an existing container that has host bind mounts. On the documented Server and Agent setups, that includes the Docker socket and Portainer’s data directory, which means full control of the Docker host. Docker standalone is affected. Two Medium Portainer advisories came out the same day (GHSA-wc8m-r885-8pj3, GHSA-7423-r5wh-26x7).
- Severity : Critical (CVSS v4.0 9.4)
- Affected : 2.39.0 and later, through 2.45.2 (CE and BE)
- Fixed : 2.45.3. The 2.39.x LTS line gets no patch, and 2.40 – 2.44 are EOL. Move to 2.45.3.
- Workaround : Enable “Hide the use of Stacks for non-administrators” per environment. Only give Standard users environments where you’d trust them with host-level access. Audit existing non-admin stacks for
volumes_from.
Reference : GHSA-j3mf-q9qf-5qf8
5. Outline: Account Takeovers via SSO/OAuth (36-Advisory Batch)
GHSA-48rq-wx9j-g949, GHSA-f28f-75h4-499q, GHSA-m9vh-j2wc-xj24 (no CVEs assigned yet) | Disclosed: October 24, 2026
Project : Outline (wiki/knowledge base)
Technical Details : Outline published 36 advisories in one day (2 Critical, 11 High). The worst are login takeovers:
- GHSA-48rq-wx9j-g949:
userProvisionermatches existing logins byproviderIdalone, but those IDs are only unique within one provider. A colliding ID from a different SSO/OIDC provider signs in as the existing user. - GHSA-f28f-75h4-499q: With Azure SSO and
AZURE_TENANT_IDunset (the default multi-tenant mode), an attacker sets themailattribute in their own free Entra tenant to the victim’s address and signs in as the victim. No victim interaction. - GHSA-m9vh-j2wc-xj24: The Azure and Discord adapters trust the provider’s
emailwithout checking its verified flag, then merge into the existing user. The attacker’s identity stays linked to the victim’s account.
The rest of the batch includes stored XSS (GHSA-w826-vphp-43r6, CVSS 8.7) and other High issues fixed in 1.9.0 – 1.12.0.
- Severity : Critical (GHSA-48rq, GHSA-f28f). The advisory text for GHSA-48rq gives CVSS 3.1 9.1; GHSA-f28f has no published score. GHSA-m9vh: High (CVSS 8.3)
- Affected : Before 1.11.0 (one High issue, GHSA-rq53-m97j-f2pg, before 1.12.0)
- Fixed : 1.12.0 covers the whole batch
- Workaround : If you use Azure SSO, set
AZURE_TENANT_IDto your own tenant. Until patched, turn off the Discord and Azure providers if you don’t need them.
Reference : Outline Security Advisories / GHSA-48rq-wx9j-g949 / GHSA-f28f-75h4-499q / GHSA-m9vh-j2wc-xj24
6. Atlantis: Forged Webhook → Fork-Protection Bypass → Remote Code Execution
GHSA-6mjf-4m52-m5cq (no CVE assigned yet) | Disclosed: October 25, 2026
Project : Atlantis (Terraform PR automation)
Technical Details : Atlantis checks the path of a PR’s clone URL but not the host, and the fork check trusts the head repo name from the same webhook payload. An attacker can point Atlantis at their own git server and have it fetch and plan a Terraform tree they control. --allow-fork-prs=false sees a same-repo PR and lets it through, and the spoofed name also passes --repo-allowlist. With no GitHub webhook secret set, one forged webhook is enough, unauthenticated. It shipped with 11 more advisories (7 High), all fixed in the same release.
- Severity : Critical (CVSS 9.8)
- Affected : Before 0.49.0
- Fixed : 0.49.0
- Workaround : Configure a webhook secret now, and don’t expose the Atlantis events endpoint beyond your VCS provider’s IP ranges.
Reference : GHSA-6mjf-4m52-m5cq / Atlantis Security Advisories
7. GLPI: Unauthenticated SQL Injection Plus 9 More High-Severity Fixes
GHSA-753w-2942-4pxm (no CVE assigned yet) | Disclosed: October 26, 2026
Project : GLPI (IT asset management / helpdesk)
Technical Details : An unauthenticated user can run a time-based SQL injection against the planning feature. The same release fixes nine other High issues, including two MFA bypasses (GHSA-3rr2-mxv6-rmc2, GHSA-rvrc-4jr9-wm5c), a malicious page upload (GHSA-pr87-h373-xr6c) and a marketplace race condition (GHSA-hv93-qr6v-7mpj).
- Severity : High (CVSS v4.0 8.7 for the SQLi; the batch ranges 7.5 – 8.9)
- Affected : SQLi: 11.0.8. Other issues reach back into 10.0.x and older (e.g. 9.3.0+ / 9.5.0+)
- Fixed : 11.0.9 (11.x), 10.0.27 (10.x)
- Workaround : Upgrade. Keep GLPI off the public internet or behind an authenticating proxy.
Reference : GHSA-753w-2942-4pxm / GLPI Security Advisories
8. n8n: Sandbox Escapes and Code Execution in the Main Process
GHSA-gx3v-3x3v-f8r5, GHSA-9p7v-45m2-wxgj, GHSA-f2cw-9483-7vcp (no CVEs assigned yet) | Disclosed: October 28, 2026
Project : n8n
Technical Details : A new batch of 12 advisories (3 High, 9 Medium), separate from last week’s:
-
GHSA-gx3v-3x3v-f8r5: A user who can edit workflows can escape expression-evaluation isolation and run code on the host.
-
GHSA-9p7v-45m2-wxgj: The deprecated Function / Function Item nodes (vm2) and the LangChain Code node run user code in the n8n main process, outside task-runner isolation. Fixed versions block these nodes by default. Existing workflows keep running, so replace them with the Code node.
N8N_DEPRECATED_NODES_BLOCK=falsebrings the hole back. -
GHSA-f2cw-9483-7vcp: The GraphicsMagick bundled in the official Docker image has known bugs. Untrusted images fed to the Edit Image node can lead to RCE.
-
Severity : High (CVSS v4.0 8.7 for GHSA-9p7v; 7.7 for the other two)
-
Affected : Before 1.123.89, 2.45.5, 2.46.1, 3.0.1 (GHSA-9p7v: before 2.42.6, 2.43.3, 3.0.1)
-
Fixed : 1.123.89, 2.45.5, 2.46.1, 3.0.1 (GHSA-9p7v also 2.42.6, 2.43.3)
-
Workaround : Limit workflow editing to trusted users. Don’t wire an unauthenticated Webhook straight into an Edit Image node. Use
NODES_EXCLUDEto drop nodes you don’t use.
Reference : n8n Security Advisories / GHSA-gx3v-3x3v-f8r5 / GHSA-9p7v-45m2-wxgj / GHSA-f2cw-9483-7vcp
9. Nextcloud: Unauthenticated Persistent DoS via Federated Share Injection
CVE-2026-77167 | Disclosed: October 27, 2026
Project : Nextcloud Server / Enterprise Server
Technical Details : An unauthenticated attacker can abuse the federated share endpoint to write arbitrary rows into oc_share_external. Nothing cleans those rows up. They trigger three separate denial-of-service conditions that renew themselves every 24 hours until the rows are removed. Nextcloud published 9 more Medium/Low advisories the same day.
- Severity : High (CVSS 7.5)
- Affected : Nextcloud Server before 34.0.2, 33.0.7, 32.0.13 (Enterprise back to 22.x)
- Fixed : Server 34.0.2, 33.0.7, 32.0.13. Enterprise also gets fixes back to 22.2.11 / 22.2.10.42 (see advisory)
- Workaround : Disable receiving federated shares.
Reference : GHSA-5572-968j-v7g5
10. FreshRSS 1.30.0: Login as Any User + PHP Object Injection
GHSA-8pvw-w7w8-vjj7, GHSA-rv9c-qhwg-9j55 (no CVEs assigned yet) | Disclosed: October 21 and October 24, 2026
Project : FreshRSS
Technical Details :
- GHSA-8pvw-w7w8-vjj7 (October 21, after last week’s cut-off): Form login calls
password_verify()with the browser-supplied challenge as the hash argument. Since PHP accepts legacycrypt()formats, an attacker can downgrade to DES and log in as any user without the password. - GHSA-rv9c-qhwg-9j55 (October 24): One feed kind has no
caseincacheFilename(), so FreshRSS writes the raw downloaded page into SimplePie’s serialized.spccache, which is later passed tounserialize(). Any user who can add a feed gets PHP object injection.
Two more High issues (GHSA-cgqh-mxr9-mx7h, GHSA-94h5-9h74-7c4q) are fixed in the same release.
- Severity : Critical (CVSS 9.8) for the auth bypass. High (CVSS 8.8) for the object injection
- Affected : Auth bypass: 1.11.0 – 1.29.1. Object injection: before 1.30.0
- Fixed : 1.30.0
- Workaround : Upgrade. Until then, use reverse-proxy/HTTP auth instead of form login, and don’t let untrusted users add feeds.
Reference : GHSA-8pvw-w7w8-vjj7 / GHSA-rv9c-qhwg-9j55
Key Takeaways This Week
- Exploited first: Node2Shell (Brotli) and Nextcloud’s built-in CODE server are on CISA’s KEV list. CISA also added last week’s PHP2Shell bugs (CVE-2026-109618/109619) to KEV on October 26, so if PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 isn’t on every box yet, do it today.
- Rebuild images, not just apps: Brotli lives inside Node.js and Python images. A
docker compose pullonly helps once upstream has rebuilt, so check the Node version inside the container. - SSO is only as good as its email check: Outline trusted unverified Azure/Discord emails, and GitLab’s release (below) fixes an OmniAuth-to-LDAP account takeover. Pin your IdP tenant and check what your apps trust.
- Least-privilege users aren’t least-privilege: Portainer Standard users, n8n workflow editors and GLPI planning (no login at all) all lead to host or database access. Audit who has accounts.
- Unsigned webhooks are an open door: Atlantis with no webhook secret is unauthenticated RCE. Every webhook receiver you run should verify signatures.
- AI/ML tooling is now a target: LiteLLM, MLflow and Next.js-based AI frontends all had critical unauthenticated bugs. Don’t expose these to the internet without auth in front.
- Already on Nginx UI 2.9.0? Ten more advisories published October 22 (including
cert_syncarbitrary conf writes) are all fixed in 2.9.0, the version we recommended last week. Grafana 12.4.14 / 13.2.5 / 13.3.0 (October 27) are Medium-only fixes. Discourse fixed an MCP private-message scope gap (CVSS 7.7) in 2026.10.0-latest.1 / 2026.9.1 / 2026.8.2 / 2026.7.4.
Recommendation : Review your self-hosted stack this weekend and prioritize upgrades for any of the above projects you’re running.
Stay secure!
Questions or need config help? Post in Help .
Missed Earlier
These came out before this week and weren’t in an earlier summary. They’re all critical, unauthenticated and in widely self-hosted software.
11. GitLab CE/EE: Unauthenticated RCE in the Regular Expression Compiler (Back to 7.0)
CVE-2026-110264 | Disclosed: October 21, 2026
Project : GitLab Community / Enterprise Edition
Technical Details : An integer overflow when compiling a crafted regular expression lets an unauthenticated user run code on the GitLab server. It affects every release since 7.0 (2014), and GitLab backported the fix to four older branches. GitLab has published two detection rules (“Onigmo native worker crash”, “Org mode render error burst”). The same release fixes CVE-2026-15723 (CVSS 8.2, OmniAuth SAML + LDAP auto-link account takeover) and CVE-2026-112212 (CVSS 7.5, OAuth/OIDC discovery cache poisoning). This is a different bug from the October 12 regex RCE (19.4.2) we covered earlier.
- Severity : Critical (CVSS 10.0)
- Affected : 7.0 – before 18.11.13, 19.0 < 19.0.10, 19.1 < 19.1.9, 19.2 < 19.2.9, 19.3 < 19.3.6, 19.4 < 19.4.3, 19.5 < 19.5.1
- Fixed : 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13 (19.5.2 followed on October 27)
- Workaround : None. Upgrade, then check logs against GitLab’s detection rules.
Reference : GitLab Critical Patch Release 19.5.1 / CERT-EU 2026-019
12. Next.js: Two Unauthenticated RCEs (Image Optimization SVG + use cache)
CVE-2026-96889 (GHSA-2464-fhr4-w9xw), GHSA-673q-mjm6-r5xr (no CVE yet for the second) | Disclosed: October 14, 2026
Project : Next.js (Vercel). Used by many self-hosted dashboards and AI frontends
Technical Details :
- GHSA-2464-fhr4-w9xw: The Image Optimization API passes SVGs to
sharp, whose memory bug on glibc Linux gives unauthenticated RCE. - GHSA-673q-mjm6-r5xr: In App Router Cache Components, a
use cachefunction that returns multiple typed arrays can be abused for unauthenticated RCE.
A third advisory (GHSA-p3m5-59mp-jv5r / CVE-2026-94482, High) is a Server Actions DoS.
- Severity : Critical (CVSS v4.0 9.5, both)
- Affected : SVG/sharp: 10.0.0 – 15.5.27 and 16.0.0 – 16.4.0.
use cache: 16.0.0 – 16.4.0 - Fixed : 15.5.28, 16.4.1
- Workaround : For the SVG issue, make sure the resolved
sharpis 0.35.5 or later (check your lockfile on 15.5.28). Theuse cacheissue has no workaround.
Reference : Next.js Security Update / GHSA-2464-fhr4-w9xw / GHSA-673q-mjm6-r5xr
13. MLflow: Unauthenticated RCE via Third-Party Scorer Deserialization
CVE-2026-116692 | Disclosed: October 09, 2026 (added to the GitHub Advisory Database October 27)
Project : MLflow
Technical Details : Since 3.12.0, the server imports a request-controlled module path when it deserializes a third-party scorer. Using MLflow’s own experiment, run and artifact-upload endpoints, an attacker uploads a Python module into an allowed package path and triggers it through /ajax-api/3.0/mlflow/scorer/invoke. On the default no-auth server, that is unauthenticated code execution. The official image runs as uid 0. Also fixed: CVE-2026-116690 (CVSS 7.5, file read).
- Severity : Critical (CVSS 9.8)
- Affected : 3.12.0rc0 – before 3.17.0
- Fixed : 3.17.0
- Workaround : Never expose an MLflow server without authentication in front of it, and don’t run it as root.
Reference : GHSA-26p8-2jq9-3vq9