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

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-89987— Linux 2.6.x 内核 folio 脏位状态错误

一分钟漏洞结论

影响对象
Linux Linux
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

在 Linux 内核中,以下漏洞已得到修复: mm/huge_memory:在 zap 操作中将 PMD 脏位(dirty bit)转移到 folio 在文件映射的情况下会将 PMD 的年轻位(young bit)传播到 folio,但没有传播脏位。而在 PTE 路径中, 会传播脏位;在 PMD 拆分路径中, 也会传播脏位。 对于大多数文件映射而言,遗漏传播脏位通常是无害的,因为对共享文件映射的写入会经过 ,从而将 folio 标记为脏。但 tmpfs 有所不同:它没有 函数,且 对其返回 false,因此对 MA

AI 预测 5.5 利用难度: 困难 EPSS 0.21% · P10

可能的 ATT&CK 技术 1 AI

T1130

影响版本矩阵 8

厂商产品 版本范围状态
Linux Linux b5072380eb619786990cd9eab3ade05d09ccd89e< effe3cc6d4fdd407457eb30f7b0ef094393f0d64 affected
b5072380eb619786990cd9eab3ade05d09ccd89e< 9435cddf1378d149d826bd7bd1448a44bf96868d affected
b5072380eb619786990cd9eab3ade05d09ccd89e< fe6cf984939d8e12cb33a99673c8d026c5135e68 affected
4.8 affected
< 4.8 unaffected
6.18.52≤ 6.18.* unaffected
7.2.5≤ 7.2.* unaffected
7.3-rc2≤ * unaffected
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-89987 基础信息

漏洞信息

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

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

Vulnerability Title
mm/huge_memory: transfer the pmd dirty bit to the folio on zap
来源: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: transfer the pmd dirty bit to the folio on zap zap_huge_pmd_folio() propagates the pmd young bit to the folio for the file case, but not the dirty bit. The pte path does propagate it, in zap_present_folio_ptes() and so does the pmd split path, in __split_huge_pmd_locked(). For most file mappings the omission is harmless, because writing to a shared file mapping goes through page_mkwrite(), which dirties the folio. tmpfs is different: it has no page_mkwrite(), and vma_wants_writenotify() is false for it, so a *read* fault on a MAP_SHARED tmpfs mapping installs a writable pmd via do_read_fault(). do_read_fault() does not call fault_dirty_shared_page(), so subsequent stores through that mapping set only the hardware dirty bit in the pmd and never call folio_mark_dirty(). A shmem folio allocated by a fault is marked uptodate but not dirty (see the clear: block in shmem_get_folio_gfp()), so PG_dirty is never set at all. Unmapping such a folio - munmap(), or exit_mmap() when the process dies - then loses the only record that it was written, because zap_huge_pmd() drops the pmd without transferring the dirty bit. Reclaim afterwards sees a clean shmem folio: the whole swap-out block in shrink_folio_list() is inside "if (folio_test_dirty(folio))", so pageout() is skipped and the folio falls into __remove_mapping(). There, folio_is_file_lru() is false for a swapbacked folio, so no shadow entry is created and __filemap_remove_folio(folio, NULL) simply empties the i_pages slot. The data is freed without ever being written to swap, and the next fault on that index returns a freshly zeroed folio. This is silent data loss for any process that keeps state in a MAP_SHARED tmpfs segment across an unmap - for example a cache handed from one process generation to the next through /dev/shm. It requires the folio to be PMD-mapped, so it only shows up once shmem THP is enabled (which is what we did in Meta fleet and started noticing crashes); with THP off the pte path transfers the dirty bit correctly. It also only becomes visible when swap is enabled, because with no swap device shmem folios (which are on the anon LRU) are not scanned by reclaim at all, so the clean folio is never dropped. Reproduced on x86_64 with a tmpfs mounted huge=within_size: read-fault a 2MB-backed region, write a known pattern through the resulting mapping, munmap, force reclaim of the cgroup, then re-map and read back. Without this patch the region reads back as zeros and vmstat shows zswpout 0 - the data was discarded rather than swapped. With this patch the region reads back correctly and the pages are swapped out as expected. With huge=never, or when the first touch is a write, the test passes either way.
来源: CVE Program / CVE List V5
CVSS Information
N/A
来源: CVE Program / CVE List V5
Vulnerability Type
N/A
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
Linux Linux b5072380eb619786990cd9eab3ade05d09ccd89e ~ effe3cc6d4fdd407457eb30f7b0ef094393f0d64 -
Linux Linux 4.8 -

二、漏洞 CVE-2026-89987 的公开POC

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

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-89987 的情报信息

请登录查看更多情报信息。

CVE-2026-89987 其他参考 (3)

同批安全公告 · Linux · 2026-09-16 · 共 276 条

CVE-2026-90048 9.8 CRITICAL Linux内核NTFS3文件系统越界写漏洞
CVE-2026-90012 9.8 CRITICAL SPI DMA映射所有权修复
CVE-2026-89970 9.8 CRITICAL NVM Target SQ拆除时超时工作未同步
CVE-2026-89857 9.8 CRITICAL QLogic qla2xxx NVMe LS拒绝竞态条件漏洞
CVE-2026-89969 9.8 CRITICAL Linux内核 nvmet-tcp 越界写入漏洞
CVE-2026-89847 9.8 CRITICAL qla2xxx SCSI驱动异步IOCB超时双重完成漏洞
CVE-2026-89972 9.8 CRITICAL NVMe驱动错误路径SRCU宽限期缺失漏洞
CVE-2026-89990 9.8 CRITICAL Ceph ceph_mds_check_access 互斥锁缺失漏洞
CVE-2026-90036 9.8 CRITICAL Linux NFSd 阻塞锁收割时释放后使用漏洞
CVE-2026-90038 9.8 CRITICAL Linux内核NFSD导出撤销后使用漏洞
CVE-2026-90037 9.8 CRITICAL Linux内核NFSD close_lru释放后使用漏洞
CVE-2026-89788 9.8 CRITICAL Linux kernel ksmbd 释放后使用漏洞
CVE-2026-89783 9.8 CRITICAL Linux内核 xfrm6 越界写入漏洞
CVE-2026-90042 9.8 CRITICAL Ceph 虚拟内存分配缓冲区文件名解密漏洞
CVE-2026-89778 9.8 CRITICAL isofs 空 zisofs 块页面数组越界访问漏洞
CVE-2026-89915 9.3 CRITICAL KVM arm64 移除虚拟机级 VNCR 映射计数器
CVE-2026-90049 9.3 CRITICAL 内核网络子系统中skb_zerocopy处理中的缺陷
CVE-2026-89775 9.3 CRITICAL KVM arm64 VNCR TLB大小计算漏洞
CVE-2026-89916 9.3 CRITICAL KVM arm64 VNCR失效重试漏洞
CVE-2026-89930 9.3 CRITICAL KVM嵌套虚拟化本地TLB刷新漏洞

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

IV. Related Vulnerabilities

V. Comments for CVE-2026-89987

暂无评论


发表评论