File 0004-CVE-2025-22870-vendor-proxy-http-httpproxy-do-not-mi.patch of Package skopeo.38027
From be7906138b2e100b2b195e11978e36f1004469b9 Mon Sep 17 00:00:00 2001
From: Damien Neil <dneil@google.com>
Date: Thu, 6 Mar 2025 14:57:43 +0100
Subject: [PATCH 4/4] CVE-2025-22870: vendor: proxy, http/httpproxy: do not
mismatch IPv6 zone ids against hosts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When matching against a host "example.com",
don't match an IPv6 address like "[1000::1%25.example.com]:80".
Thanks to Juho Forsén of Mattermost for reporting this issue.
Fixes CVE-2025-22870
For https://github.com/golang/go/issues/71984
Fixes [bsc#1238685](https://bugzilla.suse.com/show_bug.cgi?id=1238685)
---
vendor/golang.org/x/net/proxy/per_host.go | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go
index 573fe79e..b8a0d7c1 100644
--- a/vendor/golang.org/x/net/proxy/per_host.go
+++ b/vendor/golang.org/x/net/proxy/per_host.go
@@ -7,6 +7,7 @@ package proxy
import (
"context"
"net"
+ "net/netip"
"strings"
)
@@ -57,7 +58,8 @@ func (p *PerHost) DialContext(ctx context.Context, network, addr string) (c net.
}
func (p *PerHost) dialerForRequest(host string) Dialer {
- if ip := net.ParseIP(host); ip != nil {
+ if nip, err := netip.ParseAddr(host); err == nil {
+ ip := net.IP(nip.AsSlice())
for _, net := range p.bypassNetworks {
if net.Contains(ip) {
return p.bypass
@@ -108,8 +110,8 @@ func (p *PerHost) AddFromString(s string) {
}
continue
}
- if ip := net.ParseIP(host); ip != nil {
- p.AddIP(ip)
+ if nip, err := netip.ParseAddr(host); err == nil {
+ p.AddIP(net.IP(nip.AsSlice()))
continue
}
if strings.HasPrefix(host, "*.") {
--
2.49.0