<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/full-coverage-of-23-cves-affecting-php-node-js-python-go-and-more-k64bilm3v" -->

---
title: Context for your agent to fix 47 CVEs, affecting PHP,...
description: A single day brought disclosures for 23 CVEs spanning PHP, Node.js, Python, Go, GitLab, LiteLLM and more. PHP has two unauthenticated RCE bugs...
canonical: https://daily.dev/posts/context-for-your-agent-to-fix-47-cves-affecting-php-node-js-python-go-and-more-k64bilm3v
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Context for your agent to fix 47 CVEs, affecting PHP, Node.js, Python, Go and more | daily.dev
og:description: A single day brought disclosures for 23 CVEs spanning PHP, Node.js, Python, Go, GitLab, LiteLLM and more. PHP has two unauthenticated RCE bugs...
og:url: https://daily.dev/posts/context-for-your-agent-to-fix-47-cves-affecting-php-node-js-python-go-and-more-k64bilm3v
og:image: https://api.daily.dev/og/posts/K64bILm3V.png
og:image:alt: Context for your agent to fix 47 CVEs, affecting PHP, Node.js, Python, Go and more
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Context for your agent to fix 47 CVEs, affecting PHP, Node.js, Python, Go and more

**[Ido Shamun](https://daily.dev/sources/28849d86070e4c099c877ab6837c61f0)** · [@idoshamun](https://daily.dev/idoshamun) · 14 min read · 126 upvotes · 10 comments

## Summary

A single day brought disclosures for 23 CVEs spanning PHP, Node.js, Python, Go, GitLab, LiteLLM and more. PHP has two unauthenticated RCE bugs (CVE-2026-109618, CVE-2026-109619, both 9.2) affecting every version, with millions of exploit attempts but no confirmed breach yet; patch to 8.2.35, 8.3.36, 8.4.27 or 8.5.12. LiteLLM 1.107.0 shipped a credential-stealing backdoor on PyPI and Docker after attackers used stolen OAuth tokens to publish poisoned artifacts; stolen AWS keys were used within hours. Railway was breached, exposing some decrypted environment variables. GitLab has a CVSS 10.0 unauthenticated RCE (CVE-2026-110264) dating back to version 7.0, fixed in 19.5.1 and backported releases. Node.js shipped about ten fixes including a Brotli RCE bug, and weak eMudhra intermediate certificate keys require updates to Go, Python's certifi, and OS certificate bundles.

## Content

You don't need to read all of this. The first two sections cover what happened and what to do about it. Everything after that is reference material for whoever ends up doing the patching or the incident response. You can forward this to your agent as context.

## Updates

- **Oct 23, 05:05 UTC:** Ruby 4.0.9, 3.4.12 and 3.3.13 fix the GitLab regex bug.
- **Oct 22, 23:05 UTC:** Railway builds are back on every plan.
- **Oct 22, 19:06 UTC:** eMudhra is quitting TLS. Move to another CA, not its G1 root. Laravel 13.29.0 and 12.68.0 fix a 9.2 auth bypass.
- **Oct 22, 17:05 UTC:** Next.js 16.4.1 and 15.5.28 fix two critical RCEs.
- **Oct 22, 15:15 UTC:** cPanel and Plesk patch PHP2Shell on 7.4 to 8.1.
- **Oct 22, 13:15 UTC:** Railway attackers also drained crypto wallets.
- **Oct 22, 11:10 UTC:** Bun 1.4.4 fixes Brotli, QPACK and eMudhra. Amazon saw a PHP2Shell attempt on Oct 17.

## What happened

**PHP2Shell.** PHP disclosed two unauthenticated remote code execution bugs in the engine itself (CVE-2026-109618 and CVE-2026-109619, both 9.2). Every PHP version is affected. Attackers have made millions of attempts, but nobody has confirmed a successful break-in yet. Updating your framework or CMS won't help, because the bug lives in the runtime.

**LiteLLM 1.107.0 shipped with a backdoor** on PyPI and Docker. It steals every credential on the machine as soon as Python starts. Stolen AWS keys were being used within hours.

**Railway was breached.** Customer environment variables were exposed, some decrypted, and the attackers were after AI provider keys.

**GitLab has a CVSS 10.0 bug** (CVE-2026-110264) that gives anyone code execution on a self-managed instance, no login needed. It goes back to version 7.0.

**Node.js** shipped about ten security fixes, one of which can lead to RCE. Separately, the CA **eMudhra** had private keys weak enough for anyone to recover. Runtimes and OSes are removing those certificates, so Go, Python and your system CA bundle need updates.

The same day brought quieter infrastructure fixes that would have been the headline any other week: BIND, Unbound and PowerDNS, musl libc, Apache Tomcat, and an attack that can knock over HTTP/3 servers with a single connection.

## What to do

If a server might already have been hit, patching won't clean it up. Rotate whatever secrets it held.

### Today

- **PHP (WordPress, Laravel, Magento, Drupal, custom):** upgrade to 8.2.35, 8.3.36, 8.4.27 or 8.5.12. Restart Apache, PHP-FPM and every worker, then rebuild your images. On 8.1 or older, upgrade or isolate the server (cPanel and Plesk ship backports).
- **litellm (package or Docker image):** if you installed 1.107.0 or pulled `latest`/`main-*` on October 21, treat the machine as compromised. Rebuild on 1.106.2 and rotate every secret it could reach. Don't run `pip` on it first.
- **Railway:** rotate every environment variable, AI provider keys first. Regenerate database passwords and check provider billing for spend you didn't make.
- **Self-managed GitLab:** upgrade to 19.5.1, or your line's fix (19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13). If you can't, take it off the public internet. GitLab.com is already covered.
- **Plex Media Server:** upgrade to 1.43.3+ and stop exposing port 32400. Actively exploited.
- **Citrix NetScaler:** patch to 14.1-73.37 or 13.1-64.23 and check for compromise. Actively exploited.

### This week

- **Node.js:** 26.12.1, 24.22.1 or 22.23.4, then rebuild and restart. Bun: 1.4.4. Make it today if you handle untrusted Brotli or TLS.
- **Next.js:** 16.4.1 or 15.5.28 (out October 14). Two critical unauthenticated RCEs: SVG Image Optimization (CVE-2026-96889) and `use cache` returning typed arrays.
- **Laravel:** 13.29.0 or 12.68.0. CVE-2026-114509 (9.2) lets anyone log in as any user via the `token` API guard on MySQL or MariaDB.
- **Go, Python, Java, Rust, Electron, any Linux server:** update OS `ca-certificates`, Go (1.27.3 or 1.26.10, then rebuild binaries), certifi 2026.10.19, and any CA bundles your dependencies vendor.
- **Sites with an eMudhra certificate:** reissue from another CA before October 27.
- **DNS servers:** BIND 9.20.30 or 9.21.27. Unbound 1.26.2. PowerDNS Recursor 5.3.12 or 5.4.8; Authoritative 4.9.18, 5.0.8 or 5.1.5.
- **HTTP/3 servers:** quic-go 0.57.0, quiche 0.29.3, lsquic 4.9.0, Bun 1.4.4. No fix yet for the h3 crate or aioquic (see below).
- **Apache Tomcat:** 11.0.27, 10.1.61 or 9.0.123. One bug can mix up responses between users over HTTP/2.
- **Alpine or anything on musl:** apply the regcomp patch, or take 1.2.7 when it ships. Only matters if you compile regexes from untrusted input.
- **Python tooling:** Pillow 13.0.0 (several critical fixes), virtualenv 21.14.9.
- **Also:** Storybook 8.6.19, 9.1.21 or 10.6.2. NGINX 1.30.6 or 1.31.7 if you skipped last week. Roundcube 1.6.20 or 1.7.5.

## Confirmed, unconfirmed, and wrong

**Confirmed:** PHP2Shell exploit attempts at scale. The LiteLLM backdoor was live and stolen credentials were used. Railway secrets were exposed. Plex and NetScaler are being exploited.

**Not proven:** a successful PHP2Shell break-in, GitLab exploitation, any fraudulent eMudhra certificate, or exploitation of the DNS, musl, Tomcat or HTTP/3 bugs.

**Wrong, despite what you may have read:**

- PHP2Shell isn't a CVSS 10. It's 9.2.
- No country shut down its internet. Individual sites went offline as a precaution.
- There's no evidence a third of websites are compromised.
- CVE-2026-99999 isn't an internet-wide risk. It's a VM escape that only matters on hypervisor hosts.
- Nobody "has a root CA". The compromised eMudhra certificates were intermediates, and they're distrusted.
- NGINX doesn't have three new critical flaws. Those were patched October 14.
- No primary source links the Railway breach to LiteLLM.

---

## Reference

Optional. Jump to whichever incident you are dealing with.

### PHP2Shell

**The bugs.** CVE-2026-109618 hits when a request runs out of memory mid-way through building internal state, and shutdown uses the broken state. CVE-2026-109619 lets one request's state outlive its memory, so the next request on the worker uses freed memory. Both can leak other requests' session tokens and API keys. mod*php, PHP-FPM, php-cgi, FrankenPHP and LiteSpeed are all affected; mod*php is worst, since a demonstrated path fires before app code runs. 7.4, 8.0 and 8.1 get only source backports, and roughly half of PHP sites run end-of-life branches.

**Timeline.** Calif reported it on August 11; OpenAI, Wiz and Trail of Bits found it independently. Details and an exploit video leaked on October 20. Cloudflare enabled WAF rules for all plans at 03:02 UTC on October 21, and Chainguard shipped patched images six hours before the 14:00 UTC release, which the PHP Foundation says broke the embargo.

**Exploitation.** Cloudflare says attempts hit hundreds of thousands within two hours of disclosure, and millions since. Arctic Wolf saw some pulling ELF and Go malware. Amazon saw an attempt on October 17, during the embargo (103.216.220[.]92), then more from 31.223.184[.]166, 37.19.200[.]5, 134.209.159[.]64, 103.114.163[.]188 and 95.217.98[.]37. No confirmed compromise, not in CISA KEV. Agencies including CISA and UK NCSC advised going offline if you can't patch or mitigate.

**Patching notes.**

- On distro packages, check the changelog for the CVE IDs rather than trusting `php -v`.
- Restart every PHP process. Opcache serves old code until you do.
- Search Dockerfiles, CI and Helm charts for pinned PHP versions.
- The fix adds a hard memory limit, so recheck `memorylimit` _and_ `postmax_size`.
- Community images tagged below official versions (like `8.4.26`) carry backports, not the upstream fix.

**If you can't patch yet** (partial mitigations from php.net):

- For -109618: `memorylimit=-1` _via_ `phpadminvalue`_,_ `postmaxsize` _at 8M (32M with uploads), and proxy limits on request size and multipart parts. Don't use_ `RLIMITAS` or `RLIMIT_DATA`.
- For -109619: `session.uploadprogress.enabled=0` _in php.ini or the FPM pool, then restart workers. On 8.5 also set_ `fatalerror_backtraces=0`.
- A WAF buys time but fixes nothing.

**Detection.** Odd multipart requests followed by memory-limit errors or 500 bursts, oversized `PHPSESSID` cookies, unexplained worker restarts. Check logs back to October 17.

### LiteLLM 1.107.0

**How.** An attacker with stolen GitHub CLI OAuth tokens for three LiteLLM engineers disabled branch protection and pointed the release workflow at a lookalike repo, `Berri-AI/litellm`, so the real pipeline built, signed and published the poisoned artifacts. The `v1.107.0` git tag is clean. LiteLLM says the tokens leaked through logs of an internet-exposed internal deployment.

**Window (UTC, October 21).**

- PyPI `litellm==1.107.0`, all wheels and sdist: 11:40 to 13:23.
- GHCR `ghcr.io/berriai/litellm` (plus `-database`, `-non_root`), tags `v1.107.0`, `latest`, `main-latest`, `main-stable`: 11:46 to 13:51.
- Docker Hub `litellm/litellm`, same tags: 11:46 to 14:20.
- 1.106.2, 1.107.0rc1 and rc2 are clean.

**Payload.** `cook.pth`, `cook.py` and `sitecustomize.py` at the root of site-packages run on every Python start, including `pip`, even without importing litellm. It takes browser credentials, SSH and GPG keys, cloud credentials including instance metadata, Kubernetes, Docker and Vault configs, CI secrets, package registry and git credentials, `.env` files, AI coding tool configs and every readable process environment. With `DATABASE_URL` set it also dumps the proxy's stored provider keys. Data goes to `www.litellm[.]dev`. A second stage polled a GitHub dead drop hourly; Wiz says it never activated.

**Exploitation.** Within hours, Wiz saw stolen AWS keys checking identity and listing Bedrock models, the usual LLMjacking opener.

**Response.**

1. Markers: `/tmp/.pconce*` (written only after successful exfiltration), `/tmp/remotecodeloader.lock`, env var `PRIVCOLLECT_ACTIVE=1`.
2. Before running `pip`, delete the three files and their `.pyc` from every site-packages and kill the detached Python process. Rebuilding from scratch is better.
3. Pin `litellm==1.106.2` and pin images by digest.
4. If it had internet access, rotate cloud roles, every provider key in the proxy DB, LiteLLM master and virtual keys, the DB password, host env secrets, SSH keys and git tokens.
5. Search CloudTrail in every region for `sts:GetCallerIdentity` and `bedrock:List*` from unknown IPs.
6. Block `litellm[.]dev`, `168.100.8[.]57` and `165.227.201[.]8`. Hashes and digests are in the Wiz post and GitHub issue #47826.

LiteLLM also plans to disclose a separate embargoed vulnerability on October 27.

### Railway

Someone got into the systems storing customer environment variables and obtained some decrypted. Railway calls it part of a series targeting platform companies for AI inference keys and has asked providers to revoke keys proactively. No root cause or affected-account count yet; affected customers will get email.

Researcher Taylor Monahan says they also drained crypto wallets whose keys were in Railway (from 19:36 UTC October 21; attacker `0xd9773325282874d18cb83f1fe50f14c39750b2ee`). Move those funds.

Railway invalidated all API tokens at 04:17 UTC on October 22; builds were back on every plan by 22:49 UTC. Users were told to rotate keys, then couldn't deploy them for most of a day.

**Checklist.**

- Rotate every variable: AI keys first (OpenAI, Anthropic, xAI, OpenRouter), then Stripe, AWS, GCP, GitHub and registry credentials.
- Regenerate database passwords from the Database View and redeploy dependent services.
- New Railway API tokens, reconnect GitHub, revoke ghcr tokens.
- Check provider dashboards for unexpected spend (Railway flags Grok usage), CloudTrail in every region, and `pgstatactivity`.
- Export the GitHub org audit log before revoking anything, then look for new OAuth apps, PATs, deploy keys and webhooks.

OpenCode disclosed exposed AI keys on October 18, but nobody has linked it to Railway.

### GitLab CVE-2026-110264

**The bug.** GitLab renders `.org` files with `org-ruby`, which passes a raw `#+TODO:` keyword into Ruby's regex engine. Repeat it over 32,767 times and Onigmo's 16-bit repeat ID overflows into an out-of-bounds write; with heap grooming, that's code execution as `git`. An attacker needs only one public project that can hold a `.org` file.

**Fixes.** 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13. GitLab.com and Dedicated are patched. Ruby 4.0.9, 3.4.12 and 3.3.13 fix the Onigmo bugs for apps compiling untrusted regexes. If you patched the October 12 CVSS 10 (CVE-2026-97229), patch again. The release also fixes 11 more issues, including CVE-2026-15723 (8.2, OmniAuth/LDAP account takeover) and CVE-2026-112212 (7.5, OAuth/OIDC discovery cache poisoning). 19.4.3 and 19.3.6 include migrations, so plan downtime on single-node installs.

**Exploitation.** None reported, not in KEV. A "PoC" repo from a brand-new account appeared at 04:30 UTC October 22. Don't run it.

**Can't upgrade?** Firewall it off the internet, restrict Public and Internal visibility, default new projects to Private.

**Detection.** Look for `Timeout::Error` bursts from the `OtherMarkup` renderer in `exceptionsjson.log`_, org-ruby or Onigmo_ `[BUG]` _dumps in_ `pumastderr.log`, and Workhorse 502s on `.org` blobs. Find payloads with:

`rg -l --glob '*/.org' '^\#\+(TODO|SEQTODO|TYPTODO):.{500,}'`

If compromised, rotate `gitlab-secrets.json` secrets, CI/CD variables, runner and access tokens.

### Node.js 26.12.1, 24.22.1, 22.23.4

- **High:** CVE-2026-111497, a Brotli decoder out-of-bounds write that can lead to RCE if you decompress attacker-controlled Brotli. CVE-2026-105483 and CVE-2026-106069, two TLS hostname check bypasses. CVE-2026-105482, `dns.resolve` truncating names at a NUL byte.
- **Medium:** a keep-alive response desync, and `randomUUID`/`randomInt` repeating values in snapshots and single executable apps.
- Also brings the eMudhra blocklist, OpenSSL 3.5.9, and updated c-ares and undici.
- End-of-life lines get no fix. Bun was affected; 1.4.4 fixes it. Vercel has WAF mitigations live.
- Regressions: `--shared-brotli` builds break (nodejs/node#66895); older `@mswjs/interceptors` can segfault on TLS (nodejs/node#66910).

### eMudhra certificates

Eight eMudhra intermediates (six TLS, two code signing) came from a flawed April 2025 key ceremony with private keys smaller than 256. One was literally 4. Chrome and Firefox blocked them October 17, Apple October 19, Microsoft October 20. Mozilla and Chrome are also dropping emSign ECC Root CA - G3; Chrome's change lands October 27.

No fraudulent certificates have shown up in CT logs, so CT-enforcing browsers were never at risk. The exposure is curl, Go, Python, Java, Node and other clients that don't check revocation or CT.

**Fixed versions.** Go 1.27.3 or 1.26.10 (CVE-2026-111943, GO-2026-6809; `crypto/x509` now rejects these intermediates even with a stale system store, but you need to rebuild). certifi 2026.10.19 (GHSA-6q48-6c7w-9gw2, critical), pip 26.2.2, uv 0.13.4. webpki-roots 1.0.10, rustls-webpki 0.103.16. Java October CPU. Electron 44.9.1, 43.8.1, 42.11.16. Deno 2.9.8. Bun 1.4.4. Distro `ca-certificates` updates. RHEL, Erlang certifi and Bottlerocket are still waiting.

**Gotchas.** macOS's built-in curl, git and python3 read `/etc/ssl/cert.pem`, which still trusts them. Check CA bundles vendored in dependencies (nmap/ncat and texlive so far). Refresh cached Docker Sandboxes images. Don't disable verification to silence errors.

**Test:** `curl https://dv-g3b-emudhra.we-have-a-problem.com/` should fail. emudhra.we-have-a-problem.com tracks fixes per ecosystem.

### DNS, musl, HTTP/3 and other infrastructure

None reported as exploited.

**BIND 9.20.30 / 9.21.27** fixes four CVEs: resource exhaustion (CVE-2026-19630), GSS-TSIG memory corruption (CVE-2026-94300) and two crashes (CVE-2026-96888, CVE-2026-97313).

**Unbound 1.26.2** fixes five, the worst being CVE-2026-97206 (high, DNS-over-QUIC use-after-free) and CVE-2026-109125 (a cache poisoning side channel).

**PowerDNS:** Recursor 5.3.12 / 5.4.8 fix seven CVEs; the one to care about is CVE-2026-85555, a DNSSEC bypass and cache poisoning. Authoritative 4.9.18, 5.0.8, 5.1.5 fix the compression pointer DoS (CVE-2026-73206, 7.5). The compression pointer DoS is a coordinated multi-vendor issue.

**musl CVE-2026-107891:** integer overflows in `regcomp` cause undersized allocations and heap writes. A crash at minimum, code execution possibly. The trigger is the regex itself, so you're only exposed if you compile untrusted regexes through libc. Affects 0.5.0 through 1.2.6. Patch now or take 1.2.7.

**HTTP/3 "Header Accordions":** FoxIO showed one connection can make an HTTP/3 server allocate far more memory than the client sends, enough to kill a default server. Seven of ten implementations were vulnerable.

- Fixed: quic-go 0.57.0 (CVE-2025-64702), quiche 0.29.3 (CVE-2026-12523), lsquic 4.9.0, Wireshark 4.6.2 / 4.4.12 (CVE-2025-13945), Bun 1.4.4 (not yet retested by FoxIO).
- Not fixed: h3 (set `maxfieldsection_size`), aioquic and mitmproxy (disable HTTP/3; `--set http3=false`).
- Not affected: IIS, Envoy, ngtcp2/nghttp3.

**Tomcat:** eight CVEs. CVE-2026-101356 mixes up requests and responses between users with HTTP/2 and async servlets (11.0.22 to 11.0.26, 10.1.55 to 10.1.60, 9.0.118 to 9.0.122). CVE-2026-103119 is an AJP response mix-up.

**Pillow 13.0.0:** critical fixes include CVE-2026-112900 (Ghostscript argument injection, RCE) and CVE-2026-112393 (TIFF heap overflow), plus JPEG overflows and many smaller bugs. Upgrade if you process user uploads.

**virtualenv 21.14.9:** five high-severity bugs (CVE-2026-113722, -113725, -113726, -113732, -113776) where activation scripts run commands smuggled into an environment name or path.

### Everything else

**Actively exploited.**

- **Plex** (CVE-2026-96652, -96654, -96655, -96656): a chain used to install cryptominers and residential proxies. In KEV since October 20. Patching won't remove existing malware.
- **NetScaler** (CVE-2026-88771, -88772, -88779): all in KEV. Check the HA peer too and rotate NetScaler keys and certificates.
- Also added to KEV October 20: SiteGuard Server Edition (CVE-2026-106931) and Siemens Software Center (CVE-2026-110936).

**Patches.**

- **NGINX** (CVE-2026-15176, -93479, -97205): patched October 14 (NGINX Plus: 37.1.0.1, 37.0.5.1). The 9.2 is F5's score; nginx.org rates them medium.
- **Storybook** CVE-2026-114125 (9.4): a malicious site can modify project files while the dev server runs.
- **Oracle October CPU:** 1,209 fixes, including Java JSSE CVE-2026-91403 (9.1).
- **Roundcube**, plus Apache **CouchDB, Pulsar, IoTDB and bRPC**: check their advisories if you run them.

**Supply chain and breaches.**

- **ConnectWise Cloud Backup:** Storm-0940 used stolen app identities to reach Microsoft 365 tenants. Review the service principal's sign-ins.
- **UpdraftCentral:** stolen keys backdoored WordPress sites. Update to UpdraftPlus 1.26.13 or 2.26.13 and audit admins.
- **OVHcloud CLI:** release binaries swapped for 1h33m, linked to GlassWorm.
- **TiDB Cloud:** unauthorized access September 9 to October 7. Rotate management API keys.

**CVE-2026-99999 ("PwnEscape"):** a Linux guest-to-host VM escape, not reachable from the internet receive path. On KVM, Firecracker or other virtio-net hosts, patch the host kernel: 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.57 or 7.2.11. Patching guests doesn't help.

## Sources

- PHP: [php.net](https://www.php.net/archive/2026.php)
- [LiteLLM](https://docs.litellm.ai/blog/security-incident-oct-21-2026), [Railway](https://blog.railway.com/p/security-disclosure-wednesday-october-21st), [GitLab](https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-5-1-released/)

## Community discussion

Top comments from developers on daily.dev.

**@bobbyiliev** · 10 upvotes

> ![image.png](https://media.daily.dev/image/upload/s--OE-6rvaE--/f_auto/v1792677375/ugc/content_f2270359-4604-4f57-9b00-64d7ab89f57f?_a=BAMAMiiw0)

**@softileo** · 5 upvotes

> This is a good reminder that AI coding agents need the right context to fix security issues reliably. Identifying a vulnerability is only the first step; developers still need to review the suggested changes, run tests, and check for regressions before deploying anything. Automating parts of the process can save time, but human review remains essential for security-related changes.

**@petecapecod** · 4 upvotes

> hey do you think we could **_possibly_** add some more things to this list 😅 because it's pretty big already.
>
> Well, guess I'm off to update some stuff

**@shahbaz7** · 3 upvotes

> ![GIF](https://static.klipy.com/ii/d7aec6f6f171607374b2065c836f92f4/cd/68/IF3TipNU.gif)

**@gaburayondev** · 2 upvotes

> The PHP2Shell part is the one that bites in practice. It’s in the runtime, so bumping Laravel or WordPress does nothing. You need 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12, and then you have to restart PHP-FPM and every worker, because opcache keeps serving old code until you do.
>
> Two traps: `php -v` lies on distro packages (check the changelog for the CVE IDs), and the fix adds a hard memory limit, so recheck `memory_limit` and `post_max_size` after upgrading. Also grep your Dockerfiles and CI for pinned PHP versions, since those get missed. If a box might already have been hit, rotate its secrets....

## Similar posts on daily.dev

- [PHP patches released for two critical RCEs](https://daily.dev/posts/php-patches-released-for-two-critical-rces-w11cardmr) · LWN.net · 0 upvotes · 0 comments

---

Tags: [#security](https://daily.dev/tags/security), [#cyber](https://daily.dev/tags/cyber), [#nodejs](https://daily.dev/tags/nodejs), [#php](https://daily.dev/tags/php)

[View this post on daily.dev](https://daily.dev/posts/context-for-your-agent-to-fix-47-cves-affecting-php-node-js-python-go-and-more-k64bilm3v)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/context-for-your-agent-to-fix-47-cves-affecting-php-node-js-python-go-and-more-k64bilm3v","headline":"Context for your agent to fix 47 CVEs, affecting PHP, Node.js, Python, Go and more","text":"A single day brought disclosures for 23 CVEs spanning PHP, Node.js, Python, Go, GitLab, LiteLLM and more. PHP has two unauthenticated RCE bugs (CVE-2026-109618, CVE-2026-109619, both 9.2) affecting every version, with millions of exploit attempts but no confirmed breach yet; patch to 8.2.35, 8.3.36, 8.4.27 or 8.5.12. LiteLLM 1.107.0 shipped a credential-stealing backdoor on PyPI and Docker after attackers used stolen OAuth tokens to publish poisoned artifacts; stolen AWS keys were used within hours. Railway was breached, exposing some decrypted environment variables. GitLab has a CVSS 10.0 unauthenticated RCE (CVE-2026-110264) dating back to version 7.0, fixed in 19.5.1 and backported releases. Node.js shipped about ten fixes including a Brotli RCE bug, and weak eMudhra intermediate certificate keys require updates to Go, Python's certifi, and OS certificate bundles.","url":"https://daily.dev/posts/context-for-your-agent-to-fix-47-cves-affecting-php-node-js-python-go-and-more-k64bilm3v","datePublished":"2026-10-22T06:21:23.471Z","dateModified":"2026-10-23T06:38:11.819Z","author":{"@type":"Person","name":"Ido Shamun","url":"https://daily.dev/idoshamun","image":"https://media.daily.dev/image/upload/s---xy_OAwk--/f_auto,q_auto/v1703781380/avatars/avatar_28849d86070e4c099c877ab6837c61f0","description":"I'm to blame if something goes wrong here 🙈","worksFor":{"@type":"Organization","name":"daily.dev","logo":"https://daily-now-res.cloudinary.com/image/upload/s--MASZOhnv--/f_auto/v1614088267/landing/Daily.dev_logo"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":193400}},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":126},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":10}],"comment":[{"@type":"Comment","text":"","datePublished":"2026-10-22T13:56:18.210Z","url":"https://daily.dev/posts/K64bILm3V#c-HRxDxug4Z","author":{"@type":"Person","name":"Bobby Iliev","url":"https://daily.dev/bobbyiliev","image":"https://avatars3.githubusercontent.com/u/21223421?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":10}},{"@type":"Comment","text":"This is a good reminder that AI coding agents need the right context to fix security issues reliably. Identifying a vulnerability is only the first step; developers still need to review the suggested changes, run tests, and check for regressions before deploying anything. Automating parts of the process can save time, but human review remains essential for security-related changes.","datePublished":"2026-10-22T10:06:01.302Z","url":"https://daily.dev/posts/K64bILm3V#c-numGkd7Q4","author":{"@type":"Person","name":"Haris Malik","url":"https://daily.dev/softileo","image":"https://lh3.googleusercontent.com/a/ACg8ocKTnyAM3xni-bQXmG8WVxKgo43AdHrHZogpkVkRF_tO7Ajozg=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5}},{"@type":"Comment","text":"hey do you think we could possibly add some more things to this list 😅 because it’s pretty big already.\nWell, guess I’m off to update some stuff","datePublished":"2026-10-22T14:49:12.651Z","url":"https://daily.dev/posts/K64bILm3V#c-ouQPBfUBt","author":{"@type":"Person","name":"Peter Cruckshank","url":"https://daily.dev/petecapecod","image":"https://media.daily.dev/image/upload/s--ZJhQyKws--/f_auto/v1721235024/avatars/avatar_A9xh33q0QoxtkGoJRCosp"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4}},{"@type":"Comment","text":"","datePublished":"2026-10-22T15:27:03.307Z","url":"https://daily.dev/posts/K64bILm3V#c-ybf3yko0f","author":{"@type":"Person","name":"Shahbaz Ahmad Siddiqui","url":"https://daily.dev/shahbaz7","image":"https://media.daily.dev/image/upload/s--0wN8WvVK--/f_auto/v1722097587/avatars/avatar_g2gB9vXOh9MXsB10ydU35"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"The PHP2Shell part is the one that bites in practice. It’s in the runtime, so bumping Laravel or WordPress does nothing. You need 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12, and then you have to restart PHP-FPM and every worker, because opcache keeps serving old code until you do.\nTwo traps: php -v lies on distro packages (check the changelog for the CVE IDs), and the fix adds a hard memory limit, so recheck memory_limit and post_max_size after upgrading. Also grep your Dockerfiles and CI for pinned PHP versions, since those get missed. If a box might already have been hit, rotate its secrets. Patching won’t clean it up.","datePublished":"2026-10-22T13:59:43.807Z","url":"https://daily.dev/posts/K64bILm3V#c-zNkwjsf8p","author":{"@type":"Person","name":"Gabu Rayon Dev","url":"https://daily.dev/gaburayondev","image":"https://media.daily.dev/image/upload/s--5hPC52y_--/f_auto/v1773412842/avatars/avatar_8fkdziGASnSSBES6c4Ml9?_a=BAMAMiiu0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/28849d86070e4c099c877ab6837c61f0","name":"Ido Shamun"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Ido Shamun","item":"https://daily.dev/sources/28849d86070e4c099c877ab6837c61f0"},{"@type":"ListItem","position":3,"name":"Context for your agent to fix 47 CVEs, affecting PHP, Node.js, Python, Go and more"}]}
```

