Security advisory: Critical remote code execution vulnerabilities, update now (php.net)
TekMol 4 days ago
But it is not clear if releasing the fix early would make the damage smaller or larger.
Having the patch probably makes creating an exploit easier. So the number of attacks would increase.
There is no way to coordinate the whole world on an earlier time. I would guess the number of people who have to patch their instances is in the hundreds of thousands.
Everybody who actively watches the topic already has the option to shut down their instances.
So ringing the bell and getting as many people as possible to shut down their webservers now and patch at 14:00 might be the best in terms of damage minimisation.
By the way, it is not enough to just "shutdown -h now" and then later restart and "apt update && apt upgrade". The moment the machine comes back, it can get hacked. So you should make sure the webserver does not start after the next boot. For Apache this would be something like "rm /etc/systemd/system/multi-user.target.wants/apache2.service" and then after patching recreate the symlink via something like "ln -s /lib/systemd/system/apache2.service /etc/systemd/system/multi-user.target.wants/apache2.service".
fredsted 4 days ago
If not, you or our agent could build an exploit from the information that's already out.
TekMol 4 days ago
It seems the published exploit can be easily prevented by filtering out multipart post requests. So people actively watching the situation can already prevent that issue by filtering those.
cinpol 4 days ago
system2 4 days ago
rtuin 4 days ago
system2 4 days ago
# BEGIN php2shell-mitigation
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Content-Type} multipart [NC]
RewriteRule .* - [F,L]
</IfModule>
<If "%{HTTP:Content-Type} =~ /multipart/i">
Require all denied
</If>
# END php2shell-mitigation
I added a rewritecond to ignore multipart before php-fpm receives anything. I did a similar thing for nginx servers. Also in .user.ini added "session.upload_progress.enabled = Off".These two seem to do the trick, but again I am not 1000% sure until tomorrow morning's deeper dive. My eyes are burning, and I can't sleep because of the stress this exploit.
Macuyiko 4 days ago
@multipart header_regexp Content-Type (?i)multipart respond @multipart 403
@uploads_php path_regexp uploads_php ^/(?:./)?wp-content/uploads/.\.php(?:/.*)?respond @uploads_php 404
Plus the php.ini changes, "session.upload_progress.enabled = Off" and strict mode. Let's hope it holds until then
bombcar 4 days ago
@multipart header_regexp Content-Type (?i)multipart
respond @multipart 403
@uploads_php path_regexp uploads_php ^/(?:.*/)?wp-content/uploads/.*\.php(?:/.*)?
respond @uploads_php 404dmsch 4 days ago
AndroTux 4 days ago
In theory. In practice, many can't just decide to shut down their service for a few hours.
Gigachad 4 days ago
yreg 4 days ago
WP sites like whitehouse.gov, TechCrunch, Time?
I don't see anything well known being down.
Shank 4 days ago
ganzsz 4 days ago
Gigachad 4 days ago
tux3 4 days ago
This leaked yesterday in part because so many people had advance notice.
mx7zysuj4xew 4 days ago
An exploit can only "leak" if it's a private 0day used by APTs.
When warnings are sent out it has already been a public fact. Keeping some kind of dumbass embargo is just pointless theatre
crote 4 days ago
Boom. A leak. It's now a public fact, so we'll instantly see people exploiting it, right? Except that without a commit or patch fixing it, or even a suggestion of a workaround, you are searching for a needle in a haystack. It could be literally anywhere, after all!
In fact, it is so well-hidden that I have not even discovered it myself yet. But its presence is a statistical certainty due to the sheer size of the codebase, so we should assume it is somewhere in there. Did I just doom every W11 user, or are perhaps embargoes at least somewhat useful?
mx7zysuj4xew 4 days ago
> I feel like all "non-inner-circle people" here are taken for a laugh. OpenAI and these security companies sat on this for 2 months, decided for themselves who gets access to an early fix, and then leave the rest out to dry
Had they just kept this between themselves and the vendor this would've been effective.
Instead they selectively released it to various parties one of which promptly leaked it.
This is exactly what should have been expected
Either it's 100% silent or it's out there
thinkingtoilet 4 days ago
nkozyra 4 days ago
xena 4 days ago
nubinetwork 4 days ago
How does a mobile game use PHP? Wouldn't the game code use a custom socket and protocol for its comms?
gyaru 4 days ago
nubinetwork 4 days ago
shevy-java 4 days ago
No matter the excuse, the security issue must be fixed. Anyone trying to delay this is not acting in good faith. I understand your rationale but that does not excuse you from being labelled as such too.
We should live in the age of open source AT ALL TIMES. No exceptions, for anyone, no matter the reasons. And that includes those who want to withhold code or patches.
yreg 4 days ago
luckylion 4 days ago
A lot of people are going to do the math on migrating. Bugs happen everywhere. Leaving the community out in the cold and only supplying the corporate sponsors doesn't.
joshuat 4 days ago
pxtail 4 days ago
windowsworkstoo 4 days ago
jsploit 4 days ago
kassner 4 days ago
ibejoeb 4 days ago
nightbun 4 days ago
AznHisoka 4 days ago
snitch182 4 days ago
crote 4 days ago
philipwhiuk 4 days ago
UncleMeat 4 days ago
I think that this made sense a few years ago but in today's world it is so feasible to give an LLM a hint and throw some cash at it to find an exploit that I don't think this calculus makes sense anymore.
kalaksi 4 days ago
nr378 4 days ago
https://www.php.net/archive/2026.php#2026-10-21-5
RCE via OOM corruption - https://github.com/php/php-src/security/advisories/GHSA-w8hw...
RCE via stale global state - https://github.com/php/php-src/security/advisories/GHSA-6wmf...
codethief 4 days ago
whycome 4 days ago
There are so many keeping old php versions alive for compatibility with whatever software
szopin 4 days ago
jeremyt 4 days ago
kassner 4 days ago
ljm 4 days ago
There's a lot of zombie software on the net that is ripe for the picking. More food for the botnet.
Wordpress in particular is a stupidly simple vector.
ashkankiani 4 days ago
I can't think of a faster way to clear out the vulnerable surface area.
ishouldbework 4 days ago
ashkankiani 4 days ago
dzhiurgis 3 days ago
If only there was a way to trivially rewrite just about any software
zepearl 4 days ago
(I just ran an "emerge --sync" but the mirror that was used does not have yet the updates)
wiredfool 4 days ago
elyobo 4 days ago
dvdkon 4 days ago
It seems to have a few more technical details.
headinthesky 4 days ago
Still waiting on container updates and package updates. Not a peep from cpanel or plesk. What a mess
00deadbeef 4 days ago
headinthesky 4 days ago
jamietanna 4 days ago
linobino1 4 days ago
drrotmos 4 days ago
$ docker pull php:8.4.27
8.4.27: Pulling from library/php
no matching manifest for linux/arm64/v8 in the manifest list entries
$ docker pull --platform linux/amd64 php:8.4.27
8.4.27: Pulling from library/php
no matching manifest for linux/amd64 in the manifest list entrieslinobino1 4 days ago
Docker hub shows the new tags but the manifests are missing https://hub.docker.com/_/php
1over137 4 days ago
yread 4 days ago
pezgordo 4 days ago
biinjo 4 days ago
Seriously though. I don’t know what’s best. Taking everything down or not.. I just run a small time SaaS.
liquidfood 4 days ago
Shank 4 days ago
bombcar 4 days ago
tail -F /var/log/access_log | grep --line-buffered -v -E '"(GET|HEAD) 'berkes 4 days ago
And the work to clean up if you get compromised is massive.
tosti 4 days ago
500mazaire 4 days ago
vbezhenar 4 days ago
500mazaire 4 days ago
klhs 4 days ago
Edit: Or maybe not? At least one service on their IT-department's list seems to be working again. :-)
andix 4 days ago
fock 4 days ago
andix 4 days ago
bwoebi 4 days ago
There are a handful people responsible for doing a release. They are still asleep.
To be honest, I am also shocked, that the exploit was published that quickly, after the leaked video (which was the reason, why the announcement happened in the first place, at that specific time). We expected a bit more time, even with LLMs...
jwitthuhn 4 days ago
heresie-dabord 4 days ago
This is something of a fallacy. "The Industry" cannot learn.
But laws and regulations can require better security.
As in the history of seatbelts in vehicles, tech tool stacks are insecure by design and no one is ever really held accountable... until the cost is deemed too high.
It's evident that we have not reached that limit yet.
my-huge-pony 4 days ago
ameliaquining 4 days ago
mx7zysuj4xew 4 days ago
jwitthuhn 4 days ago
What they have achieved by delaying the patch is that exploits are now available publicly before a patch.
Surely this is the worse outcome.
merb 4 days ago
Also not announce it beforehand…
compass_copium 4 days ago
ftfyyyyyy 4 days ago
dlor 4 days ago
The vulnerability and patch are both very complex, and the maintainers did an incredible job on this one. We tested the patch extensively and it's holding up well.
We've made these images free and will keep them that way.
aarondf 4 days ago
thenaderman 4 days ago
tarsinge 4 days ago
shakna 4 days ago
nagaiaida 4 days ago
shakna 4 days ago
Why would you implicitly take them at their word?
nagaiaida 4 days ago
as it stands though, what i replied to wasn't a useful addition to the discussion. it could easily become so by either being made contingent upon the possibility of that being a lie, or being bundled with an assertion like yours that chainguard is not to be taken at their word. doing neither and simply responding as if a causally opposite statement had been made is just a non sequitur.
workingjubilee 4 days ago
Even then, it implies more than it says. It's often used to suggest the exploit came from a remote system one does not directly control and was deployed, successfully, against another system one does not directly control. But even that does not necessarily have to be true, as people can use it, without any bad faith and not trying to twist the phrase, in cases where only one of those conditions hold, e.g. against a system one does directly control where the exploit attempt was unsuccessful.
shakna 3 days ago
Breaching an embargo, makes reverse engineering easier. We don't need to analyse motives or pontificate. Disrupting the supply chain... Disrupts the supply chain.
nicce 4 days ago
charcircuit 4 days ago
b112 4 days ago
If you want to 'adopt' a new reality, you talk to all parties, and everyone moves up the release. That's how agreements and trust work. If you don't do so? No one will trust you ever again.
And?
You won't be at the table next time.
threatofrain 4 days ago
If the first party to receive this information says, "Wow, of course I must act on this, because customers are on the line," then it makes sense to simply choose who you tell more carefully or not at all.
MartijnHols 4 days ago
joepie91_ 4 days ago
Roark66 4 days ago
angry_octet 3 days ago
dhruvagoyal 4 days ago
TedDoesntTalk 4 days ago
rgj 4 days ago
"We took our website down this morning when the "PoC"s were released, only serving a static website. Our customers were not pleased. Then we got contacted by Chainguard affiliates using our public support form if we would like to schedule a meeting with them, so that they could sell us their security services."
kinduff 4 days ago
summner 4 days ago
anything that narrows the searchspace
thenaderman 4 days ago
Shank 4 days ago
joshuat 4 days ago
jacquesm 4 days ago
That's horribly naive with an installed base this size and if you are that geographically dependent then I would hope to read how this will be dealt with going forward.
Macha 4 days ago
jacquesm 4 days ago
I think you are assuming I am running PHP which I haven't used in production for more than a decade. That doesn't change the fact that if you power this many websites that you should have a plan in place for when there is a critical issue.
redox99 4 days ago
spenvo 4 days ago
https://x.com/MagicalTux/status/2112725774025572431 https://x.com/rina4_tot/status/2112723421641531772
I think this exploit + agentic AI (which allows for rapid secret exfiltration/utilization) may be a potent enough combo to trigger a sort of Kessler Syndrome for network security.
int32_64 4 days ago
TacticalCoder 4 days ago
And he went to prison for a few years for it. So he knows something about PHP exploits.
NorwegianDude 4 days ago
defgeneric 4 days ago
matkoniecz 4 days ago
why it would be a thing, beyond "serious problem"?
sippingabonedry 4 days ago
Yeah no.
This is bad but doesn't even crack the top ten.
tikotus 4 days ago
bguebert 4 days ago
sippingabonedry 4 days ago
At the end of the day, nobody gives a shit if another WordPress blog gets hacked.
Narkov 4 days ago
lol no.
I feel old. Heartbleed was 2014.
bpye 4 days ago
ameliaquining 4 days ago
Fabricio20 4 days ago
manarth 4 days ago
Fabricio20 4 days ago
Extremely legacy software wasn't affected either (log4j v1 or apache commons-logging!). Lots of automated scanners flagging the idle jar as well (when the app used Logback for example as the SLF4J implementer, but the scanner saw a transitive for the log4j jar and would scream at you - that's when I stopped caring about github vuln scans btw, it was a shitshow).
Like dont get me wrong, it was a bad vuln, but to me it seems like it was more hype machine and internet screaming than actual vulnerable applications. I do recall Minecraft was vulnerable though, that one was indeed a big target given publicly exposed servers and such.
kllrnohj 4 days ago
ndriscoll 4 days ago
evandrofisico 4 days ago
joshuat 4 days ago
Measuring “worst” is hard.
echelon 4 days ago
Thanks, PHP.
nr378 4 days ago
The upgrade instructions here should include torching your hosts and starting again.
sparkling 4 days ago
- Any PHP site you ever put your email/password/personal data in being hacked over the next few hours (especially things like forums).
- As a result of the above, a massive wave of phishing attempts.
- Corporates/Admins panicking and turning off services as a precautionary measure over the next hours or days.
thombles 4 days ago
sparkling 4 days ago
Gigachad 4 days ago
jacquesm 4 days ago
What else do you expect them to do? Pray?
Switching something off is far preferably over being hacked.
nr378 4 days ago
juliusjh 4 days ago
echelon 4 days ago
We don't really need it anymore now that we have LLMs.
owenthejumper 4 days ago
echelon 4 days ago
Nobody needs to write any of this code anymore.
Rust is literally the best positioned language to handle the upcoming onslaught of CVEs.
traceroute66 4 days ago
Rust is also a language with no real stdlib, and so you have to import crates for everything including the kitchen sink.
Which opens you up to the very real risk of supply chain vulnerabilities unless you make an active effort to code review your imports and keep the length of your import list under control.[1][2][3]
Rust supporters also need to urgently realise that memory safe != secure. It is very much possible to have vulnerabilities in memory safe code.
This has been demonstrated by Cloudflare[4] and countless others.
Age-old vulnerability classes such as input validation, error handling and many others are still very much possible in a Rust codebase.
So please. Yes, I'm sure Rust is a fantastic memory-safe language. But do not portray it as being magically immune from CVEs.
[1] https://kerkour.com/rust-supply-chain-nightmare
[2] https://tweedegolf.nl/en/blog/119/sudo-rs-depencencies-when-...
[3] https://tweedegolf.nl/en/blog/104/dealing-with-dependencies-...
[4] https://hackaday.com/2025/11/20/how-one-uncaught-rust-except...
bombcar 4 days ago
Well-architected solutions would have the static part broken out so only the dynamic content is on a separate domain/host and that part can be secured as needed. Then something like this only turns off your forms/upload dialogs.
berkes 4 days ago
traceroute66 4 days ago
I'm not rising to that bait. I'm sure you know perfectly well what I mean.
So let's just be polite, cordial and leave that topic there there. I'm sure you know its a topic that attracts 'strong views', particularly from the Rust side, which is no doubt why you're trying to engage on it.
berkes 4 days ago
The only times I had to use third party packages for basic stuff, was when developing embedded software on limited hardware.
Do you mean that for async we need third party runtimes like tokyo? Or that types and utilities that many other languages ship by default in stdlib, like http aren't in rusts?
I'm sorry for the tone of my post. It was meant as honest surprise, but I clearly see now how it sounds baity and provoking.
skydhash 4 days ago
https://github.com/casey/just/blob/master/Cargo.lock
And the helix editor
https://github.com/helix-editor/helix/blob/master/Cargo.lock
Compare them to the dependencies of gnu make (pretty sure it’s only posix)
https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/m...
And vim
https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/c...
###
Downloading the internet to build a smallish software is always bad in my opinion.
sgarland 4 days ago
In contrast (I know this is apples to oranges), Python’s stdlib is incredibly broad. colorsys lets you convert between color spaces. plistlib lets you read and write Apple’s property list files. graphlib has a topological sorter, which can lead to hilariously short interview questions when the interviewer isn’t familiar with Python’s stdlib.
ndriscoll 4 days ago
kllrnohj 4 days ago
PHP still powers approximately 70% of websites
1718627440 4 days ago
amiga386 4 days ago
I don't have a problem with it.
govulncheck tells me if my codebase is actually affected by CVEs or not. So if there's 50 CVE'd modules but my codebase doesn't use them, I sleep.
Secondly, the fix is almost always "go get -u <affected module>", and because it's a CVE, it's usually just a bugfix release and still completely compatible with how I'm using it... but I run the test suite to be more certain.
bilekas 4 days ago
juliusjh 4 days ago
1) It is now much easier to work in a language with better security features such as Rust. Previously, there definitely was some kind of trade-off between accessibility, performance, and security, and some people argue that this is over. I don't know if this is true, but it seems plausible.
2) You can now translate your legacy projects to a different language much more easily. This is definitely true, but that doesn't mean it doesn't introduce new/other problems or that it is easy enough (again, I simply don't know).
echelon 4 days ago
rossvor 4 days ago
b112 4 days ago
If you don't understand the language(eg, not easy to work with), don't work professionally in it. All LLM work need audit, a second set of eyes, just as work from a coworker needs peer review prior to sign off.
How can one peer review an LLM without full, experienced knowledge?
gregoriol 4 days ago
echelon 4 days ago
dawnerd 4 days ago
burnJS 4 days ago
dawnerd 4 days ago
But created my own based on it since it feels sketchy running someone else's exploit poc ya know. Ran it first in a vm before running it against a production site.
burnJS 4 days ago
afdbcreid 4 days ago
system2 4 days ago
normie3000 4 days ago
dan15 4 days ago
It still uses the same request model as PHP, since that's genuinely useful for web requests. It's easier to avoid memory leaks if each request is entirely self-contained and there's no global state persisted between requests (other than APC and opcode caches)
rob 4 days ago
doublerabbit 4 days ago
system2 4 days ago
rurban 4 days ago
sznio 4 days ago
brazzy 4 days ago
tikotus 4 days ago
td4 4 days ago
it now serves ads that instantly start those downloads its been like that for a couple of weeks
dvdkon 4 days ago
sdfgsdfgsdsdfgs 4 days ago
cinpol 4 days ago
dwedge 4 days ago
stackghost 4 days ago
burnJS 4 days ago
00deadbeef 4 days ago
rokkamokka 4 days ago
voidUpdate 4 days ago
doubled112 4 days ago
doublerabbit 4 days ago
burnJS 4 days ago
theteapot 4 days ago
burnJS 4 days ago
winternett 4 days ago
febed 4 days ago
rossriley 4 days ago
fg137 4 days ago
berkes 4 days ago
Not only 10 years of no more security updates. But hosting static content is cheap, performant and sustainable. Bot literally (you can move the content anywhere, using any kind of server) and in energy sense.
While I understand it is not for everyone to write markdown files and run build commands, I strongly urge anyone with a WordPress or drupal site to give the various jamstacks, or static site builders and guis a test run.
dwedge 4 days ago
dawnerd 4 days ago
Gigachad 5 days ago
I think the best course of action is to just shut your server down before the patch goes live and then bring it back after you have patched.
archon810 4 days ago
philipwhiuk 4 days ago
Gigachad 4 days ago
lioeters 4 days ago
voxadam 4 days ago
https://www.schneier.com/blog/archives/2005/12/benevolent_wo...
lioeters 4 days ago
stackghost 4 days ago
S0y 4 days ago
afdbcreid 4 days ago
pixl97 4 days ago
afdbcreid 4 days ago
jamesknelson 4 days ago
Turning it off may cause deaths. Letting it get ransomwared may cause more. Do you pull the lever to turn it off?
hparadiz 4 days ago
You make sure www-data CANNOT write ANYWHERE on disk. Not /tmp/ Not to /var/www/. No where.
Then make sure your sudoers has nothing weird in it.
Finally disable www-data's ability to run basically anything that isn't required for the operation of your httpd or php-fpm et al.
You then harden it further and further until an RCE does not matter because it's incapable of doing anything.
tldr always treat httpd as untrusted.
trog 4 days ago
hparadiz 4 days ago
trog 4 days ago
throwaway270925 4 days ago
Did this with my parents websites and they are quite happy and I get basically no support calls (and can read threads like this one out of interest only, thankfully)
trog 4 days ago
bpye 4 days ago
And also relies on the target being patched against any Linux EoP...
matja 4 days ago
Also: https://stopdisablingselinux.com/ - SELinux can mitigate this.
echoangle 4 days ago
1718627440 4 days ago
pixl97 4 days ago
"How to make your site cost unlimited money and have terrible performance". People did this in the Web 1.0 days on occasion and it leads to all kinds of problems for any site with any kind of traffic.
>Or you make an exception for them.
Useless. All you need to do at that point is chain a priv-esc to your existing exploit and you get root.
simondotau 4 days ago
1718627440 4 days ago
simondotau 4 days ago
elondaits 4 days ago
0pteron 3 days ago
qingcharles 4 days ago
rklaehn 4 days ago
bigbuppo 4 days ago
dylan604 4 days ago
geerlingguy 4 days ago
asimovDev 4 days ago
ndiddy 4 days ago
janmo 4 days ago
https://x.com/dok2001/status/2112811965735202970
When will they finally release the patch?!
SSLy 4 days ago
mattbee 4 days ago
When a PoC drops before that timeline is up (like now!) the attackers get a head start because they have less work to do - just figure out how to use it to their payload, start spraying it out.
Meanwhile maintainers don't want release an incomplete or misunderstood fix. Otherwise they'd risk people updating and believing that they're safe when they're not. Even a fragment of misinformation from an official channel will spread like wildfire. So when you demand fixes NOW you're demanding something that may not be completely understood.
So (I'm sure we'll find out but) I believe this 2pm timeline was already as soon as is human possible for the PHP team to do a repsonsible job, and not risk us having to come back tomorrow for a fix to the fix.
LLMs gives attackers the advantage for a while, and it means we'll have to tighten the secrecy around even the rumour of a vulnerability.
SSLy 4 days ago
xena 4 days ago
stevage 4 days ago
Dylan16807 4 days ago
> I believe this 2pm timeline was already as soon as is human possible for the PHP team to do a repsonsible job
I'll be surprised and kind of upset if the fix wasn't already done when they announced the bug and the sub-24-hour release time.
oceansweep 4 days ago
uselesswords 4 days ago
SSLy 4 days ago
bombcar 4 days ago
Hamuko 4 days ago
bombcar 4 days ago
pxtail 4 days ago
janmo 4 days ago
Numerlor 4 days ago
This would've worked if other people were able to shut up about it. Because its existence got leaked they posted the announcement
hparadiz 4 days ago
Dylan16807 4 days ago
janmo 4 days ago
This lets an AI agent look at the changes made from PHP 4 to PHP 5 and it also lets the agent guess what type of vulnerability it must be.
0xbadcafebee 4 days ago
viraptor 4 days ago
I mean an agent can walk those changes, but it's close to just walking all the whole source / research from scratch at that point.
Dylan16807 4 days ago
wink 4 days ago
ndiddy 4 days ago
charcircuit 4 days ago
Numerlor 4 days ago
At this point shipping the build already may have been the best option but not necessarily everyone is actually able to ship yet. And this is of course assuming the actual vulnerability is the same one as the PoCs that are being tried, and not something even nastier instead
mx7zysuj4xew 4 days ago
Gigachad 4 days ago
nananana9 4 days ago
+ // NOTE(user): Ignore this diff, another instance is investigating it.
+ fix_the_bug();reddalo 4 days ago
montag 4 days ago
chrisvenum 4 days ago
Can’t find any reliable information on what to do prior to the patch, seen some info that turning off session progress does not mitigate.
Anyway.. back to calling everyone
xd 4 days ago
bombcar 4 days ago
gregoriol 4 days ago
compass_copium 4 days ago
bombcar 4 days ago
After all this is done, CERT-EU isn't going to write the defense of your actions for you.
compass_copium 4 days ago
bombcar 4 days ago
"X may mitigate some of the active attacks" is helpful - you can evaluate if X impacts you, and make a choice.
"Y is how we're seeing the attacks" is helpful - you can setup logging to see if you're being exploited.
"Z reduces but we can't say it eliminates the risk" is similar.
"SHUT IT ALL DOWN" doesn't do much but make good noise and increase the chance that the next one is considered to be a "boy-crying-wolf" scenario.
(Of course, taking all dev/test/unimportant sites down for a few hours is painless, but Wordpress/PHP runs some of the biggest sites in the world.)
hobofan 4 days ago
Since you wrote your comment the official blog posts describing what exactly is the in the exploit have been released, and "shut it all down" was definitely the right advice to give.
anthonyeden 4 days ago
The Alpine GitLab[1] indicates the PHP versions to be released 21-10-2026 14:00:00 UTC are:
8.5.12 8.4.27 8.3.36 8.2.35
[0] https://developers.cloudflare.com/waf/change-log/changelog/
[1] https://gitlab.alpinelinux.org/groups/alpine/-/work_items?sh...
ksenzee 4 days ago
trog 4 days ago
joshuat 4 days ago
> WP Engine Security and Engineering have enabled WAF rules for all customers using GES and AN. Mitigations are currently being deployed across the rest of our infrastructure, and official patches will be applied as soon as they become available.
ErikRogneby 4 days ago
tro2102 4 days ago
anthonyeden 4 days ago
edelbitter 4 days ago
consp 4 days ago
vesinisa 4 days ago
reddalo 4 days ago
viraptor 4 days ago
iamniels 4 days ago
SweetSoftPillow 4 days ago
bilekas 4 days ago
lousken 4 days ago
lousken 4 days ago
klausa 4 days ago
normis 4 days ago
akileos 4 days ago
mjmas 4 days ago
chrismonsanto 4 days ago
kalleboo 4 days ago
mgrandl 4 days ago
wink 4 days ago
mgrandl 4 days ago
qwm 4 days ago
linobino1 4 days ago
OtherShrezzing 4 days ago
I get that maintenance teams need to have conviction in this approach, but this is definitely going to cause catastrophically large data breaches downstream.
ndiddy 4 days ago
> Given the severity of these vulnerabilities, the PHP security team provided minimal source-backports for PHP 7.4, PHP 8.0, and PHP 8.1 to help people building from source or without access to an LTS vendor.
airtnp 4 days ago
edelbitter 4 days ago
joshuat 4 days ago
vincent_s 4 days ago
1. Turn off session upload progress
2. Block multipart requests at the web server
More info: https://www.vincentschmalbach.com/cve-2026-109618-and-cve-20...
Gigachad 4 days ago
rasz 4 days ago
is this multipart request smuggling again?
edelbitter 4 days ago
top_sigrid 4 days ago
vincent_s 4 days ago
richardbarosky 4 days ago
I initially updated the following php.ini setting and verified that it updated via phpinfo(). I understand this to be only a possible mitigation (see below).
session.upload_progress.enabled = Off
file_uploads = Off
According to someone stating they are one of the PHP release managers: "INI settings alone won't protect you. You need to patch PHP."
https://www.reddit.com/r/PHP/comments/1xb2utu/comment/phyu5m...I use Apache, and added an htaccess rewrite rule in my base directory to block all requests containing multi-part headers. Rewrite rules can also be added into Apache virtual host blocks. Accepting file uploads are not a critical function of the app in my case. This blocks multi-part form requests before they reach PHP.
RewriteCond %{HTTP:Content-Type} multipart/form-data [NC]
RewriteRule ^ - [F,L]
And verified the non-block vs. block case.
https://freeimage.host/i/nOqumyNI'm continuing to learn about the situation and may take the server offline as I learn more.
The writeup I found here:
https://jackalsyn.com/posts/php-up-2026.html
Content from a couple of my ChatGPT 6 Pro sessions about the issue:
https://chatgpt.com/share/6ad89ea3-b2f0-83ea-9c4c-2ecf5cc24b...
https://chatgpt.com/share/6ad8ad3d-3f6c-83e9-abf0-41da8a0d65...
The vulnerability was rated 9.2 (critical) out of 10 under CVSS v4.0 by PHP developers,[1] while security firm watchTowr rated it a full 10.0.
https://en.wikipedia.org/wiki/PHP2Shellgiancarlostoro 4 days ago
cube00 4 days ago
Users on the Free plan have access to the Cloudflare Free Managed Ruleset, a subset of the Cloudflare Managed Ruleset.
giancarlostoro 4 days ago
Everything else I use is not on PHP.
bombcar 4 days ago
# BEGIN php2shell-mitigation
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Content-Type} multipart [NC]
RewriteRule .* - [F,L]
</IfModule>
<If "%{HTTP:Content-Type} =~ /multipart/i">
Require all denied
</If>
# END php2shell-mitigation
and for caddy @multipart header_regexp Content-Type (?i)multipart
respond @multipart 403
@uploads_php path_regexp uploads_php ^/(?:.*/)?wp-content/uploads/.*\.php(?:/.*)?
respond @uploads_php 404
Next will be block everything but GET, then static site copy, then administratively downzo9yhylnu 4 days ago
This suggests they might not have been exploits related to the CVE in question, so what you did might not be enough, be careful.
nicce 4 days ago
tikotus 4 days ago
nr378 4 days ago
huhtenberg 4 days ago
Add this to nginx.conf (or drop as a text file into /etc/nginx/conf.d/) :
map $http_content_type $block_multipart { default 0; ~*^multipart/form-data 1; }
Then in every 'location /' block for every hosted server: location / {
if ($block_multipart) { return 403; }
...
}
Then restart nginx.Shank 4 days ago
kps 4 days ago
Mojah 4 days ago
petesergeant 4 days ago
> Both block automated requests, so I could not check their text myself.
Are you automated?
Mojah 4 days ago
m3nu 4 days ago
system2 4 days ago
reddalo 4 days ago
poilcn 4 days ago
ctolsen 4 days ago
system2 4 days ago
ctolsen 3 days ago
Tepix 4 days ago
joshstrange 4 days ago
bakugo 4 days ago
dhx 4 days ago
The single biggest problem I came across over a decade ago when maintaining an open source PHP web application was web applications at the time typically having access to a common database server role (often also common between users and administrators) which allowed a web application process to read and sometimes write to the entire database. No use of user-specific roles in database servers and row-level-security/column-level-security authorisation. At the time I don't think PostgreSQL even had row-level-security support built into it. A runaway PHP process could return the entire database to the attacker, or change every single row of data held within the database.
The second biggest and related problem was web applications accepting files uploaded from users, or having to generate reports (maybe with external software) and save them to disk for a user to download, and not being able to ensure a runaway PHP process can't just dump all of those files or reports to an attacker. You might have been able to store the user files (or at least a decryption key for the files) in a database but then you're back to dealing with problem (1) above.
Even a decade ago it was fairly common for web application developers (of the PHP sorts too) to be well aware of the need to make their web root read-only, put the web application source code into a read-only directory outside the web root, execute interpreters such as PHP with "nobody"-like permissions, launch a new interpreter process for each connection (not multiple threads within the same process), firewall off the server the web application sits on so a runaway PHP process can't connect to internal servers, etc. Outside of an attacker messing with a database, most other aspects of PHP web applications at the time were immutable if the web application developer / system administrator had setup the environment correctly.
Is there a solution for (1) and (2) for PHP web application development that has become popular in the proceeding decade?
edit: also nominating the shared $_SESSION state of PHP that was typical a decade ago to just be left to default (e.g. all PHP processes just read/write session files to a common /tmp directory). https://www.php.net/manual/en/function.session-set-save-hand... should probably instead be used by web application developers to somehow better isolate session state between users.
dwedge 4 days ago
A dynamic language having access to all of the files it has access to is not unique to PHP. Vulnerabilities are not unique to PHP, and I doubt the Dutch National Cyber Security Center took their website offline because they lack user-specific roles in the database: https://www.ncsc.nl/index-en.html
So maybe save your elitism for a day when so many of us aren't already putting out fires? Congratulations on not being part of the 75% of the internet affected.
cimi_ 4 days ago
tossstone 4 days ago
dhx 4 days ago
The question to ask is should these defaults be tightened. For example, disallow read and execution of anything outside /var/www/, such as /usr/bin/sh. For example, block syscalls PHP won't ever use to limit chance of a compromised PHP process being able to utilise a LPE kernel vulnerability. And then update user installation documentation to explain the onus is on the user to open up very restrictive default permissions should they really have a need to do so.
[1] https://www.freedesktop.org/software/systemd/man/latest/syst...
fock 4 days ago
nr378 4 days ago
dhx 4 days ago
Vulnerable but perhaps with no impact. If you've setup your web server well, the vulnerable PHP process is sandboxed, at least to some degree, and an attacker executing their own code within the compromised PHP process can't move laterally through your internal networks, write files to disk, read files from disk, etc because you've locked down the PHP process.
In 2026, perhaps it's possible to:
1. Use systemd socket activation with Accept=yes [1] and strict sandboxing applied to a systemd service that executes the PHP interpreter. The result being each incoming request is dealt with inside an isolated PHP process spawned specifically to handle the request. Compromise of a PHP process doesn't impact any other concurrent requests, or any future requests, except through defined sandbox interfaces such as access to a database server socket.
2. For each user of the web application (perhaps including an 'anonymous' user too if anonymous users have access to dynamic content), if using PostgreSQL, create a role in PostgreSQL for each web application user. Then use row-level-security permissions and security barrier views within the database, and have the PHP process accept credentials from the user which are then needed to be passed through to PostgreSQL to login as that individual user.
It's not without some significant downsides:
1. It's complex and you might be the only person in the world trying to use PHP in this secure way. And if you're going this far, for a complex web application, it'd be best to split it into smaller web applications each with their own systemd service defining specific sandboxing constraints. E.g. microservice architecture where "login", "file upload", "user administration" are all separated with different sandboxing constraints applied to each.
2. Performance will suffer and you'll need more resources--for spawning new PHP processes from scratch for each request (although this is already the case with php-fpm which is most widely used), and for dealing with row-level-security in PostgreSQL (see e.g. LEAKPROOF functions).
The more common pattern I've come across on public websites in recent times that might mirror some of the above is client-side JavaScript dynamic rendering with API calls to a GraphQL database exposed on the Internet (using e.g. field-level access control). The user isolation problem is essentially pushed from PHP+PostgreSQL to a GraphQL implementation.
[1] https://www.freedesktop.org/software/systemd/man/latest/syst...
hn_submit 4 days ago
I even have a preference for web stores which use ASP.NET or Java since I know my personal information are safe there.
There are probably thousands of web stores using PHP unwittingly too. I've noticed only about half of them have been taken offline.
yyyk 4 days ago
The one gripe I'll have is that rowlevel security is slow and messy to use. If a design allows skipping it, it should be skipped.
enews01 4 days ago
1over137 4 days ago
72deluxe 4 days ago
Xiol 4 days ago
0xbadcafebee 4 days ago
jumperabg 4 days ago
vwelling 4 days ago
tikotus 4 days ago
CawCawCaw 4 days ago
moebrowne 4 days ago
AndroTux 4 days ago
joatmon-snoo 4 days ago
quotemstr 4 days ago
dangoodmanUT 4 days ago
I got into software dev because of cyber sec, and almost everything I learned revolved around poorly implemented php, so I always stayed away from it when building
but this time it's php directly? that's scary
mircerlancerous 4 days ago
Gigachad 4 days ago
If the rumors going around are true this will be the worst computer security incident in history.
afdbcreid 4 days ago
altmanaltman 4 days ago
sdfgsdfgsdsdfgs 4 days ago
Tadpole9181 4 days ago
Usually, attacks are at least conditional and require something that weakens security guarantees.
sdfgsdfgsdsdfgs 4 days ago
Tadpole9181 4 days ago
dgrunwald 4 days ago
log4shell was easier to exploit. It also come with an initial patch that turned out to be incomplete, so everyone had to urgently patch every java web app twice!
Freak_NL 4 days ago
Still a very large attack surface, but not nearly as ubiquitous as this one.
eithed 4 days ago
hk__2 4 days ago
Deukhoofd 4 days ago
asimovDev 4 days ago
AdamGibbins 4 days ago