Per policy , this is an announcement that I would like to do an
incompatible update of the caddy package in EPEL 9.
The version in the EPEL 9 repo is currently 2.4.6. RHEL 8 currently
has golang 1.19. Based on my recent investigation of the EPEL 7
package , I've discovered just how sensitive caddy is to the
version of golang it is built with. Upstream caddy only ever tested
version 2.4.6 with golang 1.16 and 1.17 . I did previously build
caddy 2.4.6 with golang 1.18, which required swapping out the bundled
quic library to work . Thankfully that worked without patching the
caddy code, but updating the bundled quic further in order to build
with golang 1.19 would require significant patching, which isn't even
guaranteed to work. I do not believe that rebuilding caddy at the
current version in EPEL 9 is feasible, which prevents even attempting
to backport outstanding CVEs. I'm currently tracking two CVEs for the
EPEL 9 package that I would like to fix.
- CVE-2022-28923 
- CVE-2022-41721 
To resolve these CVEs, and to get compatible with RHEL 9's golang
1.19, I think the best version of caddy to update to is 2.6.4.
Updating caddy from 2.4.6 to 2.6.4 includes some
backwards-incompatible changes (hence this email). After review, I
believe these changes are on the milder side, and most users shouldn't
notice a difference. Here are the most notable removals/changes:
- Reverse proxy: Incoming X-Forwarded-* headers will no longer be
automatically trusted, to prevent spoofing.
- Logging: Removed the deprecated common_log field from HTTP access
logs, and the single_field encoder.
- Logging: The remote_addr field has been replaced by remote_ip and
remote_port fields in HTTP access logs, which split up the two parts
of the remote address.
- Caddyfile: The reverse_proxy directive's handle_response
subdirective has had its status replacement functionality moved to a
new replace_status subdirective.
There are also a few additional changes to features labeled as
experimental, and some deprecations (not yet removed). For a full
list, see the upstream release notes .
Finally, I'll note that RHEL 8 has the same version of golang as RHEL
9, so I also targeted caddy 2.6.4 for the initial EPEL 8 package that
is on its way to testing . It will be nice to have the same
version of caddy in both EPEL 8 and EPEL 9.