You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
TuxCare: version queries return nothing for CentOS, CentOS-Stream, OracleLinux and RHEL advisories #6257
TuxCare ELS advisories use the inner ecosystem names CentOS, CentOS-Stream, OracleLinux and RHEL (for example TuxCare:CentOS:7). TuxCare resolves the inner name in the global ecosystem registry (osv/ecosystems/_ecosystems.pyis_known()/get(), and resolve() in go/osv/ecosystem/tuxcare.go), where these names do not exist. Version parsing then fails, the query falls back to an exact match on versions, and TuxCare records only have ranges, so /v1/query with a version returns no vulnerabilities.
Example on the live API:
ecosystem / package / version
result
TuxCare:CentOS:7 / openssl / no version
10 vulns
TuxCare:CentOS:7 / openssl / 1:1.0.2k-19.el7
0 (CLSA-2025-1751271968 fixes it in 1:1.0.2k-26.el7_9.tuxcare.els4)
TuxCare:AlmaLinux:9.2 / curl / 7.76.1-26.el9
7 vulns
In the tuxcare-osv data at e0dbd2d this affects 2,975 of the 5,651 non-withdrawn els_os records (CentOS 6/7/8.4/8.5, CentOS-Stream 8, OracleLinux 6/7, RHEL 7/8), so scanners querying osv.dev by version get no results for those hosts. Reported to TuxCare in cloudlinux/tuxcare-osv#10; google/osv-scanner#2917 is the scanner side and is out of scope here.
Proposed fix: map these four inner names to RPM version ordering inside the TuxCare ecosystem only, in both Python and Go, without adding them to the global ecosystem list (they are not OSV schema ecosystems). CentOS:7 on its own would stay unknown; unknown inner names and nested TuxCare:TuxCare:... would behave as today.
I have this implemented with tests in both languages (allowed, denied and invalid-version cases; it fails on master and passes with the change, and a local replay of index and query matching on CLSA-2025-1751271968 marks 1:1.0.2k-19.el7 as affected and the fixed version as not). Could this be assigned to me so I can open the PR?
I've signed the Google CLA, and the fix is ready on a branch: the four inner names map to RPM ordering inside TuxCare only, in Python and Go, with tests that fail on master and pass with the change (unittest, go test, pylint, yapf and golangci-lint clean). It also drops the two //nolint:dupl directives, since tuxcare.go and dhi.go are no longer duplicates. Could this be assigned to me so I can open the PR?
Activity
Amadeus-22 commentedon Nov 2, 2026
I've signed the Google CLA, and the fix is ready on a branch: the four inner names map to RPM ordering inside TuxCare only, in Python and Go, with tests that fail on master and pass with the change (unittest, go test, pylint, yapf and golangci-lint clean). It also drops the two
//nolint:dupldirectives, since tuxcare.go and dhi.go are no longer duplicates. Could this be assigned to me so I can open the PR?