Description
LLVM before 18.1.3 generates code in which the LR register can be overwritten without data being saved to the stack, and thus there can sometimes be an exploitable error in the flow of control. This affects the ARM backend and can be demonstrated with Clang. NOTE: the vendor perspective is "we don't have strong objections for a CVE to be created ... It does seem that the likelihood of this miscompile enabling an exploit remains very low, because the miscompile resulting in this JOP gadget is such that the function is most likely to crash on most valid inputs to the function. So, if this function is covered by any testing, the miscompile is most likely to be discovered before the binary is shipped to production."
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 13 | llvm-toolchain-17 | No fix yet | — |
| Debian 13 | llvm-toolchain-18 | 1:18.1.3-1 | — |
| Debian 12 | llvm-toolchain-14 +2 | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 22.04 LTS | llvm-toolchain-11 +1 | No fix yet | — |
| Ubuntu 20.04 LTS | llvm-toolchain-7 +6 | No fix yet | — |
| Ubuntu 18.04 LTS | llvm-toolchain-7 +8 | No fix yet | — |
| Ubuntu 16.04 LTS | llvm-toolchain-8 +8 | No fix yet | — |
| Ubuntu 14.04 LTS | llvm-toolchain-3.6 +2 | No fix yet | — |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 3 | lld +3 | 18.1.2-2 | — |
| Azure Linux 3 | llvm +1 | 18.1.2-3 | — |
| Azure Linux 3 | rust | 1.75.0-9 | — |
| Azure Linux 2 (CBL-Mariner) | clang16 | 16.0.0-1 | — |
| Azure Linux 2 (CBL-Mariner) | rust | 1.72.0-8 | — |