PHP2Shell, Node.js, Python and LiteLLM: What the October 2026 Security Wave Means for Nepal

PHP2Shell and the October 2026 security wave: update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35, Node.js to 26.12.1, 24.22.1 or 22.23.4, avoid LiteLLM 1.107.0 and use 1.106.2, update Firefox for Android to 158.0.2

As of 24 October 2026 (7 Kartik 2083). Facts below come from the official PHP, Node.js, Python and Mozilla security pages, the Wiz research team’s LiteLLM report, and The Kathmandu Post’s report of 23 October on Nepal Rastra Bank’s notice. Version numbers are the ones those pages list on this date.

In one week of October 2026, a critical PHP security vulnerability forced Nepali banks and government offices to take websites offline. Node.js shipped fixes for 10 flaws. Python announced another tarfile bug. A popular AI library, LiteLLM, was published with a password-stealing payload inside. Firefox for Android got a security update too.

It looks like the whole internet broke at once. It did not. These are five separate events, and only one of them (LiteLLM) was an actual compromise. The rest are flaws that were found and fixed. This guide explains each one in plain language, what it means for Nepal, and exactly what to update.

Quick summary: five separate incidents

TechnologyWhat happenedTypeFixed inWho should act
PHPTwo critical remote code execution flaws, “PHP2Shell” (CVE-2026-109618, CVE-2026-109619)Vulnerability, fixedPHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 (21 Oct)Every website owner on PHP, including all WordPress sites
Node.js10 vulnerabilities, 4 rated High, one Brotli decoder flaw that can allow RCEVulnerability, fixedNode.js 26.12.1, 24.22.1, 22.23.4 (21 Oct)Developers and servers running Node.js apps
Pythontarfile tar_filter path traversal bypass (CVE-2026-114583)Vulnerability, fix in progressFix PR open, no release named yetDevelopers who extract untrusted .tar files
LiteLLMMalicious version 1.107.0 published to PyPI and Docker, stealing keys and passwordsReal supply chain attackSafe version 1.106.2Anyone who installed or pulled LiteLLM on 21 Oct
Firefox for AndroidSecurity fixes in MFSA 2026-116Vulnerability, fixedFirefox for Android 158.0.2 (21 Oct)All Android Firefox users

The short answer: a vulnerability is a weakness someone found. A patch closes it. A hack is when an attacker actually uses a weakness or a stolen key. Websites going offline in Nepal was a precaution, not proof of a breach.

PHP2Shell: the PHP security vulnerability behind Nepal’s website shutdowns

PHP is the language behind WordPress and a large share of the world’s websites, including most Nepali business, school and government sites. On 21 October 2026, the PHP project released PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 to fix two flaws it rated CVSS v4.0 9.2:

  • CVE-2026-109618 (RCE via out-of-memory corruption). When PHP runs out of memory while handling a request, request data can be left half-built, and cleanup may treat it as valid.
  • CVE-2026-109619 (RCE via stale global state). Data owned by one request can survive after its memory is freed and be reused by a later request on the same worker.

Both can allow unauthenticated remote code execution. In plain words, an attacker could run their own code on a vulnerable server without logging in. Security researchers named the pair “PHP2Shell”. Details leaked online before the patches were ready, which is why governments reacted fast.

The PHP security advisory is unusually direct. It says updating is the only complete solution. Settings such as session.upload_progress.enabled=0 or a low post_max_size reduce exposure but do not make a server safe. It also says the risk is highest for servers running PHP as Apache mod_php.

What about PHP 8.1, 8.0 and 7.4?

The PHP project no longer ships updates for 8.1 and older. It advises those users to get backported fixes from their Linux distribution or hosting vendor, or to upgrade to a supported version. For people who build PHP from source, the security team published minimal source backports for 7.4, 8.0 and 8.1. PHP 8.2 itself reaches end of life on 31 December 2026, so sites on 8.2 should plan a move to 8.3 or newer now.

Why Nepali banks and government sites went offline

According to The Kathmandu Post, Nepal Rastra Bank issued a notice on Friday, 23 October 2026, asking banks, payment system operators, payment service providers and remittance companies to strengthen security and to take websites offline temporarily where necessary. The Employees Provident Fund, the Social Security Fund and some government websites also went offline. Several banks have since restored their sites.

Two quotes from that report matter for ordinary users. NRB spokesperson Guru Prasad Paudel said “A website being offline does not mean it has been hacked.” Nepal Bankers’ Association president Santosh Koirala said QR payments and mobile banking were operating normally, and the main disruption was internet banking and website-linked services. Banks said no customer data or money was lost.

If your bank’s website is down this week, use the bank’s mobile app or QR payment and wait. Do not search for an “alternative login link” on social media. Fake bank pages appear quickly during outages like this, as we explain in our guide to online fraud in Nepal.

Is your website safe from PHP2Shell?

Digital Solution checks your PHP version, WordPress plugins and hosting setup, and helps you patch and secure your site. Message us for a website security check.

