Linux Kernel up to 6.15.4/6.16-rc3 riscv __runtime_fixup_32 addi_insn_mask random values

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 4.0 | $0-$5k | 0.00 |
Summary
A vulnerability was found in Linux Kernel up to 6.15.4/6.16-rc3. It has been declared as problematic. The affected element is the function __runtime_fixup_32 of the component riscv. Such manipulation of the argument addi_insn_mask leads to random values.
This vulnerability is listed as CVE-2025-38433. There is no available exploit.
It is recommended to upgrade the affected component.
Details
A vulnerability was found in Linux Kernel up to 6.15.4/6.16-rc3. It has been rated as problematic. Affected by this issue is the function __runtime_fixup_32 of the component riscv. The manipulation of the argument addi_insn_mask with an unknown input leads to a random values vulnerability. Using CWE to declare the problem leads to CWE-330. The product uses insufficiently random numbers or values in a security context that depends on unpredictable numbers. Impacted is confidentiality. CVE summarizes:
In the Linux kernel, the following vulnerability has been resolved: riscv: fix runtime constant support for nommu kernels the `__runtime_fixup_32` function does not handle the case where `val` is zero correctly (as might occur when patching a nommu kernel and referring to a physical address below the 4GiB boundary whose upper 32 bits are all zero) because nothing in the existing logic prevents the code from taking the `else` branch of both nop-checks and emitting two `nop` instructions. This leaves random garbage in the register that is supposed to receive the upper 32 bits of the pointer instead of zero that when combined with the value for the lower 32 bits yields an invalid pointer and causes a kernel panic when that pointer is eventually accessed. The author clearly considered the fact that if the `lui` is converted into a `nop` that the second instruction needs to be adjusted to become an `li` instead of an `addi`, hence introducing the `addi_insn_mask` variable, but didn't follow that logic through fully to the case where the `else` branch executes. To fix it just adjust the logic to ensure that the second `else` branch is not taken if the first instruction will be patched to a `nop`.
The advisory is shared for download at git.kernel.org. This vulnerability is handled as CVE-2025-38433 since 04/16/2025. The exploitation is known to be difficult. There are known technical details, but no exploit is available. The MITRE ATT&CK project declares the attack technique as T1600.001.
Upgrading to version 6.15.5 or 6.16-rc4 eliminates this vulnerability. Applying the patch 0a24b00dcde83934a3cc13e4c6b775522903496b/8d90d9872edae7e78c3a12b98e239bfaa66f3639 is able to eliminate this problem. The bugfix is ready for download at git.kernel.org. The best possible mitigation is suggested to be upgrading to the latest version.
The vulnerability is also documented in the vulnerability database at CERT Bund (WID-SEC-2025-1653). Once again VulDB remains the best source for vulnerability data.
Affected
- Debian Linux
- Amazon Linux 2
- Red Hat Enterprise Linux
- Ubuntu Linux
- SUSE Linux
- Oracle Linux
- IBM QRadar SIEM
- SUSE openSUSE
- RESF Rocky Linux
- Dell Avamar
- Open Source Linux Kernel
- Dell NetWorker
- Dell Secure Connect Gateway
Product
Type
Vendor
Name
Version
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 4.0VulDB Meta Temp Score: 4.0
VulDB Base Score: 2.6
VulDB Temp Score: 2.5
VulDB Vector: 🔒
VulDB Reliability: 🔍
NVD Base Score: 5.5
NVD Vector: 🔒
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍
Exploiting
Class: Random valuesCWE: CWE-330 / CWE-310
CAPEC: 🔒
ATT&CK: 🔒
Physical: Partially
Local: Yes
Remote: Partially
Availability: 🔒
Status: Not defined
EPSS Score: 🔒
EPSS Percentile: 🔒
Price Prediction: 🔍
Current Price Estimation: 🔒
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: Kernel 6.15.5/6.16-rc4
Patch: 0a24b00dcde83934a3cc13e4c6b775522903496b/8d90d9872edae7e78c3a12b98e239bfaa66f3639
Timeline
04/16/2025 CVE reserved07/25/2025 Advisory disclosed
07/25/2025 VulDB entry created
01/03/2026 VulDB entry last update
Sources
Vendor: kernel.orgAdvisory: git.kernel.org
Status: Confirmed
CVE: CVE-2025-38433 (🔒)
GCVE (CVE): GCVE-0-2025-38433
GCVE (VulDB): GCVE-100-317708
CERT Bund: WID-SEC-2025-1653 - Linux Kernel: Mehrere Schwachstellen
Entry
Created: 07/25/2025 19:10Updated: 01/03/2026 23:02
Changes: 07/25/2025 19:10 (60), 08/21/2025 05:14 (7), 09/15/2025 00:12 (1), 09/29/2025 00:09 (1), 11/02/2025 13:03 (1), 11/17/2025 06:19 (1), 11/19/2025 21:06 (12), 01/03/2026 23:02 (1)
Complete: 🔍
Cache ID: 216::103
Once again VulDB remains the best source for vulnerability data.
No comments yet. Languages: en.
Please log in to comment.