Urgent.News

What's breaking now, across thousands of outlets.

Tech

Your app was patched. Your PHP was not: PHP2Shell explained

On Monday, October 20, 2026, the secret got out early. Details of two critical PHP flaws leaked before the planned disclosure. The PHP team moved its security release up a day and shipped the fixes on Wednesday, October 21. That rushed week has a name now: PHP2Shell. It is not a WordPress plugin bug. It is not a theme bug. It is a flaw in PHP itself, the runtime underneath all of those things. If…

On October 20, 2026, the PHP security community received early warning of two critical vulnerabilities. Rather than waiting for the planned disclosure, PHP released patches on October 21, sparking the term "PHP2Shell" to describe the incident. These flaws, CVE-2026-109618 and CVE-2026-109619, are fundamentally different from vulnerabilities in WordPress themes or plugins. Instead, they affect the underlying PHP runtime that powers websites.

The vulnerabilities allow attackers to execute arbitrary code on vulnerable web servers without authentication. This is possible because the bugs in PHP's handling of memory during request processing can be exploited. One flaw occurs when PHP encounters an out-of-memory condition during the creation of request data. Another flaw occurs when request-specific state is not properly reset after memory is freed.

What sets PHP2Shell apart from many other vulnerabilities is that updating the application code (like WordPress) does not fix the issue. The application code remains unchanged, but the underlying PHP runtime has a known vulnerability. This is why many security advisories emphasize that "updating your app does not update PHP."

Finding affected PHP installations can be challenging because PHP is often embedded within other software and may not be immediately apparent. It's common to find PHP hidden within Docker images, vendor software, or shared hosting accounts. To locate these installations, a comprehensive inventory of all systems and servers must be created. Each system must be checked for the PHP version it uses, as multiple PHP versions can coexist on a single server.

The recommended fixes are to install the patched versions of PHP corresponding to the branch you are currently running. However, it's crucial not to jump branches hastily, as this might introduce new issues. Restarting all PHP workers is essential after applying the patch, as the old, vulnerable code remains in memory until the worker restarts.

For those running PHP 8.1 or earlier, there are no official patches available. These versions have reached end-of-life, and the only viable solution is to upgrade to a supported branch or take the system offline until a patch can be applied. This stark reality underscores the importance of maintaining up-to-date PHP installations, as failing to do so can leave websites and applications exposed to significant security risks.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

This story

This is one outlet's version. Read the fullest account.

Read the original at dev.to →

More in Tech

Google DevFest Central Valley: Community First, Buildathon Second.

TL;DR: My second DevFest Central Valley in Modesto was about who AI is for, from the mayor's opening to a keynote on AI as a community institution.

  • Mayor Sue Zwahlen emphasized community needs developers at DevFest Central Valley
  • Buildathon created accessibility checker Onceover for small business websites
  • AI framework guided by Lens, Voice, and Value influenced event discussions

Your Supabase users can probably give themselves your paid plan. Here's the 30-second test

A lot of apps built with Lovable, Bolt or Cursor handle "upgrade to Pro" with one line in the browser: await supabase . from ( " profiles " ). update ({ is_pro : true }). eq ( " id " , user .

  • Users can gain access to paid plan in 30 seconds via console
  • PostgreSQL Row Level Security ineffective for specific columns
  • Solutions: column-permission updates, trigger for billing, separate billing table

Firewalls and Defence in Depth: Why One Wall Is Never Enough

Every post in this series has had a shadow. The OSI layers trusting the layer beneath. IP addresses that locate a machine but authenticate no one. DNS that cannot verify its own answers.

  • Firewalls act as first line of defense between trusted and untrusted networks.
  • Defense in depth proposes multiple layers of security controls.
  • Default-deny firewall blocks all traffic except explicitly permitted.

When R Stopped Meaning RISC

From hand-typed hex on a Samsung SPC-1000 to ARM assembly on an embedded Linux board — the long, slightly anticlimactic story of RISC vs CISC.

  • RISC (Reduced Instruction Set Computing) emerged in early computing
  • Author implemented compiler with switch statement in ARM architecture
  • RISC vs CISC debate fizzled, author reflects on learning journey

More from Sunday 25 October →