Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ CVE-2024-46787 on Ubuntu — linux

⚪ Unknown ✅ No Known Exploit OSV
N/A
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

In the Linux kernel, the following vulnerability has been resolved: userfaultfd: fix checks for huge PMDs Patch series "userfaultfd: fix races around pmd_trans_huge() check", v2. The pmd_trans_huge() code in mfill_atomic() is wrong in three different ways depending on kernel version: 1. The pmd_trans_huge() check is racy and can lead to a BUG_ON() (if you hit the right two race windows) - I've tested this in a kernel build with some extra mdelay() calls. See the commit message for a description of the race scenario. On older kernels (before 6.5), I think the same bug can even theoretically lead to accessing transhuge page contents as a page table if you hit the right 5 narrow race windows (I haven't tested this case). 2. As pointed out by Qi Zheng, pmd_trans_huge() is not sufficient for detecting PMDs that don't point to page tables. On older kernels (before 6.5), you'd just have to win a single fairly wide race to hit this. I've tested this on 6.1 stable by racing migration (with a mdelay() patched into try_to_migrate()) against UFFDIO_ZEROPAGE - on my x86 VM, that causes a kernel oops in ptlock_ptr(). 3. On newer kernels (>=6.5), for shmem mappings, khugepaged is allowed to yank page tables out from under us (though I haven't tested that), so I think the BUG_ON() checks in mfill_atomic() are just wrong. I decided to write two separate fixes for these (one fix for bugs 1+2, one fix for bug 3), so that the first fix can be backported to kernels affected by bugs 1+2. This patch (of 2): This fixes two issues. I discovered that the following race can occur: mfill_atomic other thread ============ ============ <zap PMD> pmdp_get_lockless() [reads none pmd] <bail if trans_huge> <if none:> <pagefault creates transhuge zeropage> __pte_alloc [no-op] <zap PMD> <bail if pmd_trans_huge(*dst_pmd)> BUG_ON(pmd_none(*dst_pmd)) I have experimentally verified this in a kernel with extra mdelay() calls; the BUG_ON(pmd_none(*dst_pmd)) triggers. On kernels newer than commit 0d940a9b270b ("mm/pgtable: allow pte_offset_map[_lock]() to fail"), this can't lead to anything worse than a BUG_ON(), since the page table access helpers are actually designed to deal with page tables concurrently disappearing; but on older kernels (<=6.4), I think we could probably theoretically race past the two BUG_ON() checks and end up treating a hugepage as a page table. The second issue is that, as Qi Zheng pointed out, there are other types of huge PMDs that pmd_trans_huge() can't catch: devmap PMDs and swap PMDs (in particular, migration PMDs). On <=6.4, this is worse than the first issue: If mfill_atomic() runs on a PMD that contains a migration entry (which just requires winning a single, fairly wide race), it will pass the PMD to pte_offset_map_lock(), which assumes that the PMD points to a page table. Breakage follows: First, the kernel tries to take the PTE lock (which will crash or maybe worse if there is no "struct page" for the address bits in the migration entry PMD - I think at least on X86 there usually is no corresponding "struct page" thanks to the PTE inversion mitigation, amd64 looks different). If that didn't crash, the kernel would next try to write a PTE into what it wrongly thinks is a page table. As part of fixing these issues, get rid of the check for pmd_trans_huge() before __pte_alloc() - that's redundant, we're going to have to check for that after the __pte_alloc() anyway. Backport note: pmdp_get_lockless() is pmd_read_atomic() in older kernels.

Distribution advisory

This page covers CVE-2024-46787 as tracked by Ubuntu, for the package linux. The fix is available in version 6.8.0-50.51; earlier versions remain affected.

How this vulnerability can be exploited

This issue can be reached with local access to the system, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability high.

CVSS metrics in full

The score comes from this vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

  • Attack vector: Local — a local account, shell or session on the host is needed.
  • Attack complexity: Low — the attack works reliably, with no preparation.
  • Privileges required: Low — an ordinary user account is enough.
  • User interaction: None — nobody has to be tricked into anything.
  • Scope: Unchanged — the damage stays inside the vulnerable component.
  • Confidentiality impact: High — total loss, or loss the attacker controls.
  • Integrity impact: High — total loss, or loss the attacker controls.
  • Availability impact: High — total loss, or loss the attacker controls.

Affected software

