Repository navigation
feat: re-judge Go modules linked at a pseudo-version by their own history, and drop the out-of-tree ixgbe for the 7.2 kernel - #206
Merged
Conversation
…wn history A Go module whose path has no major-version suffix while the project releases v2 or later can be linked only at a pseudo-version, which names a commit. grype compares it with the releases the advisories give as fixed, and it sorts below every one of them whatever the commit holds. grafana's tempo commit contains both fix commits and is still reported for both, and a 2025 commit of rancher is reported for flaws fixed in 2019. recheckvulns.py gains --gomodules, a directory of commits-only clones of those modules' GitHub repositories, kept up to date like the CNA and OSSA checkouts. The advisory's ranges and fix commits come from grype's own database. A match moves to ignoredMatches when a fix commit the advisory names is an ancestor of the linked commit, or when the newest release that commit descends from is outside every affected range, at or above every fixed release, and was released after all of them, the fixed releases being tags of the repository. The release-date condition keeps a renumbered project's old commits: prometheus's 2021 commit descends from v2.26.0, which sorts above its 3.x module versions but came years before them. projsbom.mk passes go-module-repos, and GOMODULE_GIT in the environment points at a mirror. Verified with the script as committed. test_recheckvulns.sh passes 120 checks, 16 of them new, and test_projsbom.sh 12. In the jim build jail, run on grype 0.119.0's reports for grafana 12.4.12, the rpm's kapacitord and the rancher2 provider, with real clones from GitHub (5 to 15 MB each, 16 seconds in all): both tempo matches are ignored by their fix commits, five rancher matches, two of them High, by a fix commit or a later release, while three rancher matches fixed only in later pseudo-versions and kapacitor's prometheus match are kept. Refs bigstack-oss/cubecos#578 Signed-off-by: Jim Lin <[email protected]> Co-authored-by: Eandalf <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
…wn carries the E610 The kernel's own ixgbe has known the Intel E610 (8086:57AE-57B2) since Linux 6.14, and CubeCOS moves to 7.2. The out-of-tree driver's download, build and install go from the base rootfs, along with the dca line base.modules gained for it. Every image that carries NIC drivers takes ixgbe and its dependencies from the kernel's module tree. The check stays, now against that tree: the build fails on a kernel whose ixgbe lacks the E610 10GBASE-T id. So this needs a kernel of 6.14 or later; a 6.12 build stops there. Verified against the Kmods SIG's 7.2.11 kernel. Its ixgbe lists all five E610 ids, and its dependencies (mdio, libie_fwlog, dca) are in its module tree. The install, PXE and PXE-server ramdisks take every module from that tree, ixgbe and mdio among them, and all 44 module-list patterns of hex and cubecos still match on 7.2.11. A full build on 7.2 needs the rebuilt jail. Refs bigstack-oss/cubecos#578 Signed-off-by: Jim Lin <[email protected]> Co-authored-by: Eandalf <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Eandalf-Bigstack
added this pull request to stack #207
October 17, 2026 13:45
This was referenced Oct 17, 2026
SekiXu
approved these changes
Oct 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
/kind feature
What this PR does / why we need it
Two changes for cubecos's fifth 3.2.0 scan-review round, stacked on #205:
9691e35github.com/grafana/tempo,github.com/rancher/rancher) can be linked only at a pseudo-version, which names a commit. grype compares it with the releases the advisories give as fixed, and it sorts below every one of them, whatever the commit holds. grafana's tempo commit already contains both fix commits and is still reported for both. The new--gomodulespass keeps commits-only clones of those modules' GitHub repositories (GOMODULE_GITfor a mirror), updated between scans like the CNA and OSSA checkouts. It reads each advisory's ranges and fix commits from grype's own database (grype db search). A match moves toignoredMatcheswhen a fix commit the advisory names is an ancestor of the linked commit. It also moves when the newest release that commit descends from is outside every affected range, at or above every fixed release, and was released after all of them, the fixed releases being tags of the repository. projsbom.mk passes--gomodules go-module-repos.7302fb2dcaline base.modules gained for it are dropped. The check stays, against the kernel's module tree, where every image with NIC drivers takes ixgbe from: the build fails on a kernel whose ixgbe lacks the E610 10GBASE-T id.Which issue(s) this PR fixes
Refs bigstack-oss/cubecos#578
Special notes for your reviewer
Stacked: the base is
jim.lin/fix/vuln-handling-4(#205), and this PR is in the same GitHub stack. Merge #205 first.Pairs with the cubecos PR for
jim.lin/fix/vuln-handling-5. Its two hex bumps point at9691e35and7302fb2. Both repos merge fast-forward, so the SHAs stay valid.7302fb2needs a kernel of 6.14 or later. On cubecos's current 6.12 jail its check stops the build; cubecos moves the jail to 7.2 in the same commit that bumps hex to it.Conservative by design. The release rule needs the fixed versions to be tags of the repository and the release to have come after them all. That date condition keeps a renumbered project's old commits: prometheus's 2021 commit descends from v2.26.0, which sorts above its 3.x module versions (
v0.311.3) but came years before them. A fixed pseudo-version whose commit the linked one does not contain keeps the match. So do an unknown commit, a module not on GitHub, and a version that is not a pseudo-version. A repository that cannot be fetched, or grype's database that cannot be read, stops the scan, as for the other sources.Verification:
Unit tests:
scripts/tests/test_recheckvulns.shpasses 120 checks, 16 of them new. They use a local repository with dated commits and tags and a stand-in grype, and cover:test_projsbom.shpasses its 12 checks.On real reports: run in the jim build jail on grype 0.119.0's reports for grafana 12.4.12, kapacitord 1.8.8 and terraform-provider-rancher2 v7.0.0, with clones from GitHub (5 to 15 MB each, 16 seconds in all):
The ixgbe change:
A full build on 7.2 needs cubecos's rebuilt jail.
Additional documentation
🤖 Generated with Claude Code