PHP patchNode.js RCEGitLab critical vulnerability

Which Security Patches Should You Apply Now? PHP, Node, GitLab

A checklist for this week's incidents: PHP, Node.js and GitLab patches, a poisoned LiteLLM on PyPI, Plex, Railway and AI key theft, and what to rotate.

Portrait of Luis Chavez-Mattos
Edited by Luis Chavez-Mattos, Director, Product··RSS
A software package crate shown half sealed and half opened to reveal rows of modules, with one swapped-in module highlighted and a rack of keys being replaced, representing security patching and credential rotation.

What do I need to patch or rotate right now?

Update your PHP, Node.js and GitLab installs to the latest patched releases, update any exposed Plex server, check whether a poisoned LiteLLM version ever landed in your Python environments, and rotate your API keys. Rotate the AI provider keys first. Also rotate anything stored as an environment variable on Railway. Over about five days, incidents hit nearly every layer developers depend on, from certificate trust to hosted secrets.

TL;DR

  • A certificate authority, eMudhra, generated signing keys so weak that one private key was reportedly the number four, which forced emergency blocks from Chrome, Firefox and Apple.
  • PHP and Node.js both shipped urgent fixes, and Node's was for a critical remote code execution bug. Update runtimes today.
  • GitLab patched a 10 out of 10 severity flaw that let attackers in without logging in, so self-hosted instances are the priority.
  • A poisoned LiteLLM release sat on PyPI for about two hours and quietly stole developer credentials. Anyone who installed or upgraded in that window should treat their environment as exposed.
  • Unpatched Plex servers are being hijacked in the wild through an exploit dubbed "Plex to shell".
  • Railway warned that attackers may have decrypted customer environment variables, and Open Code users had AI keys stolen, with some seeing hundreds of dollars in unexpected API charges.

What happened to internet trust with eMudhra?

eMudhra is a certificate authority. It accidentally generated signing keys that were trivially weak. One private key was, in the words of the coverage, literally the number four. According to the coverage, a key that guessable meant anyone could have forged a valid certificate for any website.

Chrome, Firefox and Apple responded with emergency blocks. As a developer, you mostly don't need to act, because the browser and OS vendors handled the trust revocation. Still, keep your browsers and operating systems current so the blocks reach you. If your organization pins or manually manages trust stores, check whether eMudhra roots are in them.

Which server-side runtimes and tools need updating?

Three pieces of server infrastructure got serious fixes in the same window.

ComponentWhat was reportedWhat to do
PHPEmergency patches for a flaw dubbed "PHP to shell"Upgrade to the newest patched release in your branch
Node.jsFix for a critical remote code execution bugUpgrade to the latest security release of your supported line
GitLabPatch for a 10 out of 10 flaw allowing access with no loginUpgrade self-managed instances immediately

The sources do not give version numbers or CVE identifiers, so check each project's official security advisory for the exact fixed versions for your release line. Don't guess from a blog post, including this one.

A few practical notes:

  • Container images pin runtimes. Updating the host does nothing if your Dockerfile uses an old base image. Rebuild and redeploy.
  • GitLab is the most urgent if it faces the internet. An unauthenticated, maximum-severity flaw is the kind scanners find within hours. If you can't upgrade right now, restrict network access to the instance until you can.
  • RCE bugs in a runtime matter most for apps that process untrusted input. That describes nearly every web service, so don't triage yourself out too quickly.
  • Check CI runners and dev machines. They often run older PHP and Node versions than production.

Was the LiteLLM package on PyPI really compromised?

According to the reporting, a poisoned version of LiteLLM stayed available on PyPI for roughly two hours and stole developer credentials. LiteLLM is a popular Python library that proxies calls to many LLM providers. That makes it a high-value target, since the environments that run it typically hold several provider API keys at once.

Two hours is short, but CI pipelines and unpinned installs can pull a new release within minutes. To check your exposure:

pip show litellm
pip freeze | grep -i litellm
pip cache list | grep -i litellm

