LinuxのLinux Kernelにおける有効期限後のメモリの解放の欠如に関する脆弱性
タイトル LinuxのLinux Kernelにおける有効期限後のメモリの解放の欠如に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。mm/vma: __mmap_region()のメモリリークを修正しました。commit 605f6586ecf7("mm/vma: .mmap_prepareがファイルをスワップする際にメモリをリークしないようにする")では、成功パスでfile_doesnt_need_getを使ってget_file()をスキップしていましたが、エラーパスの処理が漏れていました。/dev/zeroがMAP_SHAREDでmmapされると、mmap_zero_prepare()はshmem_zero_setup_desc()を呼び出し、マッピングを支えるための新しいshmemファイルを割り当てます。もし__mmap_new_vma()がその後失敗すると、この置き換えられたファイルはfput()されず、元のファイルはksys_mmap_pgoff()で解放されますが、新しいファイルは解放されません。エラーパスでスワップされたファイルに対しfput()を追加しました。この問題はフォールトインジェクションで再現可能です。FAULT_INJECTIONでは、失敗を強制しています。name failslab, interval 1, probability 0, space 0, times 1。CPU: 2 UID: 0 PID: 366 Comm: syz.7.14 Not tainted 7.0.0-rc6 #2 PREEMPT(full)。ハードウェア名はQEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996)、BIOSは1.16.3-debian-1.16.3-2 2014/04/01です。Call Trace: TASK dump_stack_lvl+0x164/0x1f0, should_fail_ex+0x525/0x650, should_failslab+0xdf/0x140, kmem_cache_alloc_noprof+0x78/0x630, vm_area_alloc+0x24/0x160, __mmap_region+0xf6b/0x2660, mmap_region+0x2eb/0x3a0, do_mmap+0xc79/0x1240, vm_mmap_pgoff+0x252/0x4c0, ksys_mmap_pgoff+0xf8/0x120, __x64_sys_mmap+0x12a/0x190, do_syscall_64+0xa9/0x580, entry_SYSCALL_64_after_hwframe+0x76/0x7e /TASK。kmemleakでは新たに1件の疑わしいメモリリークを検出しました(/sys/kernel/debug/kmemleakを参照してください)。BUGはメモリリークで、未参照オブジェクト0xffff8881118aca80(サイズ360)はcomm "syz.7.14"、pid 366、jiffies 4294913255が関係しています。16進ダンプ(最初の32バイト)は次の通りです: 00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00 .....N.......... ff ff ff ff ff ff ff ff c0 28 4d ae ff ff ff ff .........(M.....。バックトレース(crc db0f53bc)はkmem_cache_alloc_noprof+0x3ab/0x630, alloc_empty_file+0x5a/0x1e0, alloc_file_pseudo+0x135/0x220, __shmem_file_setup+0x274/0x420, shmem_zero_setup_desc+0x9c/0x170, mmap_zero_prepare+0x123/0x140, __mmap_region+0xdda/0x2660, mmap_region+0x2eb/0x3a0, do_mmap+0xc79/0x1240, vm_mmap_pgoff+0x252/0x4c0, ksys_mmap_pgoff+0xf8/0x120, __x64_sys_mmap+0x12a/0x190, do_syscall_64+0xa9/0x580, entry_SYSCALL_64_after_hwframe+0x76/0x7eです。syzkallerによってこの脆弱性が発見されました。

想定される影響 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

公表日 2026年4月24日0:00
登録日 2026年4月30日12:32
最終更新日 2026年4月30日12:32
CVSS3.0 : 警告
スコア 5.5
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
影響を受けるシステム
Linux
Linux Kernel 6.19
Linux Kernel 6.19.1 以上 6.19.13 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年04月30日]
  掲載
2026年4月30日12:32

NVD脆弱性情報
CVE-2026-31654
概要

In the Linux kernel, the following vulnerability has been resolved:

mm/vma: fix memory leak in __mmap_region()

commit 605f6586ecf7 ("mm/vma: do not leak memory when .mmap_prepare
swaps the file") handled the success path by skipping get_file() via
file_doesnt_need_get, but missed the error path.

When /dev/zero is mmap'd with MAP_SHARED, mmap_zero_prepare() calls
shmem_zero_setup_desc() which allocates a new shmem file to back the
mapping. If __mmap_new_vma() subsequently fails, this replacement
file is never fput()'d - the original is released by
ksys_mmap_pgoff(), but nobody releases the new one.

Add fput() for the swapped file in the error path.

Reproducible with fault injection.

FAULT_INJECTION: forcing a failure.
name failslab, interval 1, probability 0, space 0, times 1
CPU: 2 UID: 0 PID: 366 Comm: syz.7.14 Not tainted 7.0.0-rc6 #2 PREEMPT(full)
Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
Call Trace:
<TASK>
dump_stack_lvl+0x164/0x1f0
should_fail_ex+0x525/0x650
should_failslab+0xdf/0x140
kmem_cache_alloc_noprof+0x78/0x630
vm_area_alloc+0x24/0x160
__mmap_region+0xf6b/0x2660
mmap_region+0x2eb/0x3a0
do_mmap+0xc79/0x1240
vm_mmap_pgoff+0x252/0x4c0
ksys_mmap_pgoff+0xf8/0x120
__x64_sys_mmap+0x12a/0x190
do_syscall_64+0xa9/0x580
entry_SYSCALL_64_after_hwframe+0x76/0x7e
</TASK>

kmemleak: 1 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
BUG: memory leak
unreferenced object 0xffff8881118aca80 (size 360):
comm "syz.7.14", pid 366, jiffies 4294913255
hex dump (first 32 bytes):
00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00 .....N..........
ff ff ff ff ff ff ff ff c0 28 4d ae ff ff ff ff .........(M.....
backtrace (crc db0f53bc):
kmem_cache_alloc_noprof+0x3ab/0x630
alloc_empty_file+0x5a/0x1e0
alloc_file_pseudo+0x135/0x220
__shmem_file_setup+0x274/0x420
shmem_zero_setup_desc+0x9c/0x170
mmap_zero_prepare+0x123/0x140
__mmap_region+0xdda/0x2660
mmap_region+0x2eb/0x3a0
do_mmap+0xc79/0x1240
vm_mmap_pgoff+0x252/0x4c0
ksys_mmap_pgoff+0xf8/0x120
__x64_sys_mmap+0x12a/0x190
do_syscall_64+0xa9/0x580
entry_SYSCALL_64_after_hwframe+0x76/0x7e

Found by syzkaller.

公表日 2026年4月25日0:16
登録日 2026年4月25日4:08
最終更新日 2026年4月28日5:16
影響を受けるソフトウェアの構成
構成1 以上 以下 より上 未満
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19.1 6.19.13
cpe:2.3:o:linux:linux_kernel:6.19:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*
関連情報、対策とツール
共通脆弱性一覧