目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1336

100%

CVE-2023-52934— Linux kernel 安全漏洞

AI 预测 5.5 利用难度: 中等 EPSS 0.11% · P1

影响版本矩阵 6

厂商产品版本范围状态
LinuxLinux34488399fa08faaf664743fa54b271eb6f9e1321< 96aaaf8666010a39430cecf8a65c7ce2908a030faffected
34488399fa08faaf664743fa54b271eb6f9e1321< edb5d0cf5525357652aff6eacd9850b8ced07143affected
6.1affected
< 6.1unaffected
6.1.11≤ 6.1.*unaffected
6.2≤ *unaffected
获取后续新漏洞提醒登录后订阅

一、 漏洞 CVE-2023-52934 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
mm/MADV_COLLAPSE: catch !none !huge !bad pmd lookups
来源: 美国国家漏洞数据库 NVD
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: mm/MADV_COLLAPSE: catch !none !huge !bad pmd lookups In commit 34488399fa08 ("mm/madvise: add file and shmem support to MADV_COLLAPSE") we make the following change to find_pmd_or_thp_or_none(): - if (!pmd_present(pmde)) - return SCAN_PMD_NULL; + if (pmd_none(pmde)) + return SCAN_PMD_NONE; This was for-use by MADV_COLLAPSE file/shmem codepaths, where MADV_COLLAPSE might identify a pte-mapped hugepage, only to have khugepaged race-in, free the pte table, and clear the pmd. Such codepaths include: A) If we find a suitably-aligned compound page of order HPAGE_PMD_ORDER already in the pagecache. B) In retract_page_tables(), if we fail to grab mmap_lock for the target mm/address. In these cases, collapse_pte_mapped_thp() really does expect a none (not just !present) pmd, and we want to suitably identify that case separate from the case where no pmd is found, or it's a bad-pmd (of course, many things could happen once we drop mmap_lock, and the pmd could plausibly undergo multiple transitions due to intervening fault, split, etc). Regardless, the code is prepared install a huge-pmd only when the existing pmd entry is either a genuine pte-table-mapping-pmd, or the none-pmd. However, the commit introduces a logical hole; namely, that we've allowed !none- && !huge- && !bad-pmds to be classified as genuine pte-table-mapping-pmds. One such example that could leak through are swap entries. The pmd values aren't checked again before use in pte_offset_map_lock(), which is expecting nothing less than a genuine pte-table-mapping-pmd. We want to put back the !pmd_present() check (below the pmd_none() check), but need to be careful to deal with subtleties in pmd transitions and treatments by various arch. The issue is that __split_huge_pmd_locked() temporarily clears the present bit (or otherwise marks the entry as invalid), but pmd_present() and pmd_trans_huge() still need to return true while the pmd is in this transitory state. For example, x86's pmd_present() also checks the _PAGE_PSE , riscv's version also checks the _PAGE_LEAF bit, and arm64 also checks a PMD_PRESENT_INVALID bit. Covering all 4 cases for x86 (all checks done on the same pmd value): 1) pmd_present() && pmd_trans_huge() All we actually know here is that the PSE bit is set. Either: a) We aren't racing with __split_huge_page(), and PRESENT or PROTNONE is set. => huge-pmd b) We are currently racing with __split_huge_page(). The danger here is that we proceed as-if we have a huge-pmd, but really we are looking at a pte-mapping-pmd. So, what is the risk of this danger? The only relevant path is: madvise_collapse() -> collapse_pte_mapped_thp() Where we might just incorrectly report back "success", when really the memory isn't pmd-backed. This is fine, since split could happen immediately after (actually) successful madvise_collapse(). So, it should be safe to just assume huge-pmd here. 2) pmd_present() && !pmd_trans_huge() Either: a) PSE not set and either PRESENT or PROTNONE is. => pte-table-mapping pmd (or PROT_NONE) b) devmap. This routine can be called immediately after unlocking/locking mmap_lock -- or called with no locks held (see khugepaged_scan_mm_slot()), so previous VMA checks have since been invalidated. 3) !pmd_present() && pmd_trans_huge() Not possible. 4) !pmd_present() && !pmd_trans_huge() Neither PRESENT nor PROTNONE set => not present I've checked all archs that implement pmd_trans_huge() (arm64, riscv, powerpc, longarch, x86, mips, s390) and this logic roughly translates (though devmap treatment is unique to x86 and powerpc, and (3) doesn't necessarily hold in general -- but that doesn't matter since !pmd_present() always takes failure path). Also, add a comment above find_pmd_or_thp_or_none() ---truncated---
来源: 美国国家漏洞数据库 NVD
CVSS Information
N/A
来源: 美国国家漏洞数据库 NVD
Vulnerability Type
N/A
来源: 美国国家漏洞数据库 NVD
Vulnerability Title
Linux kernel 安全漏洞
来源: 中国国家信息安全漏洞库 CNNVD
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于mm/MADV_COLLAPSE组件在查找pmd时未正确处理非none非huge非bad情况。
来源: 中国国家信息安全漏洞库 CNNVD
CVSS Information
N/A
来源: 中国国家信息安全漏洞库 CNNVD
Vulnerability Type
N/A
来源: 中国国家信息安全漏洞库 CNNVD

受影响产品

厂商产品影响版本CPE订阅
LinuxLinux 34488399fa08faaf664743fa54b271eb6f9e1321 ~ 96aaaf8666010a39430cecf8a65c7ce2908a030f -
LinuxLinux 6.1 -

二、漏洞 CVE-2023-52934 的公开POC

#POC 描述源链接神龙链接
AI 生成 POC高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2023-52934 的情报信息

登录查看更多情报信息。

CVE-2023-52934 补丁与修复 (1)

同批安全公告 · Linux · 2025-03-27 · 共 124 条

CVE-2023-52982Linux kernel 安全漏洞
CVE-2023-52998Linux kernel 安全漏洞
CVE-2023-52999Linux kernel 安全漏洞
CVE-2023-52997Linux kernel 安全漏洞
CVE-2023-52996Linux kernel 安全漏洞
CVE-2023-52995Linux kernel 安全漏洞
CVE-2023-52994Linux kernel 安全漏洞
CVE-2023-52993Linux kernel 安全漏洞
CVE-2023-52992Linux kernel 安全漏洞
CVE-2023-52991Linux kernel 安全漏洞
CVE-2023-52989Linux kernel 安全漏洞
CVE-2023-52988Linux kernel 安全漏洞
CVE-2023-52987Linux kernel 安全漏洞
CVE-2023-52986Linux kernel 安全漏洞
CVE-2023-52985Linux kernel 安全漏洞
CVE-2023-52984Linux kernel 安全漏洞
CVE-2023-52973Linux kernel 安全漏洞
CVE-2022-49761Linux kernel 安全漏洞
CVE-2022-49760Linux kernel 安全漏洞
CVE-2023-52974Linux kernel 安全漏洞

显示前 20 条,共 124 条。 查看全部 &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2023-52934

暂无评论


发表评论