Skip to content

Commit 20c72c8

Browse files
Merge pull request #807 from MrSanketkumar/CVE-2026-46579-4.14
[release-4.14] OCPBUGS-86711: Strip X-SSL-* headers for plain HTTP
2 parents acad61a + f61fa0a commit 20c72c8

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

images/router/haproxy/conf/haproxy-config.template

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,23 @@ frontend public
242242
# Strip off Proxy headers to prevent HTTpoxy (https://httpoxy.org/)
243243
http-request del-header Proxy
244244

245+
# Strip off X-SSL* headers for plain HTTP if not explicitly disabled.
246+
# This prevents unauthenticated spoofing of mutual TLS client identities.
247+
{{- if isTrue (env "ROUTER_MUTUAL_TLS_HEADER_FILTER" "true") }}
248+
http-request del-header X-SSL
249+
http-request del-header X-SSL-Client-CN
250+
http-request del-header X-SSL-Client-DER
251+
http-request del-header X-SSL-Client-DN
252+
http-request del-header X-SSL-Client-NotAfter
253+
http-request del-header X-SSL-Client-NotBefore
254+
http-request del-header X-SSL-Client-SHA1
255+
http-request del-header X-SSL-Client-Serial
256+
http-request del-header X-SSL-Client-Subject
257+
http-request del-header X-SSL-Client-Verify
258+
http-request del-header X-SSL-Client-Version
259+
http-request del-header X-SSL-Issuer
260+
{{- end }}
261+
245262
# DNS labels are case insensitive (RFC 4343), we need to convert the hostname into lowercase
246263
# before matching, or any requests containing uppercase characters will never match.
247264
http-request set-header Host %[req.hdr(Host),lower]
@@ -356,6 +373,24 @@ frontend fe_sni
356373
# Strip off Proxy headers to prevent HTTpoxy (https://httpoxy.org/)
357374
http-request del-header Proxy
358375

376+
# Strip off X-SSL* headers if not explicitly disabled.
377+
# This prevents unauthenticated spoofing of mutual TLS client identities
378+
# when mutual TLS is not enabled and so the headers are not set below.
379+
{{- if isTrue (env "ROUTER_MUTUAL_TLS_HEADER_FILTER" "true") }}
380+
http-request del-header X-SSL
381+
http-request del-header X-SSL-Client-CN
382+
http-request del-header X-SSL-Client-DER
383+
http-request del-header X-SSL-Client-DN
384+
http-request del-header X-SSL-Client-NotAfter
385+
http-request del-header X-SSL-Client-NotBefore
386+
http-request del-header X-SSL-Client-SHA1
387+
http-request del-header X-SSL-Client-Serial
388+
http-request del-header X-SSL-Client-Subject
389+
http-request del-header X-SSL-Client-Verify
390+
http-request del-header X-SSL-Client-Version
391+
http-request del-header X-SSL-Issuer
392+
{{- end }}
393+
359394
# DNS labels are case insensitive (RFC 4343), we need to convert the hostname into lowercase
360395
# before matching, or any requests containing uppercase characters will never match.
361396
http-request set-header Host %[req.hdr(Host),lower]
@@ -468,6 +503,24 @@ frontend fe_no_sni
468503
# Strip off Proxy headers to prevent HTTpoxy (https://httpoxy.org/)
469504
http-request del-header Proxy
470505

506+
# Strip off X-SSL* headers if not explicitly disabled.
507+
# This prevents unauthenticated spoofing of mutual TLS client identities
508+
# when mutual TLS is not enabled and so the headers are not set below.
509+
{{- if isTrue (env "ROUTER_MUTUAL_TLS_HEADER_FILTER" "true") }}
510+
http-request del-header X-SSL
511+
http-request del-header X-SSL-Client-CN
512+
http-request del-header X-SSL-Client-DER
513+
http-request del-header X-SSL-Client-DN
514+
http-request del-header X-SSL-Client-NotAfter
515+
http-request del-header X-SSL-Client-NotBefore
516+
http-request del-header X-SSL-Client-SHA1
517+
http-request del-header X-SSL-Client-Serial
518+
http-request del-header X-SSL-Client-Subject
519+
http-request del-header X-SSL-Client-Verify
520+
http-request del-header X-SSL-Client-Version
521+
http-request del-header X-SSL-Issuer
522+
{{- end }}
523+
471524
# DNS labels are case insensitive (RFC 4343), we need to convert the hostname into lowercase
472525
# before matching, or any requests containing uppercase characters will never match.
473526
http-request set-header Host %[req.hdr(Host),lower]

0 commit comments

Comments
 (0)