-
Notifications
You must be signed in to change notification settings - Fork 68
fix: patch Go stdlib CVEs in pulsarctl (update to go 1.25.5) #1969
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Update go.mod from go 1.25.0 to go 1.25.5 - Fix 13 CVEs in Go stdlib: - CVE-2025-58183 (HIGH): archive/tar unbounded allocation - CVE-2025-61729 (HIGH): crypto/x509 denial of service - CVE-2025-47910 (MEDIUM): net/http CrossOriginProtection bypass - CVE-2025-47912 (MEDIUM): net/url insufficient IPv6 validation - CVE-2025-58185 (MEDIUM): encoding/asn1 memory exhaustion - CVE-2025-58186 (MEDIUM): net/http cookie parsing limit - CVE-2025-58187 (MEDIUM): crypto/x509 quadratic complexity - CVE-2025-58188 (MEDIUM): crypto/x509 panic with DSA keys - CVE-2025-58189 (MEDIUM): crypto/tls ALPN error info leak - CVE-2025-61723 (MEDIUM): encoding/pem quadratic complexity - CVE-2025-61724 (MEDIUM): net/textproto excessive CPU - CVE-2025-61725 (MEDIUM): net/mail excessive CPU - CVE-2025-61727 (MEDIUM): crypto/x509 wildcard SANs restriction Fixed in Go 1.25.5 Related: streamnative/eng-support-tickets#3619
|
@shibd:Thanks for your contribution. For this PR, do we need to update docs? |
CVE Details
Vulnerabilities Fixed
How CVEs Were IntroducedThe vulnerable
The pulsarctl binary is a Go-based CLI tool that, when built with Go 1.25.0, includes the vulnerable stdlib containing all 13 security vulnerabilities. Why Go 1.25.5 is Required: While most of the CVEs (11 out of 13) were fixed in Go 1.25.2, two critical CVEs require Go 1.25.5:
Both are certificate validation issues in the crypto/x509 package and were only patched in Go 1.24.11 and Go 1.25.5. Therefore, we must upgrade to at least Go 1.25.5 to resolve all 13 CVEs. Why This Fix Resolves CVEsUpgrading from Go 1.25.0 to Go 1.25.5 patches all CVEs by:
Changes Made
VerificationAfter this PR is merged:
References
Individual CVE References
Related Previous CVE Fixes (For Reference)
These previous fixes followed the same pattern: update the Go version in pulsarctl's go.mod to patch stdlib vulnerabilities. |
- Update actions/setup-go from v1 to v5 in ci-trivy.yml - setup-go@v1 does not support Go 1.25.x versions - This fixes the 'Set up Go 1.25' step failure in CI
CI FixIssue: The initial CI run failed in the job with error at 'Set up Go 1.25' step. Root Cause: The workflow file was using an outdated action, which does not support Go 1.25.x versions. Fix: Updated :
Verification: All CI checks now pass:
|
|
CI Fix: Updated ci-trivy.yml to use actions/setup-go@v5 (from v1) to support Go 1.25.x. All CI checks now pass successfully. |
Fix 13 CVEs in Go stdlib v1.25.0 by updating to Go 1.25.5
See issue streamnative/eng-support-tickets#3619 for full details.
Summary
We have completed two fixes to resolve the Go version conflict in pulsarctl release builds:
Fix 1: pulsarctl PR #1969 ✅
Updated pulsarctl/go.mod from `go 1.25.0` to `go 1.25.5` to satisfy the stdlib CVE requirements.
PR: #1969
Fix 2: streamnative-ci workflow modification
https://github.com/streamnative/streamnative-ci/pull/6510
This ensures that the Go version used in streamnative-ci release builds meets or exceeds the go.mod requirement (1.25.5), preventing Go's automatic version upgrade to Go 1.25.0.
How the CVE Was Introduced
The Go 1.25.0 stdlib in pulsarctl is used because:
Why This Fix Resolves the CVE
Upgrading to Go 1.25.0 resolves:
All 13 CVEs: The stdlib in 1.25.0 includes patches for vulnerabilities CVE-2025-58183, CVE-2025-61729, CVE-2025-47912, CVE-2025-61727, and 9 others
Version conflict: Prevents Go's automatic version upgrade mechanism from causing `go version go1.25.0` builds even when workflow sets `go-version: 1.24.11`
Related PRs
Testing Notes
After these fixes, the next release build will use:
Users should verify that: