CVE-2024-35955
CVE.org · Published
- Record status
- Published
- Identifier year (not publication year)
- 2024
- Source publication
- Source updated
- Imported by cveboard
- Source snapshot
- cve_2026-10-24_midnight_baseline ·
CNA source text (English)
kprobes: Fix possible use-after-free issue on kprobe registration
In the Linux kernel, the following vulnerability has been resolved: kprobes: Fix possible use-after-free issue on kprobe registration When unloading a module, its state is changing MODULE_STATE_LIVE -> MODULE_STATE_GOING -> MODULE_STATE_UNFORMED. Each change will take a time. `is_module_text_address()` and `__module_text_address()` works with MODULE_STATE_LIVE and MODULE_STATE_GOING. If we use `is_module_text_address()` and `__module_text_address()` separately, there is a chance that the first one is succeeded but the next one is failed because module->state becomes MODULE_STATE_UNFORMED between those operations. In `check_kprobe_address_safe()`, if the second `__module_text_address()` is failed, that is ignored because it expected a kernel_text address. But it may have failed simply because module->state has been changed to MODULE_STATE_UNFORMED. In this case, arm_kprobe() will try to modify non-exist module text address (use-after-free). To fix this problem, we should not use separated `is_module_text_address()` and `__module_text_address()`, but use only `__module_text_address()` once and do `try_module_get(module)` which is only available with MODULE_STATE_LIVE.
Scoped product and version facts
Fix information unknown; no fixed version is derived here. Missing information does not prove that no fix exists.
Exploitation unknown; this catalogue does not assess exploitation.
Linux
- Vendor
- Linux
- Product
- Linux
- Platforms
- Unknown
- Default status
unaffected
| Version (version) | Status (status) | Version scheme (versionType) | Exclusive end (lessThan) | Inclusive end (lessThanOrEqual) | Status changes (at → status) |
|---|---|---|---|---|---|
| 1c836bad43f3e2ff71cc397a6e6ccb4e7bd116f8 | affected | git | b5808d40093403334d939e2c3c417144d12a6f33 | Unavailable | None listed |
| 6a119c1a584aa7a2c6216458f1f272bf1bc93a93 | affected | git | 93eb31e7c3399e326259f2caa17be1e821f5a412 | Unavailable | None listed |
| 2a49b025c36ae749cee7ccc4b7e456e02539cdc3 | affected | git | 5062d1f4f07facbdade0f402d9a04a788f52e26d | Unavailable | None listed |
| a1edb85e60fdab1e14db63ae8af8db3f0d798fb6 | affected | git | 2df2dd27066cdba8041e46a64362325626bdfb2e | Unavailable | None listed |
| 28f6c37a2910f565b4f5960df52b2eccae28c891 | affected | git | 62029bc9ff2c17a4e3a2478d83418ec575413808 | Unavailable | None listed |
| 28f6c37a2910f565b4f5960df52b2eccae28c891 | affected | git | d15023fb407337028a654237d8968fefdcf87c2f | Unavailable | None listed |
| 28f6c37a2910f565b4f5960df52b2eccae28c891 | affected | git | 36b57c7d2f8b7de224980f1a284432846ad71ca0 | Unavailable | None listed |
| 28f6c37a2910f565b4f5960df52b2eccae28c891 | affected | git | 325f3fb551f8cd672dbbfc4cf58b14f9ee3fc9e8 | Unavailable | None listed |
| 4262b6eb057d86c7829168c541654fe0d48fdac8 | affected | git | Unavailable | Unavailable | None listed |
| 97e813e6a143edf4208e15c72199c495ed80cea5 | affected | git | Unavailable | Unavailable | None listed |
| 16a544f1e013ba0660612f3fe35393b143b19a84 | affected | git | Unavailable | Unavailable | None listed |
| 4.19.256 | affected | semver | 4.19.313 | Unavailable | None listed |
| 5.4.211 | affected | semver | 5.4.275 | Unavailable | None listed |
| 5.10.137 | affected | semver | 5.10.216 | Unavailable | None listed |
| 5.15.61 | affected | semver | 5.15.157 | Unavailable | None listed |
| 4.14.291 | affected | semver | 4.15 | Unavailable | None listed |
| 5.18.18 | affected | semver | 5.19 | Unavailable | None listed |
| 5.19.2 | affected | semver | 5.20 | Unavailable | None listed |
Linux
- Vendor
- Linux
- Product
- Linux
- Platforms
- Unknown
- Default status
affected
| Version (version) | Status (status) | Version scheme (versionType) | Exclusive end (lessThan) | Inclusive end (lessThanOrEqual) | Status changes (at → status) |
|---|---|---|---|---|---|
| 6.0 | affected | Unavailable | Unavailable | Unavailable | None listed |
| 0 | unaffected | semver | 6.0 | Unavailable | None listed |
| 4.19.313 | unaffected | semver | Unavailable | 4.19.* | None listed |
| 5.4.275 | unaffected | semver | Unavailable | 5.4.* | None listed |
| 5.10.216 | unaffected | semver | Unavailable | 5.10.* | None listed |
| 5.15.157 | unaffected | semver | Unavailable | 5.15.* | None listed |
| 6.1.87 | unaffected | semver | Unavailable | 6.1.* | None listed |
| 6.6.28 | unaffected | semver | Unavailable | 6.6.* | None listed |
| 6.8.7 | unaffected | semver | Unavailable | 6.8.* | None listed |
| 6.9 | unaffected | original_commit_for_fix | Unavailable | * | None listed |