Security flaws in an SSO plugin for Caddy (2023)
blog.trailofbits.com
blog.trailofbits.com
If I was a user of this plugin, I’d start looking for alternatives pronto.
I'm sure the project would benefit greatly if the community and companies who use it could bolster it up.
Seems a bit like the situation with Wordpress, the core is pretty solid security-wise but the third-party ecosystem isn't as well-tested or maintained.
And if they want to support people then pay them, Caddy is owned by a large company so they should be able to pay maintainers for their most security-critical plugins. I really don't want to be too harsh, it's a great piece of software, but I'm tired of this marketing tendency to wildly exaggerate capabilities and properties of software systems.
> Caddy is owned by a large company so they should be able to pay maintainers for their most security-critical plugins.
this is the most critical part to me, onboarding your highest used plugins is probably a good idea.
In fact, while I'm a top contributor, I don't receive anything for my work. I do it as a volunteer. Matt has told me repeatedly he'd like to pay me for my efforts, but I have a full time job already and Caddy is a hobby for me, so I'm not looking to get paid.
But either way, we wouldn't onboard a plugin with such a wide scope as caddy-security. It would take way too much effort for us, and it would bloat the standard distribution with features only a small part of the userbase would need. We're already spread thin as it is, our time is best spent improving and maintaining the existing core feature set.
And this plugin isn’t built or maintained by our core team. It’s third party.
I stand by our marketing.
I went and sponsored a small monthly pledge as a happy Caddy user, and submitted it to my work's sponsorship team.
It is focused on backwards compatibility and simply does not prioritize security very much. All claims about “okay security in the core” come from having even worse plugins, it making a good story and simply an enormous user base.
Ouch. I was considering switching from oauth2_proxy to Caddy + SSO but this is pretty discouraging..
Better know that up front, than get popped and think "What happened?".
That’s entirely on the idiot that assumes a similarity in name means the project is maintained by the same owner.
If you put your work in the open, advertise it as an officially supported solution, and advertise it as secure, it had better be supported and secure. You can't just put out broken software and hide behind "but you didn't pay for it so who cares." Even worse when the attitude is "it's not my fault, go fix it yourself and submit a PR."
If that is the intent, why even open source it in the first place and tell people to use it. Just keep the code private and use it for yourself.
Over the last decade I have written hundreds of thousands of lines of code for personal projects that will never see the light of day, precisely for this reason. It's not production-quality software, and it would be horrendously irresponsible for me to put it out in the open, advertise it, and tell people to use it, compromising the security of their homelabs (or worse, enterprise deployments).
the point of free software(tm) is gaining benefit from cooperation and community, and nobody is obligated to do anything.
[1]: https://github.com/greenpau/caddy-security/issues?q=is%3Aiss...
I'll consoder stable code fine without new releases for years even, but security issues? Responses and fixes need to be measured in days, not months.
(Some may say "but what about"..., and note all rhe conditions I listed above. Publicly disclosed + timefame. Doesn't matter who it is, big or small, 6 months means the software maintainers show no serious commitment to security, and one should run to other solutions.)
Wouldn’t use it even if not for these security issues.
Meaning how will the plugin know how levels deep is it in the infrastructure… and if you really care about warning devs then it should be a caddy level security bug, not this plugin specifically.
So all those spoofing items is really out of scope for this plugin…
unless i am missing something and the plugin overrides default behavior then of course it’s to blame
That definitely is the job of a security plugin author who uses the value.
Whether it's lesson number one or number two... Don't trust your inputs has got to be near the top of things you learn when doing anything with security.
Edit: now I've read the article... Shocked. The vast majority of this is trusting untrusted user input.