News for hackers. Stuff that matters.
Re:Nginx 1.25.0: experimental HTTP/3 support by francislavoie on Tuesday May 23, 2023 @09:50PM (#36053113)
With Caddy, you can cluster easily by either sharing its filesystem data storage across machines, or configuring a different storage driver (redis, consul, db, etc.) and they will automatically coordinate for cert issuance. Caddy writes a lock file to the storage which prevents multiple instances from stepping on eachother's toes.
Re:Nginx 1.25.0: experimental HTTP/3 support by bg24 on Tuesday May 23, 2023 @10:52PM (#36053509)
I recently moved to Caddy. Out-of-the-box TLS, HTTP3, Dumbed-down simple configuration, static files... it has been a breath of fresh air.
Re:Nginx 1.25.0: experimental HTTP/3 support by rekoil on Wednesday May 24, 2023 @02:46AM (#36054880)
Caddy is amazing.

Still irritated that they ship it with an unprotected admin endpoint enabled by default on localhost:2019 that eats JSON and allows reconfiguration of the webserver like adding new sites that enable further attacks.

Put "{ admin off }" as a separate block in the root Caddyfile to disable it.

Re:Nginx 1.25.0: experimental HTTP/3 support by francislavoie on Wednesday May 24, 2023 @05:00AM (#36055608)
Our view is that localhost:2019 is inherently protected though - that only allows requests from the same machine. If you're running the machine with shared users, then of course it's up to you to further secure things.

That said, see https://github.com/caddyserver/caddy/issues/5317, we are considering changing the default, but that would be a breaking change although it would likely be a transparent change for most users. The default that makes the most sense depends on the platform and installation method, which is why it's complicated.

Re:Nginx 1.25.0: experimental HTTP/3 support by rekoil on Wednesday May 24, 2023 @06:42AM (#36056173)
SSRF is a thing, just because you trust the code doesn't mean you've eliminated all security risks. The tools we use in the industry should all have secure defaults.

Glad to hear you're considering changing the default!

It would be enough for me if Caddy generated a password (that's hard for attackers to predict) on first launch, set that in a config file it has write access to (autosave.json for example), and then required Basic auth using this password unless the configuration specified otherwise. My problem is that this endpoint is entirely unauthenticated.

Re:Nginx 1.25.0: experimental HTTP/3 support by mholt on Wednesday May 24, 2023 @11:18AM (#36059332)
Have you demonstrated SSRF on a server that is not running insecure or untrusted code (i.e. is not already compromised)?

We have yet to see this, but if we do see a practical demonstration, we're happy to reconsider.

Re:Nginx 1.25.0: experimental HTTP/3 support by rekoil on Wednesday May 24, 2023 @04:11PM (#36063293)
You've never seen an application with an SSRF vulnerability? I've encountered multiple working as a penetration tester.
Re:Nginx 1.25.0: experimental HTTP/3 support by account42 on Wednesday May 24, 2023 @08:43AM (#36057219)
This is a horrible approach to security. Bad. Bad. Bad.
Re:Nginx 1.25.0: experimental HTTP/3 support by mholt on Wednesday May 24, 2023 @11:28AM (#36059464)
Making decisions based on demonstration of practical attacks is "bad bad bad"?
Re:Nginx 1.25.0: experimental HTTP/3 support by account42 on Wednesday May 24, 2023 @11:44AM (#36059688)
Assuming that everyone on local host should have admin access to the web server is an extremely bad default, yes. Listening on ports that the user has not requested is bad enough but doing so without any authentication on that interface is bonkers.
Re:Nginx 1.25.0: experimental HTTP/3 support by mholt on Wednesday May 24, 2023 @01:50PM (#36061679)
What is the problem here, that is any different from allowing untrusted code on your machine? Yes, if you don't trust your other users you need to lock down your system. That's not new or unique to Caddy, and indeed you can lock down Caddy too. Once the machine is popped locally it's already game over, authentication can't prevent that.
Re:Nginx 1.25.0: experimental HTTP/3 support by account42 on Thursday May 25, 2023 @05:29AM (#36068643)
Defense works in layers. Punching through one of those layers makes securty worse even if that layer was not the first or the primary defense.

The problem here is that a priviledged process (and yes, a process that has access to Port 80 and 443 is priviledged even if it doesn't run as root) gives unauthenticated control to less priviledged processes.

With good security design you don't lock things down as needed but instead start fully locked down and open up only the accesss you really need.

Re:Nginx 1.25.0: experimental HTTP/3 support by rekoil on Thursday May 25, 2023 @12:29PM (#36072797)
> With good security design you don't lock things down as needed but instead start fully locked down and open up only the accesss you really need.

This. @mholt what we're arguing for is just to have secure defaults.

Re:Nginx 1.25.0: experimental HTTP/3 support by rekoil on Sunday May 28, 2023 @02:54PM (#36106704)
Large enterprise codebases will almost always have some security vulnerabilities in them but are still considered trusted code. Caddy is a fine alternative for ingress to such applications if you ask me, maybe a little on the immature side, but it's certainly getting there. An admin might absolutely pick Caddy for ingress in order to keep config simple, writing a Caddyfile, and ending up with the aforementioned admin endpoint enabled by mistake.
Re:Nginx 1.25.0: experimental HTTP/3 support by fulafel on Wednesday May 24, 2023 @02:48AM (#36054885)
Also written in a memory-safeish language.
Re:Nginx 1.25.0: experimental HTTP/3 support by mholt on Wednesday May 24, 2023 @11:30AM (#36059483)
Yes -- hugely underrated. Memory safety vulnerabilities are the cause of 60-70% of exploits [0] including the infamous Heartbleed. Caddy is not susceptible to these types of vulnerabilities. That we continue to deploy C code to the edge -- including software we think is hardened like nginx or Apache or OpenSSL -- boggles my mind.

[0]: https://www.memorysafety.org/docs/memory-safety/