UBUNTU-CVE-2024-46787 is recorded against 129 packages.

  • linux (fixed in 6.8.0-50.51)
  • linux-allwinner-5.19
  • linux-aws (fixed in 6.8.0-1020.22)
  • linux-aws-5.0
  • linux-aws-5.11
  • linux-aws-5.13
  • linux-aws-5.15 (fixed in 5.15.0-1087.94~20.04.1)
  • linux-aws-5.19
  • linux-aws-5.3
  • linux-aws-5.4 (fixed in 5.4.0-1148.158~18.04.1)
  • linux-aws-5.8
  • linux-aws-6.2
  • linux-aws-6.5
  • linux-aws-6.8 (fixed in 6.8.0-1020.22~22.04.1)
  • linux-aws-fips (fixed in 5.15.0-1087.94+fips1)
  • linux-aws-hwe (fixed in 4.15.0-1182.195~16.04.1)
  • linux-azure (fixed in 6.8.0-1020.23)
  • linux-azure-4.15 (fixed in 4.15.0-1190.205)
  • linux-azure-5.11
  • linux-azure-5.13
  • linux-azure-5.15 (fixed in 5.15.0-1094.103~20.04.1)
  • linux-azure-5.19
  • linux-azure-5.3
  • linux-azure-5.4 (fixed in 5.4.0-1153.160~18.04.1)
Show the remaining 105 packages
  • linux-azure-5.8
  • linux-azure-6.2
  • linux-azure-6.5
  • linux-azure-6.8 (fixed in 6.8.0-1020.23~22.04.1)
  • linux-azure-edge
  • linux-azure-fde
  • linux-azure-fde-5.19
  • linux-azure-fde-6.2
  • linux-azure-fips (fixed in 5.15.0-1094.103+fips1)
  • linux-bluefield
  • linux-fips (fixed in 6.8.0-78.78+fips1)
  • linux-gcp (fixed in 6.8.0-1019.21)
  • linux-gcp-4.15 (fixed in 4.15.0-1175.192)
  • linux-gcp-5.11
  • linux-gcp-5.13
  • linux-gcp-5.15 (fixed in 5.15.0-1086.95~20.04.1)
  • linux-gcp-5.19
  • linux-gcp-5.3
  • linux-gcp-5.4 (fixed in 5.4.0-1151.160~18.04.1)
  • linux-gcp-5.8
  • linux-gcp-6.2
  • linux-gcp-6.5
  • linux-gcp-6.8 (fixed in 6.8.0-1019.21~22.04.1)
  • linux-gcp-fips (fixed in 5.15.0-1086.95+fips1)
  • linux-gke (fixed in 6.8.0-1015.19)
  • linux-gke-4.15
  • linux-gke-5.15
  • linux-gke-5.4
  • linux-gkeop (fixed in 6.8.0-1002.4)
  • linux-gkeop-5.15
  • linux-gkeop-5.4
  • linux-hwe
  • linux-hwe-5.11
  • linux-hwe-5.13
  • linux-hwe-5.15 (fixed in 5.15.0-143.153~20.04.1)
  • linux-hwe-5.19
  • linux-hwe-5.4 (fixed in 5.4.0-219.239~18.04.1)
  • linux-hwe-5.8
  • linux-hwe-6.2
  • linux-hwe-6.5
  • linux-hwe-6.8 (fixed in 6.8.0-50.51~22.04.1)
  • linux-hwe-edge
  • linux-ibm (fixed in 6.8.0-1017.17)
  • linux-ibm-5.15 (fixed in 5.15.0-1079.82~20.04.1)
  • linux-ibm-5.4 (fixed in 5.4.0-1094.99~18.04.1)
  • linux-ibm-6.8 (fixed in 6.8.0-1017.17~22.04.1)
  • linux-intel-5.13
  • linux-intel-iot-realtime (fixed in 5.15.0-1080.82)
  • linux-intel-iotg (fixed in 5.15.0-1082.88)
  • linux-intel-iotg-5.15 (fixed in 5.15.0-1083.89~20.04.1)
  • linux-iot (fixed in 5.4.0-1052.55)
  • linux-kvm (fixed in 5.15.0-1083.88)
  • linux-lowlatency (fixed in 6.8.0-50.51.1)
  • linux-lowlatency-hwe-5.15 (fixed in 5.15.0-143.153~20.04.1)
  • linux-lowlatency-hwe-5.19
  • linux-lowlatency-hwe-6.2
  • linux-lowlatency-hwe-6.5
  • linux-lowlatency-hwe-6.8 (fixed in 6.8.0-50.51.1~22.04.1)
  • linux-lts-xenial (fixed in 4.4.0-270.304~14.04.1)
  • linux-nvidia (fixed in 6.8.0-1019.21)
  • linux-nvidia-6.2
  • linux-nvidia-6.5
  • linux-nvidia-6.8 (fixed in 6.8.0-1019.21~22.04.1)
  • linux-nvidia-lowlatency (fixed in 6.8.0-1019.21.1)
  • linux-nvidia-tegra (fixed in 5.15.0-1040.40)
  • linux-nvidia-tegra-5.15 (fixed in 5.15.0-1040.40~20.04.1)
  • linux-nvidia-tegra-igx (fixed in 5.15.0-1029.29)
  • linux-oem
  • linux-oem-5.10
  • linux-oem-5.13
  • linux-oem-5.14
  • linux-oem-5.17
  • linux-oem-5.6
  • linux-oem-6.0
  • linux-oem-6.1
  • linux-oem-6.5
  • linux-oem-6.8 (fixed in 6.8.0-1018.18)
  • linux-oracle (fixed in 6.8.0-1017.18)
  • linux-oracle-5.0
  • linux-oracle-5.11
  • linux-oracle-5.13
  • linux-oracle-5.15 (fixed in 5.15.0-1084.90~20.04.1)
  • linux-oracle-5.3
  • linux-oracle-5.4 (fixed in 5.4.0-1146.156~18.04.1)
  • linux-oracle-5.8
  • linux-oracle-6.5
  • linux-oracle-6.8 (fixed in 6.8.0-1017.18~22.04.1)
  • linux-raspi (fixed in 6.8.0-1016.18)
  • linux-raspi-5.4 (fixed in 5.4.0-1131.144~18.04.1)
  • linux-raspi-realtime (fixed in 6.8.0-2015.16)
  • linux-raspi2
  • linux-realtime (fixed in 6.8.1-1013.14)
  • linux-realtime-6.8 (fixed in 6.8.1-1013.14~22.04.1)
  • linux-riscv (fixed in 6.8.0-50.51.1)
  • linux-riscv-5.11
  • linux-riscv-5.15 (fixed in 5.15.0-1082.86~20.04.1)
  • linux-riscv-5.19
  • linux-riscv-5.8
  • linux-riscv-6.5
  • linux-riscv-6.8 (fixed in 6.8.0-50.51.1~22.04.1)
  • linux-starfive-5.19
  • linux-starfive-6.2
  • linux-starfive-6.5
  • linux-xilinx (fixed in 6.8.0-1017.18)
  • linux-xilinx-zynqmp (fixed in 5.15.0-1051.55)