WhatsApp +977 9766597181 🛒 Order Portal

Node.js October 2026 security release: 10 fixes

On 21 October 2026, Node.js released 26.12.1, 24.22.1 and 22.23.4. The official advisory lists 10 CVEs: four High, three Medium and three Low.

CVESeverityWhat it means in simple terms
CVE-2026-111497HighMalformed Brotli-compressed data can cause an out-of-bounds write in node:zlib, which can crash the app, leak memory or allow RCE
CVE-2026-105482Highdns.resolve*() cuts a hostname at a hidden NUL character, so a name can resolve to the attacker’s domain
CVE-2026-105483HighAn IP written with fullwidth digits can trick TLS hostname checks
CVE-2026-106069HighIPv4 addresses with leading zeros are read differently by Node.js and the operating system, so the wrong certificate can be accepted
CVE-2026-106074MediumRandom UUIDs and numbers can repeat across processes if the app was built with startup snapshots

The Brotli flaw is the one to worry about first. Any Node.js app that decompresses Brotli input it did not create is exposed. Node.js 20 is past end of life and is not in the fixed list at all, so a server still on Node 20 stays vulnerable until it moves to 22 or newer.

If you build apps with startup snapshots or single executable applications, upgrading Node.js is not enough. Rebuild those files after upgrading, because the repeated-randomness bug is baked into the built file.

Python tarfile vulnerability: files written outside the folder

On 22 October 2026, the Python Security Response Team announced CVE-2026-114583, rated Medium. When a program calls tarfile.extractall() with filter="tar", a specially crafted archive with tricky link entries can place later files outside the folder you chose. It is the tar_filter twin of CVE-2026-7774, which affected the data_filter and was announced in June.

This is not the first tarfile issue this autumn. Python also announced CVE-2026-82049 on 14 September (a hard link to a symlink can defeat the filters on 3.13 and earlier) and CVE-2026-87910 on 11 September. The pattern is clear: unpacking archives from strangers is risky.

At the time of writing, the announcement links a fix pull request but names no fixed Python release. Until it ships:

  • Never extract a .tar file from an unknown source on a server that matters.
  • Extract untrusted archives inside a throwaway container or a separate user account with no access to your project files.
  • Prefer filter="data" over filter="tar", and keep Python itself updated as point releases arrive.

Most ordinary computer users are not affected. This matters for developers, data teams and any web app that lets users upload archives.

LiteLLM supply chain attack: the one that was a real hack

LiteLLM is a widely used Python library that lets apps talk to many AI models (OpenAI, Anthropic, Gemini and others) through one interface. Developers in Nepal building chatbots and AI tools often use it.

According to Wiz’s research team, a malicious LiteLLM version 1.107.0 was uploaded to PyPI at 11:39 UTC on 21 October 2026 and quarantined by 13:20 UTC. In that window it was downloaded about 49,000 times. Trojanized Docker images were also pushed to GitHub Container Registry and Docker Hub under the tags v1.107.0, latest, main-latest and main-stable, and removed around 13:53 UTC.

Why “just running Python” was enough

The package dropped a file called cook.pth into Python’s site-packages folder. Python automatically reads .pth files every time the interpreter starts. So after installing the bad version, running any Python script at all, even one that never imports LiteLLM, triggered the stealer.

Wiz lists what it tried to collect:

  • Saved browser passwords and cookies from Chrome, Firefox, Edge and Safari
  • AWS, Google Cloud and Azure credentials
  • AI provider API keys such as OpenAI, Anthropic and Cohere
  • SSH and GPG keys, and shell history
  • Provider credentials stored in LiteLLM’s own database

The data was encrypted and sent to a lookalike domain made to resemble LiteLLM’s real infrastructure. LiteLLM’s maintainer BerriAI said the release was pushed through three engineers’ GitHub accounts, apparently using stolen GitHub CLI OAuth tokens. The root cause was still under investigation when Wiz published.

This was the second LiteLLM compromise this year. In March 2026, versions 1.82.7 and 1.82.8 were also published with a credential stealer, according to multiple security firms.

If you installed LiteLLM on 21 October

  1. Check your version with pip show litellm. If it says 1.107.0, treat the machine as compromised.
  2. Uninstall it and install 1.106.2 or a later version the LiteLLM team confirms as clean.
  3. Delete cook.pth, cook.py and any unexpected sitecustomize.py from site-packages.
  4. If you pulled a LiteLLM Docker image using latest, main-latest or main-stable that day, delete it and pull a pinned, verified version.
  5. Rotate everything that was on that machine: cloud keys, AI API keys, SSH keys, database passwords, and browser-saved passwords. Removing the package does not un-steal a key.

Firefox for Android security update

On 21 October 2026, Mozilla published security advisory MFSA 2026-116 for Firefox for Android 158.0.2. Desktop Firefox 158.0.1 and the ESR branches were patched a day earlier.

