Top
Best
New

Posted by tuyuri 14 hours ago

PHP 8.2.35(github.com)
Related ongoing thread: Today's PHP security release, and how we're strengthening security - https://news.ycombinator.com/item?id=50182987
984 points | 535 commentspage 11
hizlikovboy27 14 hours ago|
[dead]
holnp 12 hours ago||
[dead]
consocio 11 hours ago||
[dead]
consocio 11 hours ago||
[dead]
gib444 8 hours ago||
Hetzner's control panels are PHP. And they're totally unresponsive. Perhaps people storming to manage their services or submit support requests.

Maybe Hetzner know a company that can help out with extra computer resource...? /s

Useless. My fault for paying peanuts

holnp 12 hours ago||
[flagged]
EGreg 14 hours ago||
[flagged]
Shank 14 hours ago|
I really do not think anyone should trust a vibe coded repo that launched 1 minute ago as a viable defense for any service.
bombcar 14 hours ago|||
Yes, you should vibe-code your own instead.

(Not even joking, if you're going to go hog go whole-hog.)

EGreg 14 hours ago|||
You're right, you should just leave your PHP totally unprotected.

I would recommend running this binary as a user that has no access to any files, it can just proxy traffic through a port. I will put that in the README.

Shank 14 hours ago||
You should follow the NSA's advice or the Prime Minister of Japan's advice and take the service offline: https://x.com/NSACyber/status/2112903220209098897
EGreg 13 hours ago||
Yes. Take your PHP service offline for the next year, until you can find a way to migrate it off your host and rebuild the PHP yourself on your environment. That'll help.
EGreg 14 hours ago||
[flagged]
julkali 14 hours ago||
Please stop pushing your slop to profit off the situation.
antiloper 14 hours ago|||
Surely the "structual fix" for a use-after-free is a pile of unreviewed C code! I don't see any problem here.
EGreg 14 hours ago||
It's free, MIT open source. It was the best I could do. Run it under a Linux user with no permissions to access anything. All it's supposed to do is proxy requests. Don't give it access to any files.
mirashii 12 hours ago||
> It was the best I could do.

Honestly, and not to be harsh, but doing absolutely nothing is better than what you've done here.

Not only is this proxy unlikely to actually protect against the issues, but this code almost certainly has its own, equally bad security vulnerabilities. A 30 second check with Opus 5.5 found at least one heap overflow, multiple memory leaks, and a number of bugs that shows that it doesn't even succeed at doing what it claims. I appreciate that you're trying to help, but there are better tools for the approach that you're going for here, and injecting noise with AI slop that isn't even reviewed at a basic level is causing noise, confusion, and potential harm in an already urgent, tense situation.

EGreg 12 hours ago||
[flagged]
mirashii 11 hours ago|||
I'm going to engage only because I do not wish others to come across this project and think it's serious. I did open the project and read the code, and I did throw it into an LLM as I previously said for some very basic security posture checks, and found a number problems immediately, but I don't trust them (and neither should you, which is part of the problem here), so I went digging a bit deeper. I don't have the time to go through all of them, so here's a big one of my own finding: There's a parser differential in how multipart boundaries are handled, your proxy only deals with ;, the PHP interpreter accepts , as well, and the proxy will pass it through unchanged to the upstream. That's a full bypass of what the proxy is trying to do.

https://github.com/Qbix/proxy/blob/main/src/sanitize.c#L41 https://github.com/php/php-src/blob/master/main/SAPI.c#L162

The article linked from your own README (https://sansec.io/research/php2shell) has a better partial mitigation in existing, battle-tested reverse proxies. Even still, as that article says, everything here is a partial mitigation. The description of the issues in your project's README is an inaccurate understatement of the severity of the issues. "CVE-2026-109618 — heap use-after-free in the session.upload_progress handler" is an incomplete understatement of the issue, the session.upload_progress handler is only one of a number of potential exploitation paths. https://github.com/php/php-src/security/advisories/GHSA-w8hw... has some hints at other paths, of which there are many.

From an LLM, and quickly validated by me, a heap overflow, likely an RCE.

> src/http.c:101-116 and src/util.c:9

Attacker supplied value in strtoul, the size-limit checks are unsigned addition that can wrap, and you can follow the chain from there.

> or better yet submit a request.

This project is not deserving of fixing, it should just be deleted and direct people to more serious documentation of fixes and mitigations. This code is clearly AI-generated slop, it is not my responsibility to fix your project.

> I could understand if you actually at least clicked and looked at the repository, and read what it’s about. But you chose to simply write generic text without looking at anything. You want to discourage people from protecting their servers, in order to feel good about yourself. What amount of effort have you put into understanding what you’re even talking about?

Every accusation is an admission.

mirashii 11 hours ago|||
[dead]
EGreg 11 hours ago|||
[flagged]
EGreg 14 hours ago|||
You know, normally I'd be okay with these comments, but in this case you're actively hurting a lot of people by this bullshit. Many people need something other than patching PHP.

It's free and MIT licensed, open source and it is currently the only alternative to patching your PHP. The "profit" is for people who don't get PWNED today!!!

Many people can't patch your PHP. If you can't be bothered to even look at the repo, you may want to sit this one out.

https://github.com/Qbix/proxy

klausa 14 hours ago||
In what circumstances would you be unable to patch your PHP, but able to stand this proxy in front of it?
bombcar 14 hours ago|||
The one we're in right now, where we're waiting for vendors to rebuild the packages (I'm ass-blasted that the delay to 14:00 UTC wasn't for the vendors to build packages but seems to be a PR stunt?).
kalleboo 14 hours ago||
Apparently they didn't even use the time to prepare the docker images
EGreg 14 hours ago|||
[flagged]
import 14 hours ago||
Hi, your build is failing my friend.
EGreg 14 hours ago||
You're right – need to fix the Cosmopolitan build in GitHub actions. On it!

UPDATE: Just going to ship a Linux binary for now, that's where most hosting is. Almost no one hosts from a MacOS or Windows machine. The Cosmo binary was overkill here.

DJBunnies 13 hours ago||
> Just going to ship a Linux binary for now

Nobody should trust this.

EGreg 12 hours ago||
Verify it

GitHub actions builds from source

bombcar 14 hours ago|
What I did on our WordPress boxes while waiting for distro packages (CVE-2026-109618 / CVE-2026-109619)

1. session.upload_progress.enabled = Off, in php.ini and as php_admin_flag in every FPM pool, so per-directory config can't turn it back on. It's one of the two confirmed consumers in GHSA-6wmf, and the validated FPM path depends on it. Almost nobody uses it, and the advisory suggests leaving it off even after patching.

2. Refuse multipart request bodies at the web server, before PHP parses them. All of the GHSA-w8hw out-of-memory strategies go through multipart parsing. On Apache it's a rewrite rule matching a Content-Type of multipart/form-data that returns 403. On Caddy it's a header matcher that responds 403. The cost: every browser upload breaks (media library, plugin zips, importers). Check your public forms first.

3. Check your SAPI. Both bugs have confirmed RCE against mod_php. FPM is narrower: the validated path needs upload_progress, and the early INI consumer only applies if your front end sends PHP_VALUE/PHP_ADMIN_VALUE. To check, grep your Apache, nginx and Caddy configs for it, and run apache2ctl -M | grep php.

4. pm.max_requests = 1 in the pools. A worker serves one request and exits, which breaks the stale-state chain: the "producer" and "consumer" requests must land on the same worker. It costs a fork per request.

5. Lower max_input_nesting_level and post_max_size, per the advisory.

6. Housekeeping that should already be done: no .php served from uploads directories, and remove any stray phpinfo.php. Scanners request it constantly, and it tells an attacker your exact build.

dwedge 14 hours ago||
This is just Claude output. Did you verify anything or just rehash the links?
mistertrotsky 14 hours ago|||
HN should ban comments that are just Claude output
throawayonthe 13 hours ago|||
https://news.ycombinator.com/newsguidelines.html#:~:text=Don...
whycome 14 hours ago|||
I’d rather just some sort of tag. Because sometimes it can be useful. This is a case where the community here can scrutinize the output and actually pull out useful data or steps or even starting points when information is coming in so fast for a developing story/issue
bombcar 13 hours ago||
The (pretty obviously Claude'd) responses with actual steps you could take to mitigate were 1000% more useful to me than the "SHUT EVERYTHING DOWN WE'RE GONNA DIE" and the "stop posting AI slop" posts were, that's for sure.
dwedge 13 hours ago||
It was your response. Of course you prefer your response.

The fact is you had no idea how useful or dangerous your advice was. PHP maintainers said to shut it down, how many people followed your advice instead? Did it work or just leave them vulnerable? Do you know?

Because you're heavily implying that the people who knew about the details of the vulnerability were panicking and thank god we had you with an LLM

bombcar 14 hours ago||||
It's just Claude output of what I've done; the other URL has the basics.
DonHopkins 14 hours ago|||
[dead]
bombcar 14 hours ago||
[flagged]
More comments...