Timeline and source

Published on 18 September 2024 and last revised on 17 August 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.

References

ubuntu.com (Report)
www.cve.org (Report)
git.kernel.org (Report)
git.kernel.org (Report)
git.kernel.org (Report)
git.kernel.org (Report)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)
ubuntu.com (Advisory)

Other advisories for this package

linux has other advisories on record. If you are patching this one, these are worth checking on the same host:

Details

Severity Unknown
CVSS Score N/A
CVSS Vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE N/A
Public Exploit ✅ No
Source OSV
Published 2024-09-18
Updated 2026-08-20
Modified 2026-08-17
Fix URL N/A

Affected Packages

Software From version Fixed in
linux — 6.8.0-50.51
linux-allwinner-5.19 — —
linux-aws — 6.8.0-1020.22
linux-aws-5.0 — —
linux-aws-5.11 — —
linux-aws-5.13 — —
linux-aws-5.15 — 5.15.0-1087.94~20.04.1
linux-aws-5.19 — —
linux-aws-5.3 — —
linux-aws-5.4 — 5.4.0-1148.158~18.04.1
linux-aws-5.8 — —
linux-aws-6.2 — —
linux-aws-6.5 — —
linux-aws-6.8 — 6.8.0-1020.22~22.04.1
linux-aws-fips — 5.15.0-1087.94+fips1
linux-aws-hwe — 4.15.0-1182.195~16.04.1
linux-azure — 6.8.0-1020.23
linux-azure-4.15 — 4.15.0-1190.205
linux-azure-5.11 — —
linux-azure-5.13 — —
linux-azure-5.15 — 5.15.0-1094.103~20.04.1
linux-azure-5.19 — —
linux-azure-5.3 — —
linux-azure-5.4 — 5.4.0-1153.160~18.04.1
linux-azure-5.8 — —
linux-azure-6.2 — —
linux-azure-6.5 — —
linux-azure-6.8 — 6.8.0-1020.23~22.04.1
linux-azure-edge — —
linux-azure-fde — —
linux-azure-fde-5.19 — —
linux-azure-fde-6.2 — —
linux-azure-fips — 5.15.0-1094.103+fips1
linux-bluefield — —
linux-fips — 6.8.0-78.78+fips1
linux-gcp — 6.8.0-1019.21
linux-gcp-4.15 — 4.15.0-1175.192
linux-gcp-5.11 — —
linux-gcp-5.13 — —
linux-gcp-5.15 — 5.15.0-1086.95~20.04.1
linux-gcp-5.19 — —
linux-gcp-5.3 — —
linux-gcp-5.4 — 5.4.0-1151.160~18.04.1
linux-gcp-5.8 — —
linux-gcp-6.2 — —
linux-gcp-6.5 — —
linux-gcp-6.8 — 6.8.0-1019.21~22.04.1
linux-gcp-fips — 5.15.0-1086.95+fips1
linux-gke — 6.8.0-1015.19
linux-gke-4.15 — —
linux-gke-5.15 — —
linux-gke-5.4 — —
linux-gkeop — 6.8.0-1002.4
linux-gkeop-5.15 — —
linux-gkeop-5.4 — —
linux-hwe — —
linux-hwe-5.11 — —
linux-hwe-5.13 — —
linux-hwe-5.15 — 5.15.0-143.153~20.04.1
linux-hwe-5.19 — —
linux-hwe-5.4 — 5.4.0-219.239~18.04.1
linux-hwe-5.8 — —
linux-hwe-6.2 — —
linux-hwe-6.5 — —
linux-hwe-6.8 — 6.8.0-50.51~22.04.1
linux-hwe-edge — —
linux-ibm — 6.8.0-1017.17
linux-ibm-5.15 — 5.15.0-1079.82~20.04.1
linux-ibm-5.4 — 5.4.0-1094.99~18.04.1
linux-ibm-6.8 — 6.8.0-1017.17~22.04.1
linux-intel-5.13 — —
linux-intel-iot-realtime — 5.15.0-1080.82
linux-intel-iotg — 5.15.0-1082.88
linux-intel-iotg-5.15 — 5.15.0-1083.89~20.04.1
linux-iot — 5.4.0-1052.55
linux-kvm — 5.15.0-1083.88
linux-lowlatency — 6.8.0-50.51.1
linux-lowlatency-hwe-5.15 — 5.15.0-143.153~20.04.1
linux-lowlatency-hwe-5.19 — —
linux-lowlatency-hwe-6.2 — —
linux-lowlatency-hwe-6.5 — —
linux-lowlatency-hwe-6.8 — 6.8.0-50.51.1~22.04.1
linux-lts-xenial — 4.4.0-270.304~14.04.1
linux-nvidia — 6.8.0-1019.21
linux-nvidia-6.2 — —
linux-nvidia-6.5 — —
linux-nvidia-6.8 — 6.8.0-1019.21~22.04.1
linux-nvidia-lowlatency — 6.8.0-1019.21.1
linux-nvidia-tegra — 5.15.0-1040.40
linux-nvidia-tegra-5.15 — 5.15.0-1040.40~20.04.1
linux-nvidia-tegra-igx — 5.15.0-1029.29
linux-oem — —
linux-oem-5.10 — —
linux-oem-5.13 — —
linux-oem-5.14 — —
linux-oem-5.17 — —
linux-oem-5.6 — —
linux-oem-6.0 — —
linux-oem-6.1 — —
linux-oem-6.5 — —
linux-oem-6.8 — 6.8.0-1018.18
linux-oracle — 6.8.0-1017.18
linux-oracle-5.0 — —
linux-oracle-5.11 — —
linux-oracle-5.13 — —
linux-oracle-5.15 — 5.15.0-1084.90~20.04.1
linux-oracle-5.3 — —
linux-oracle-5.4 — 5.4.0-1146.156~18.04.1
linux-oracle-5.8 — —
linux-oracle-6.5 — —
linux-oracle-6.8 — 6.8.0-1017.18~22.04.1
linux-raspi — 6.8.0-1016.18
linux-raspi-5.4 — 5.4.0-1131.144~18.04.1
linux-raspi-realtime — 6.8.0-2015.16
linux-raspi2 — —
linux-realtime — 6.8.1-1013.14
linux-realtime-6.8 — 6.8.1-1013.14~22.04.1
linux-riscv — 6.8.0-50.51.1
linux-riscv-5.11 — —
linux-riscv-5.15 — 5.15.0-1082.86~20.04.1
linux-riscv-5.19 — —
linux-riscv-5.8 — —
linux-riscv-6.5 — —
linux-riscv-6.8 — 6.8.0-50.51.1~22.04.1
linux-starfive-5.19 — —
linux-starfive-6.2 — —
linux-starfive-6.5 — —
linux-xilinx — 6.8.0-1017.18
linux-xilinx-zynqmp — 5.15.0-1051.55

References

Similar Threats

Site Security Check

Is linux part of your stack?

UBUNTU-CVE-2024-46787 is rated CVSS 7.8 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesUbuntuUbuntu 2024
✓