For users, the fix is simple. Open the Play Store, search Firefox, and tap Update. If you use Firefox Focus or another Firefox-based browser, update that as well.

Is the internet becoming unsafe? A realistic answer

No. What changed is that more flaws are being found, faster. NRB’s spokesperson told The Kathmandu Post that the PHP flaws were identified when researchers used AI models to test PHP code. Expect more of this: AI-assisted code review finds old bugs in mature software, which then need patching.

The real lessons from this week are practical:

  • Trusted software is not risk-free. PHP and Node.js run millions of sites, and both needed urgent fixes.
  • Patching speed matters more than the brand. A site on PHP 8.4.27 is safe from PHP2Shell. A site on 8.1 that nobody maintains is not.
  • Supply chain risk is the new normal. LiteLLM did nothing wrong in its code. Attackers stole publishing access instead.
  • Offline is not hacked. A precautionary shutdown is a sign that an organisation is taking security seriously.

Security checklist for Nepali website owners and developers

If you run a WordPress or PHP website

  1. Log in to your hosting panel (cPanel, hPanel, Plesk or DirectAdmin) and check your PHP version. In WordPress, go to Tools → Site Health → Info → Server.
  2. Confirm the version is at least 8.5.12, 8.4.27, 8.3.36 or 8.2.35. On shared hosting, ask your provider in writing whether their PHP build includes the 21 October fixes.
  3. If you are on 8.1 or older, plan an upgrade to 8.3 or 8.4 this month. Test your theme and plugins on a staging copy first.
  4. Update WordPress core, themes and plugins, then take a fresh backup stored outside the server.
  5. Review admin users and remove anyone you do not recognise.

If you build with Node.js or Python

  1. Upgrade Node.js to 22.23.4, 24.22.1 or 26.12.1, and move off Node 20.
  2. Rebuild any startup snapshots or single executable apps.
  3. Pin exact package versions in requirements.txt, package-lock.json or Docker image digests. Never deploy latest straight to production.
  4. Check your lock files for LiteLLM 1.107.0 and rotate keys if it appears.
  5. Run pip-audit for Python and npm audit for Node.js on every project.
  6. Keep API keys in environment variables or a secrets manager, never inside code or GitHub.

For everyone

  1. Update your browser, including Firefox for Android 158.0.2.
  2. Turn on automatic app updates on your phone.
  3. Use bank apps from the official Play Store or App Store only, especially during outages.
  4. Enable two-factor authentication on email, GitHub, cloud and banking accounts.

For a recent Nepali example of a public system going offline over a security problem, read our report on the Bagmati VRS outage.

Frequently asked questions

What is PHP2Shell?

PHP2Shell is the name security researchers gave to two critical PHP flaws, CVE-2026-109618 and CVE-2026-109619, patched on 21 October 2026. Both are rated CVSS v4.0 9.2 and can let an attacker run code on a vulnerable server without logging in. The fix is to update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35.

Were Nepali banks hacked in October 2026?

No breach was reported. Nepal Rastra Bank asked banks and payment companies to take websites offline where necessary as a precaution, and banks said no customer data or money was lost. QR payments and mobile banking kept working, according to the Nepal Bankers’ Association.

Is my WordPress website affected by the PHP vulnerability?

If your server runs a PHP version older than the 21 October releases, yes, it is exposed. Check the PHP version under Tools → Site Health → Info → Server in WordPress, or in your hosting panel. Shared hosting customers should confirm with the host that their PHP build is patched.

What should I do if I installed LiteLLM 1.107.0?

Treat the machine as compromised. Uninstall the package, remove cook.pth, cook.py and any unexpected sitecustomize.py from site-packages, install a clean version such as 1.106.2, and rotate every key, token and password that was stored on that computer.

Do normal mobile users need to do anything?

Update your apps and browser, especially Firefox for Android to 158.0.2, and use banking apps only from official app stores. The PHP and Node.js flaws affect servers, so your bank or service provider has to fix those, not you.

Conclusion

The October 2026 wave was five separate stories: a critical PHP security vulnerability (PHP2Shell), a 10-fix Node.js release, a Python tarfile bug, a real LiteLLM supply chain attack, and a Firefox for Android update. Only LiteLLM was an actual compromise. The rest were weaknesses that were found and fixed, and the right response is to update.

Cyber security is not a one-time job. If you own a website, check your PHP version today. If you build software, pin your dependencies and rotate any key that touched LiteLLM 1.107.0. If your hosting, WordPress site or app needs a security check, Digital Solution can review it for you.

Sources

Rabin Paudel
Written by

Rabin Paudel

Rabin Paudel is the Founder of Digital Solution, a Content Creator, and an AI Trainer. He shares practical and easy-to-understand content on Artificial Intelligence, Digital Literacy, Online Services, FinTech, and Technology. His mission is to make technology simple, accessible, and useful for everyone.

View all posts by Rabin Paudel →

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top