Skip to content

OCPBUGS-94907: Bump golang.org/x/net to openshift-sustaining/net v0.50.0-sec.2 - #2350

Closed
MrSanketkumar wants to merge 1 commit into
openshift:release-4.20from
MrSanketkumar:CVE-2026-25681-4.20
Closed

OCPBUGS-94907: Bump golang.org/x/net to openshift-sustaining/net v0.50.0-sec.2#2350
MrSanketkumar wants to merge 1 commit into
openshift:release-4.20from
MrSanketkumar:CVE-2026-25681-4.20

Conversation

@MrSanketkumar

@MrSanketkumar MrSanketkumar commented Aug 6, 2026

Copy link
Copy Markdown

Summary

  • Replace golang.org/x/net with github.com/openshift-sustaining/net@v0.50.0-sec.2 to fix CVE-2026-25681 and CVE-2026-39821
  • Go mod tidy and vendor updated

Test plan

  • Build passes (go build ./cmd/oc/)
  • Unit tests pass (pre-existing TLS test failures unrelated to this change)
  • CI verification

Summary by CodeRabbit

  • Chores
    • Updated supporting network, security, synchronization, system, terminal, text, and tooling components.
    • Improved compatibility and maintenance for network functionality.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. labels Aug 6, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@MrSanketkumar: This pull request references Jira Issue OCPBUGS-94907, which is invalid:

  • expected dependent Jira Issue OCPBUGS-91343 to be in one of the following states: VERIFIED, RELEASE PENDING, CLOSED (ERRATA), CLOSED (CURRENT RELEASE), CLOSED (DONE), CLOSED (DONE-ERRATA), but it is Closed (Not a Bug) instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Summary

  • Replace golang.org/x/net with github.com/openshift-sustaining/net@v0.50.0-sec.2 to fix CVE-2026-25681 and CVE-2026-39821
  • Go mod tidy and vendor updated

Test plan

  • Build passes (go build ./cmd/oc/)
  • Unit tests pass (pre-existing TLS test failures unrelated to this change)
  • CI verification

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Aug 6, 2026
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Walkthrough

Changes

Go dependency updates

Layer / File(s) Summary
Dependency versions and replacement
go.mod
Updated versions for direct and indirect golang.org/x dependencies. Added a replacement mapping from golang.org/x/net to github.com/openshift-sustaining/net v0.50.0-sec.2.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Suggested reviewers: ingvagabund, deads2k


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
No-Weak-Crypto ❓ Inconclusive Investigation is still in progress; no verdict submitted yet. Continue repository inspection before deciding.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the Jira issue and the primary dependency replacement described in the pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed The commit changes only go.mod, go.sum, and vendored dependency code; it adds no test files or Ginkgo title calls.
Test Structure And Quality ✅ Passed The commit changes go.mod/go.sum and vendored dependency sources only; no *_test.go files or Ginkgo test blocks were added or modified, so this check is not applicable.
Microshift Test Compatibility ✅ Passed The patch changes module metadata and vendored dependencies only; it adds no non-vendor Go files, tests, or Ginkgo declarations to assess for MicroShift compatibility.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The PR changes only go.mod, go.sum, and vendored dependencies; no Ginkgo e2e test files or declarations were added or modified.
Topology-Aware Scheduling Compatibility ✅ Passed The PR changes only dependency declarations and vendored libraries; no deployment manifests, operator code, or controllers were modified.
Ote Binary Stdout Contract ✅ Passed The PR changes only go.mod, go.sum, and vendored libraries; no OTE binary, suite lifecycle code, or process-level stdout write was added.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The commit changes only go.mod, go.sum, and vendored dependency code; it adds no Ginkgo e2e tests or test declarations to assess.
Container-Privileges ✅ Passed The PR changes only Go module metadata and vendored Go sources. No container or Kubernetes manifest adds privileged, host namespace, SYS_ADMIN, root, or allowPrivilegeEscalation settings.
No-Sensitive-Data-In-Logs ✅ Passed The dependency/vendor update adds no logging-like Go lines; existing HTTP/2 verbose header and frame logging is unchanged, and no non-vendor Go files changed.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@openshift-ci
openshift-ci Bot requested review from deads2k and ingvagabund August 6, 2026 06:11
@openshift-ci

openshift-ci Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: MrSanketkumar
Once this PR has been reviewed and has the lgtm label, please assign deads2k for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@MrSanketkumar

