Five days, five security incidents that broke the internet.
PHP2Shell is broadly exploited, LiteLLM 1.107.0 shipped malware (49,000 downloads), and OpenCode, Railway and eMudhra put keys at risk. What to do now.

TL;DR
- OpenCode (October 17): API keys for AI providers were extracted from the hosted console. 1.4% of console users are affected, and some reported charges of more than $1,700.
- eMudhra (October 20): a flaw in its key generation produced weak keys that could let attackers impersonate websites. eMudhra will exit the global SSL/TLS certificate business (about 1% of its revenue), and its shares fell 40% in two days.
- PHP2Shell (October 21): a critical remote code execution vulnerability in PHP. It is now broadly exploited, with millions of exploit attempts within 12 hours.
- LiteLLM (October 21): version 1.107.0 contained malware that steals credentials. It was downloaded about 49,000 times.
- Railway (October 21): an attacker may have decrypted some of the environment variables customers store on Railway. Railway paused all deployments.
If you are writing PHP code or using OpenCode or LiteLLM, you've probably heard about some of the security issues that we've been through in the past couple of days.
The overall damage is still unclear, but many credentials got exposed, several systems are impacted, and some customers reported thousands of dollars in charges. But I believe it's just the beginning. In the next couple of weeks, we'll learn more about the impact and the root cause of those issues.
In this blog post, I'm going to explain each one of the issues and what is known as of October 22.
OpenCode security breach: exposed console API keys
OpenCode is a popular open-source AI coding CLI. The company also runs a hosted console. On October 17, the company announced a breach where API keys for AI providers got extracted from OpenCode's hosted console customers. Some customers reported charges of more than $1,700, and the company said that 1.4% of the console users are affected.
What to do: if you stored AI provider keys in the OpenCode console, replace them and check your provider usage since October 16.
eMudhra CA compromise: weak intermediate certificate keys
On October 20, the Indian identity company eMudhra disclosed an issue in its key generation, which caused the production of weak keys for eight intermediate certificates. The keys were so weak that a researcher calculated the private keys from the public certificates. Diving deep into how certificate authorities (CAs) work is outside the scope of this blog, but access to those keys gives the ability to impersonate websites. For example, users can shop on amazon.com, see the lock in the address bar, and type their credit card into a totally different site. Up-to-date browsers no longer trust these certificates, but older browsers and apps might. On October 22, eMudhra announced that it will exit the global SSL/TLS certificate business, which the company says is about 1% of its revenue (under $1 million a year). Even so, its shares fell 40% in the two days after the disclosure.
What to do: update your browsers, operating systems, and any app that ships its own list of trusted certificates.
PHP2Shell: critical PHP remote code execution vulnerability
PHP powers platforms and frameworks such as WordPress, Drupal, and Laravel, so a large part of the web runs on it. In 2024, a core developer in PHP found a memory-limit bug, which was unresolved for years. The PHP Foundation said that the fix was complicated. On October 21, PHP2Shell came out, a critical unauthenticated remote code execution vulnerability with two CVEs and a video with a leaked proof of concept. An attacker who exploits PHP2Shell can run code on the server and use it to reach other systems. PHP2Shell is now broadly exploited. Cloudflare saw thousands of exploit attempts in the 10 hours before the announcement, and millions within 12 hours after it.

The PHP Foundation's advance notice on October 20, seen about 7 million times. Original post.
What to do: update to PHP 8.5.12, 8.4.27, 8.3.36, or 8.2.35. If you run PHP 8.1 or older, ask your vendor for a patch. To check your version, run php -v on the server.
LiteLLM 1.107.0: malware in a signed release
If you've ever set up an AI gateway, you might have heard of LiteLLM. LiteLLM is an open-source AI gateway that lets you integrate many AI providers into one place. On October 21, the company announced that version 1.107.0 contained malware. It was downloaded about 49,000 times. Attackers stole the GitHub credentials of three LiteLLM developers. They changed the release workflow, which then published signed malicious packages. The malware was designed to extract cloud credentials, AI provider keys, and passwords. Private enterprise releases were not affected. It's not the first attack on AI developer tools: in May, the TanStack campaign targeted AI tooling packages on npm and PyPI.
What to do: if you installed version 1.107.0 from PyPI or Docker, rebuild the machine and rotate every credential it could reach. Pin LiteLLM to 1.106.2. To check your version, run pip show litellm. The Docker tags latest, main-latest, and main-stable also served the malicious version on October 21, from 11:46 to 14:20 UTC.
Railway security breach: exposed environment variables
Last but not least, on the same day, October 21, Railway, a deployment platform similar to Vercel, announced a breach. An attacker may have accessed the encrypted environment variables that customers store on Railway, and decrypted some of them. These can include API keys, database credentials, and private registry credentials. Railway paused all deployments while it investigated. As of October 22, builds are back for Enterprise and Pro workspaces, but still paused for Hobby, Free, and Trial plans.

The top of Railway's October 21 announcement, cropped from the original notice.
What to do: rotate every environment variable and registry credential you store on Railway, and check your service logs. Railway revoked all its API tokens, so create new ones.
Summary: what to do now
These incidents might be related or might be independent. The question is, what is the impact? This is not clear, and we're still in the early days. I also believe that we might encounter more of those soon. Capable models are getting more and more accessible, and almost everyone can just run security research.
For affected users, the immediate actions depend on the incident. Rotate potentially exposed credentials, install the PHP fixes, rebuild compromised LiteLLM environments, and update affected browsers and application trust stores.
The basics stay the same. We still need credential hygiene, we still need incident response processes, and we still need the ability to detect and prevent those issues. But since zero-days and novel vulnerabilities are becoming more common, we need the capability to detect and remediate at machine speed.
Sources
- OpenCode: The Hacker News, BleepingComputer
- eMudhra: eMudhra, Google, Business Standard
- PHP2Shell (CVE-2026-109618 and CVE-2026-109619): PHP Foundation, Wiz, AWS, Cloudflare's CEO
- LiteLLM: LiteLLM, Wiz
- Railway: Railway, Railway status page