Then compare the installed version against the maintainers' advisory, which should name the bad release. Look at:

  1. Local virtualenvs and dev machines where you upgraded recently.
  2. CI logs from builds that ran pip install without a lockfile.
  3. Docker images built during the window.
  4. Any deployed service that auto-updates dependencies.

If a bad version was ever installed anywhere, assume every credential visible to that process was taken. That includes provider keys, cloud credentials, and tokens in environment variables or config files. Remove the package, rebuild the environment from a clean state, and rotate.

To reduce the odds of a repeat, pin exact versions and use hash-checked installs (pip install --require-hashes) for production. Some teams also add a short delay before adopting brand-new releases.

Is the Plex exploit being used in the wild?

Yes, per the coverage. Unpatched Plex servers are actively being hijacked through an exploit called "Plex to shell". Plex servers are often exposed to the internet for remote streaming and then forgotten, so they make easy targets.

Update the server software now. If you don't need remote access, turn it off. If a server was exposed and unpatched, treat it as compromised: check for unfamiliar accounts, scheduled tasks and outbound connections, and don't reuse its credentials elsewhere. Keep it on a separate network segment from machines that hold work credentials.

Do I need to rotate my Railway and AI keys?

Probably, yes. Two separate incidents point at stored secrets.

Railway. The company warned that attackers may have decrypted customer environment variables. The sources do not say how many customers were affected, so assume the worst if you host there. Rotate every secret you stored as a variable: database URLs and passwords, third-party API keys, signing secrets, OAuth client secrets and AI provider keys.

Open Code. Users had their AI keys stolen. Some woke up to hundreds of dollars in API charges. If you used the tool, revoke the keys you gave it and issue new ones.

AI keys deserve priority because they convert directly into money. A stolen cloud database credential needs an attacker to find your data and use it. A stolen LLM key can be drained by anyone with a script.

A rotation checklist

  1. Create the new key first, then deploy it, then revoke the old one. This avoids downtime.
  2. Check usage dashboards at each AI provider for spikes you don't recognize.
  3. Set hard monthly spend limits and alerts on every provider account.
  4. Use separate keys per project and environment, so one leak doesn't expose everything.
  5. Scope keys narrowly where the provider allows it.
  6. Search your repos and CI logs for keys that were committed or printed.

Does the SBI data leak affect developers?

The coverage says SBI, a major bank, confirmed that thousands of customer records landed on the dark web. This one is mostly a concern for affected customers rather than a patching task for builders. It still matters if you work in fintech or handle identity data: leaked personal details feed phishing and account-takeover attempts, so expect more convincing social engineering aimed at users and staff.

What order should I do this in?

If you have limited time, work in this order:

  1. Rotate AI and cloud keys if you use Railway, Open Code or LiteLLM.
  2. Patch GitLab if it is self-hosted and reachable from outside.
  3. Update Node.js and PHP runtimes and rebuild container images.
  4. Update or lock down Plex.
  5. Audit Python dependencies and move to pinned, hash-checked installs.

Frequently Asked Questions

4 questions

Which version of LiteLLM was poisoned?

The source material does not name the version, only that a poisoned release was on PyPI for about two hours. Check the LiteLLM maintainers' advisory and PyPI release history for the exact version and timestamps, then compare them with your install logs.

Do I need to rotate keys if I only host on Railway and saw no suspicious activity?

Rotate anyway. Railway said attackers may have decrypted environment variables, and stolen secrets don't always produce visible activity right away. Rotation is cheap compared with finding out later.

Is updating PHP and Node.js enough, or do I need to check for compromise?

Updating closes the hole going forward, but it does not tell you whether someone already used it. For internet-facing services, review logs for odd requests, new files, unfamiliar processes and unexpected outbound traffic from before you patched.

How can I stop AI key theft from costing me money?

Set hard spend caps and usage alerts at the provider, use separate keys per project, and keep keys out of repos and shared tools. Rotate quickly when a tool or host you use reports a breach.

How we source, write, and correct our articles. Editorial standards

Related articles

Straight to your inbox.
New pieces as they publish. No noise.