Copy link
Copy Markdown
Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Around line 205-206: Document an approved exception for the golang.org/x/net
replacement with github.com/openshift-sustaining/net v0.50.0-sec.2, covering
license compatibility, CVE status, SBOM/provenance, artifact signing, and vendor
resolution. Retain the replace directive because the upstream v0.55.0
requirement is incompatible with this module’s Go 1.24 version.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cbd6036a-9a11-439a-87c6-3fa2c59801f3

📥 Commits

Reviewing files that changed from the base of the PR and between 02b0b2d and 1df10c8.

⛔ Files ignored due to path filters (138)
  • go.sum is excluded by !**/*.sum
  • vendor/golang.org/x/crypto/openpgp/s2k/s2k.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/scrypt/scrypt.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/hashes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/hashes_noasm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/keccakf_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/keccakf_amd64.s is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/legacy_hash.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/legacy_keccakf.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/sha3_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/sha3_s390x.s is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/shake.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/crypto/sha3/shake_noasm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/context/context.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/escape.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/node.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/nodetype_string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/parse.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/render.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go126.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go127.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/config_go124.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/config_go125.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/config_go126.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/config_pre_go124.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/frame.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/gotrack.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/timer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_roundrobin.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/idna/idna10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/internal/httpcommon/request.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/internal/httpsfv/httpsfv.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/internal/socks/socks.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/websocket/hybi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/errgroup/errgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_arm64.s is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_other_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_x86.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/plan9/pwd_plan9.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/affinity_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/fdset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ifreq_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ioctl_signed.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ioctl_unsigned.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/mkall.sh is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/mkerrors.sh is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_darwin.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_netbsd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_solaris.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_unix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_386.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_386.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_386.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/types_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/zsyscall_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/term/term_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/term/terminal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/encoding/unicode/unicode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/core.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/forminfo.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (1)
  • go.mod

Comment thread go.mod
Comment on lines +205 to +206

replace golang.org/x/net => github.com/openshift-sustaining/net v0.50.0-sec.2

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- go.mod replacement context ---'
sed -n '185,215p' go.mod
printf '%s\n' '--- vendor and dependency references ---'
if [ -d vendor ]; then
  find vendor -maxdepth 3 -type f -path '*openshift-sustaining*' -o -path 'vendor/modules.txt' | sort
  sed -n '/github.com\/openshift-sustaining\/net/,+8p' vendor/modules.txt 2>/dev/null || true
else
  echo 'vendor directory: absent'
fi
printf '%s\n' '--- relevant repository references ---'
rg -n --hidden -g '!/.git' -g '!vendor/**' 'openshift-sustaining/net|v0\.50\.0-sec\.2|GO-2026-5029|pre-release|provenance|SBOM|cosign' .
printf '%s\n' '--- module metadata in go.mod ---'
sed -n '1,30p' go.mod

Repository: openshift/oc

Length of output: 3376


🌐 Web query:

golang.org/x/net v0.50.0-sec.2 github.com/openshift-sustaining/net security fork GO-2026-5029 v0.55.0

💡 Result:

The entity "github.com/openshift-sustaining/net" appears to be a reference to internal or community-maintained network-related repositories under the OpenShift ecosystem, rather than a single standardized security fork of the upstream golang.org/x/net library [1][2][3]. Regarding the specific identifiers mentioned: GO-2026-5029 is a documented security vulnerability (also tracked as CVE-2026-25681) affecting the golang.org/x/net/html package [4][5]. The vulnerability involves incorrect handling of character references in DOCTYPE nodes, which can lead to XSS attacks when parsed HTML is subsequently rendered [4][6][7]. This vulnerability was addressed in the upstream golang.org/x/net package in version v0.55.0 [4][8]. The version string v0.50.0-sec.2 is not a standard release from the official Go Project [9][10]. It is likely a downstream, project-specific, or organization-internal patch version (possibly used within OpenShift-related repositories) applied to address specific vulnerabilities, such as those identified in the v0.50.0 release cycle [11]. Users are generally advised to upgrade to the latest upstream version (v0.55.0 or higher) to ensure all known security vulnerabilities are patched [4][8][7].

Citations:


🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- go.mod replacement context ---'
sed -n '185,215p' go.mod
printf '%s\n' '--- vendor and dependency references ---'
if [ -d vendor ]; then
  find vendor -maxdepth 3 -type f \( -path '*openshift-sustaining*' -o -path 'vendor/modules.txt' \) | sort
  sed -n '/github.com\/openshift-sustaining\/net/,+8p' vendor/modules.txt 2>/dev/null || true
else
  echo 'vendor directory: absent'
fi
printf '%s\n' '--- relevant repository references ---'
rg -n --hidden -g '!/.git' -g '!vendor/**' 'openshift-sustaining/net|v0\.50\.0-sec\.2|GO-2026-5029|pre-release|provenance|SBOM|cosign' .
printf '%s\n' '--- module metadata in go.mod ---'
sed -n '1,30p' go.mod

Repository: openshift/oc

Length of output: 3376


🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- fork module metadata ---'
curl -fsSL https://proxy.golang.org/github.com/openshift-sustaining/net/@v/v0.50.0-sec.2.mod
printf '%s\n' '--- fork version metadata ---'
curl -fsSL https://proxy.golang.org/github.com/openshift-sustaining/net/@v/v0.50.0-sec.2.info
printf '%s\n' '--- upstream fixed module metadata ---'
curl -fsSL https://proxy.golang.org/golang.org/x/net/@v/v0.55.0.mod
printf '%s\n' '--- vendored parser symbols related to DOCTYPE and character references ---'
rg -n -C 5 'doctype|DOCTYPE|char.?ref|character reference|parseDoctype' vendor/golang.org/x/net/html vendor/github.com/openshift-sustaining/net 2>/dev/null || true
printf '%s\n' '--- module version ordering ---'
python3 - <<'PY'
import re
for v in ("v0.50.0-sec.2", "v0.50.0", "v0.55.0"):
    print(v, re.fullmatch(r"v\d+\.\d+\.\d+(?:-([0-9A-Za-z.-]+))?", v).groups())
PY

Repository: openshift/oc

Length of output: 13281


🌐 Web query:

site:github.com/openshift-sustaining/net "v0.50.0-sec.2"

💡 Result:

No GitHub results were found for:

site:github.com/openshift-sustaining/net "v0.50.0-sec.2"


🌐 Web query:

GO-2026-5029 github.com/openshift-sustaining/net v0.50.0-sec.2 fixed fork

💡 Result:

GO-2026-5029 is a Go vulnerability (also identified as CVE-2026-25681) that affects the golang.org/x/net package, specifically related to the improper handling of character references in DOCTYPE nodes [1][2][3]. This vulnerability can be exploited to generate an unexpected HTML tree, potentially enabling Cross-Site Scripting (XSS) attacks in applications that sanitize input HTML before rendering it [1][4]. The issue was addressed in the upstream golang.org/x/net library in version 0.55.0 [1][4]. Regarding the reference to a github.com/openshift-sustaining/net v0.50.0-sec.2 fork, there is no public evidence of a specific repository named openshift-sustaining/net. OpenShift's engineering teams frequently utilize an organization called openshift-sustaining to host patched versions of dependencies (such as grpc-go) to address security vulnerabilities while maintaining compatibility with specific Go toolchain versions or release branches [5][6][7]. It is highly probable that the requested reference is an internal or project-specific identifier for a backported security fix to golang.org/x/net within an OpenShift component, similar to the practices documented for other security patches in the OpenShift ecosystem [5][7]. Users are advised to rely on the upstream fix (upgrading golang.org/x/net to v0.55.0 or later) whenever possible [1][4]. If working within an environment that requires specific version constraints, ensure you are tracking official Red Hat or OpenShift security advisories for guidance on approved patches.

Citations:


🏁 Script executed:

#!/bin/bash
set -eu
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
mkdir -p "$tmp/fork" "$tmp/upstream"

curl -fsSL https://proxy.golang.org/github.com/openshift-sustaining/net/@v/v0.50.0-sec.2.zip -o "$tmp/fork.zip"
curl -fsSL https://proxy.golang.org/golang.org/x/net/@v/v0.55.0.zip -o "$tmp/upstream.zip"
unzip -q "$tmp/fork.zip" -d "$tmp/fork"
unzip -q "$tmp/upstream.zip" -d "$tmp/upstream"

fork_root="$(find "$tmp/fork" -mindepth 1 -maxdepth 1 -type d | head -n1)"
upstream_root="$(find "$tmp/upstream" -mindepth 1 -maxdepth 1 -type d | head -n1)"

printf '%s\n' '--- targeted html source differences ---'
diff -u "$upstream_root/html/doctype.go" "$fork_root/html/doctype.go" || true
diff -u "$upstream_root/html/token.go" "$fork_root/html/token.go" | sed -n '1,240p' || true
printf '%s\n' '--- fork security-related commits and tag ---'
curl -fsSL 'https://api.github.com/repos/openshift-sustaining/net/commits/249934248a04f1b87cce33d0f46fd8b7bb596480' \
  | jq '{sha:.sha, message:.commit.message, date:.commit.author.date}'
printf '%s\n' '--- upstream v0.55.0 commit ---'
curl -fsSL 'https://api.github.com/repos/golang/net/git/ref/tags/v0.55.0' \
  | jq '{type:.object.type, sha:.object.sha}'

Repository: openshift/oc

Length of output: 711


🏁 Script executed:

#!/bin/bash
set -eu
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

curl -fsSL https://proxy.golang.org/github.com/openshift-sustaining/net/@v/v0.50.0-sec.2.zip -o "$tmp/fork.zip"
curl -fsSL https://proxy.golang.org/golang.org/x/net/@v/v0.55.0.zip -o "$tmp/upstream.zip"

printf '%s\n' '--- archive paths ---'
unzip -Z1 "$tmp/fork.zip" | rg '/html/(doctype|token|parse)\.go$'
unzip -Z1 "$tmp/upstream.zip" | rg '/html/(doctype|token|parse)\.go$'

fork_doctype="$(unzip -Z1 "$tmp/fork.zip" | rg '/html/doctype\.go$' | head -n1)"
upstream_doctype="$(unzip -Z1 "$tmp/upstream.zip" | rg '/html/doctype\.go$' | head -n1)"
fork_token="$(unzip -Z1 "$tmp/fork.zip" | rg '/html/token\.go$' | head -n1)"
upstream_token="$(unzip -Z1 "$tmp/upstream.zip" | rg '/html/token\.go$' | head -n1)"

unzip -p "$tmp/fork.zip" "$fork_doctype" > "$tmp/fork-doctype.go"
unzip -p "$tmp/upstream.zip" "$upstream_doctype" > "$tmp/upstream-doctype.go"
unzip -p "$tmp/fork.zip" "$fork_token" > "$tmp/fork-token.go"
unzip -p "$tmp/upstream.zip" "$upstream_token" > "$tmp/upstream-token.go"

printf '%s\n' '--- doctype.go differences ---'
diff -u "$tmp/upstream-doctype.go" "$tmp/fork-doctype.go" || true
printf '%s\n' '--- token.go differences near doctype handling ---'
diff -u "$tmp/upstream-token.go" "$tmp/fork-token.go" | rg -n -C 8 'doctype|DOCTYPE|character|reference|^@@' || true

Repository: openshift/oc

Length of output: 2318


Security Misconfiguration (CWE-16)

Exploitability: Theoretical

Document the approved exception for the downstream security fork.

v0.50.0-sec.2 is a pre-release version. Keep it only if the project records an exception covering license compatibility, CVE status, SBOM/provenance, artifact signing, and vendor resolution. Upstream v0.55.0 requires Go 1.25, while this module uses Go 1.24.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@go.mod` around lines 205 - 206, Document an approved exception for the
golang.org/x/net replacement with github.com/openshift-sustaining/net
v0.50.0-sec.2, covering license compatibility, CVE status, SBOM/provenance,
artifact signing, and vendor resolution. Retain the replace directive because
the upstream v0.55.0 requirement is incompatible with this module’s Go 1.24
version.

Source: Path instructions

@MrSanketkumar

MrSanketkumar commented Aug 6, 2026

Copy link
Copy Markdown
Author

Closing this PR as a fix PR has already been raised by @germanparente (#2342). I will link the existing tracker to that PR instead.

@openshift-ci-robot

Copy link
Copy Markdown

@MrSanketkumar: This pull request references Jira Issue OCPBUGS-94907. The bug has been updated to no longer refer to the pull request using the external bug tracker.

Details

In response to this:

Summary

  • Replace golang.org/x/net with github.com/openshift-sustaining/net@v0.50.0-sec.2 to fix CVE-2026-25681 and CVE-2026-39821
  • Go mod tidy and vendor updated

Test plan

  • Build passes (go build ./cmd/oc/)
  • Unit tests pass (pre-existing TLS test failures unrelated to this change)
  • CI verification

Summary by CodeRabbit

  • Chores
  • Updated supporting network, security, synchronization, system, terminal, text, and tooling components.
  • Improved compatibility and maintenance for network functionality.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

@MrSanketkumar: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/security 1df10c8 link false /test security

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants