| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-38610: drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map() |
| |
| Patch series "mm: follow_pte() improvements and acrn follow_pte() fixes". |
| |
| Patch #1 fixes a bunch of issues I spotted in the acrn driver. It |
| compiles, that's all I know. I'll appreciate some review and testing from |
| acrn folks. |
| |
| Patch #2+#3 improve follow_pte(), passing a VMA instead of the MM, adding |
| more sanity checks, and improving the documentation. Gave it a quick test |
| on x86-64 using VM_PAT that ends up using follow_pte(). |
| |
| |
| This patch (of 3): |
| |
| We currently miss handling various cases, resulting in a dangerous |
| follow_pte() (previously follow_pfn()) usage. |
| |
| (1) We're not checking PTE write permissions. |
| |
| Maybe we should simply always require pte_write() like we do for |
| pin_user_pages_fast(FOLL_WRITE)? Hard to tell, so let's check for |
| ACRN_MEM_ACCESS_WRITE for now. |
| |
| (2) We're not rejecting refcounted pages. |
| |
| As we are not using MMU notifiers, messing with refcounted pages is |
| dangerous and can result in use-after-free. Let's make sure to reject them. |
| |
| (3) We are only looking at the first PTE of a bigger range. |
| |
| We only lookup a single PTE, but memmap->len may span a larger area. |
| Let's loop over all involved PTEs and make sure the PFN range is |
| actually contiguous. Reject everything else: it couldn't have worked |
| either way, and rather made use access PFNs we shouldn't be accessing. |
| |
| The Linux kernel CVE team has assigned CVE-2024-38610 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 5.15.33 with commit b9c43aa0b18da5619aac347d54cb67fe30d1f884 and fixed in 5.15.161 with commit 5c6705aa47b5b78d7ad36fea832bb69caa5bf49a |
| Issue introduced in 5.18 with commit 8a6e85f75a83d16a71077e41f2720c691f432002 and fixed in 6.1.93 with commit afeb0e69627695f759fc73c39c1640dbf8649b32 |
| Issue introduced in 5.18 with commit 8a6e85f75a83d16a71077e41f2720c691f432002 and fixed in 6.6.33 with commit e873f36ec890bece26ecce850e969917bceebbb6 |
| Issue introduced in 5.18 with commit 8a6e85f75a83d16a71077e41f2720c691f432002 and fixed in 6.8.12 with commit 4c4ba3cf3a15ccfbaf787d0296fa42cdb00da9b4 |
| Issue introduced in 5.18 with commit 8a6e85f75a83d16a71077e41f2720c691f432002 and fixed in 6.9.3 with commit 2c8d6e24930b8ef7d4a81787627c559ae0e0d3bb |
| Issue introduced in 5.18 with commit 8a6e85f75a83d16a71077e41f2720c691f432002 and fixed in 6.10 with commit 3d6586008f7b638f91f3332602592caa8b00b559 |
| Issue introduced in 5.16.19 with commit 149d5fb7e0124c3763e92edd1fde19417f4d2d09 |
| Issue introduced in 5.17.2 with commit 02098ac42b7ff055ec72cd083ee1eb0a23481a19 |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2024-38610 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/virt/acrn/mm.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/5c6705aa47b5b78d7ad36fea832bb69caa5bf49a |
| https://git.kernel.org/stable/c/afeb0e69627695f759fc73c39c1640dbf8649b32 |
| https://git.kernel.org/stable/c/e873f36ec890bece26ecce850e969917bceebbb6 |
| https://git.kernel.org/stable/c/4c4ba3cf3a15ccfbaf787d0296fa42cdb00da9b4 |
| https://git.kernel.org/stable/c/2c8d6e24930b8ef7d4a81787627c559ae0e0d3bb |
| https://git.kernel.org/stable/c/3d6586008f7b638f91f3332602592caa8b00b559 |