CVE-2024-58060

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-58060
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-58060.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-58060
Downstream
Related
Published
2025-03-06T15:54:03Z
Modified
2025-10-17T20:50:19.669757Z
Severity
  • 7.8 (High) CVSS_V3 - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H CVSS Calculator
Summary
bpf: Reject struct_ops registration that uses module ptr and the module btf_id is missing
Details

In the Linux kernel, the following vulnerability has been resolved:

bpf: Reject structops registration that uses module ptr and the module btfid is missing

There is a UAF report in the bpfstructops when CONFIGMODULES=n. In particular, the report is on tcpcongestion_ops that has a "struct module *owner" member.

For structops that has a "struct module *owner" member, it can be extended either by the regular kernel module or by the bpfstructops. bpftrymoduleget() will be used to do the refcounting and different refcount is done based on the owner pointer. When CONFIGMODULES=n, the btfid of the "struct module" is missing:

WARN: resolve_btfids: unresolved symbol module

Thus, the bpftrymodule_get() cannot do the correct refcounting.

Not all subsystem's structops requires the "struct module *owner" member. e.g. the recent schedext_ops.

This patch is to disable bpfstructops registration if the structops has the "struct module *" member and the "struct module" btfid is missing. The btftypeis_fwd() helper is moved to the btf.h header file for this test.

This has happened since the beginning of bpfstructops which has gone through many changes. The Fixes tag is set to a recent commit that this patch can apply cleanly. Considering CONFIG_MODULES=n is not common and the age of the issue, targeting for bpf-next also.

References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1611603537a4b88cec7993f32b70c03113801a46
Fixed
b777b14c2a4a4e2322daf8e8ffd42d2b88831b17
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1611603537a4b88cec7993f32b70c03113801a46
Fixed
2324fb4e92092837ee278fdd8d60c48ee1a619ce
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1611603537a4b88cec7993f32b70c03113801a46
Fixed
96ea081ed52bf077cad6d00153b6fba68e510767

Affected versions

v6.*

v6.10
v6.10-rc1
v6.10-rc2
v6.10-rc3
v6.10-rc4
v6.10-rc5
v6.10-rc6
v6.10-rc7
v6.11
v6.11-rc1
v6.11-rc2
v6.11-rc3
v6.11-rc4
v6.11-rc5
v6.11-rc6
v6.11-rc7
v6.12
v6.12-rc1
v6.12-rc2
v6.12-rc3
v6.12-rc4
v6.12-rc5
v6.12-rc6
v6.12-rc7
v6.12.1
v6.12.10
v6.12.11
v6.12.12
v6.12.2
v6.12.3
v6.12.4
v6.12.5
v6.12.6
v6.12.7
v6.12.8
v6.12.9
v6.13
v6.13-rc1
v6.13-rc2
v6.13-rc3
v6.13-rc4
v6.13-rc5
v6.13-rc6
v6.13-rc7
v6.13.1
v6.8
v6.8-rc2
v6.8-rc3
v6.8-rc4
v6.8-rc5
v6.8-rc6
v6.8-rc7
v6.9
v6.9-rc1
v6.9-rc2
v6.9-rc3
v6.9-rc4
v6.9-rc5
v6.9-rc6
v6.9-rc7

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.9.0
Fixed
6.12.13
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.13.2