My first reaction to this one wasn't "interesting research." It was "well, there goes my evening."
I run a handful of personal WordPress sites on AWS Lightsail. They're small. They're not particularly exciting. They're exactly the kind of sites people forget about, and exactly the kind of sites attackers love, because nobody is watching them.
On October 21, PHP shipped emergency patches for two vulnerabilities that are being called "PHP2Shell". An unauthenticated request can get code running on your web server. Not "after a user clicks something." Not "if an admin is logged in." Just a request.
So I patched mine. It took about 15–20 minutes per site: snapshot, update PHP in place to a fixed release (8.5.12, 8.4.27, 8.3.36 or 8.2.35), restart, click through the site and check the logs. Not glamorous. Not hard.
But that's the easy version. I own those servers, I know every site on them, and I knew exactly where PHP was running.
Most organizations can't say that. PHP isn't just "the website." It's buried inside platforms, appliances and vendor products you'd never think to check.
Two bugs, one similar root cause: PHP can leave memory corrupted when a request ends abnormally. Researchers from Calif, Wiz and OpenAI found ways to turn that into code execution.
If you run Apache with mod_php, you're at the top of the risk list. PHP's own team says an unauthenticated request can trigger the attack before any application code runs, and that there's a demonstrated exploit for mod_php. Your WAF rules, your plugin hardening, your "we use a strong admin password" — none of it is in the path.
And this isn't theoretical. Cloudflare's CTO said they were already seeing early attacks against both flaws before the patches shipped. The UK's NCSC told organizations to update immediately or take affected systems offline. When a national cyber agency says "or take it offline," pay attention.
Big. PHP powers an estimated 75–80% of websites. VirusTotal estimates more than 5.1 million PHP hosts are exposed online, with roughly 3.8 million showing at least one open port.
Every way PHP serves web requests is affected: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP and LiteSpeed. Now think about everything built on top of that. If any of these run on an unpatched PHP version, they're in scope:
That last one is the sneaky one. A container image doesn't patch itself. If it was built before today, it's vulnerable until someone rebuilds and redeploys it.
Here's the part that worries me most. Official fixes only exist for PHP 8.2 and newer. PHP 7.4, 8.0 and 8.1 got minimal source backports for people who compile PHP themselves, which is almost nobody running a small business site. If you're on PHP 7 or older, you're not patching, you're migrating.
In my experience, the sites still on old PHP are the ones nobody owns: the marketing site from three agencies ago, the intranet app, the appliance with a web admin page. Those are the ones that get popped.
Where does your PHP version stand?
Interim mitigations from the PHP team (these reduce risk, they don't remove it):
Most business owners don't, and that's fine. But "the host handles it" is an assumption, not a control. Here's who should be asking what:
I patched mine because I'd be a hypocrite if I told you to patch yours while my own sites sat exposed. The patch is out, the attacks are already happening, and the window between "disclosed" and "exploited at scale" keeps getting shorter.
The individuals scanning for this don't care whether your site is a Fortune 500 storefront or a blog about blacksmithing. They care whether it answers on port 443 and runs PHP.
If you're not sure where you stand, or you need help figuring out what's exposed in your environment, feel free to reach out. I'd much rather answer a question now than help clean up an incident later.
Source: BleepingComputer — PHP ships emergency patches for critical PHP2Shell flaws
Interested in Aqueity's services? Click here to learn more.