LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性
タイトル LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:bpfのfork時に発生するarena_vm_closeにおけるuse-after-freeの問題です。arena_vm_open()はvml-mmap_countを増加させるだけで、子VMAをarena-vma_listに登録しません。vml-vmaは常に親VMAを指しているため、親がmunmapした後、そのポインタはダングリング状態になります。もし子がbpf_arena_free_pages()を呼ぶと、zap_pages()は古いvml-vmaを読み取り、use-after-freeを引き起こします。本問題は、VM_DONTCOPYを使用してarena VMAがfork時に継承されないようにし、may_splitコールバックによってVMAの分割も防止することで修正されました。また、.mremapコールバックが-EINVALを返すmremapも拒否します。full arena VMAに対する同サイズのmremap(MREMAP_FIXED)は次の経路でcopy_vma()に到達します。check_prep_vma()はnew_len == old_lenのときに早期に0を返し、VM_DONTEXPANDチェックをスキップします。prep_move_vma()ではvm_startがold_addrかつvm_endがold_addr + old_lenのため、may_splitは呼ばれません。move_vma()の中でcopy_vma_and_data()、copy_vma()、vm_area_dup()が実行され、vm_private_data(vmlポインタ)がコピーされ、vm_ops-open()でvml-mmap_countが増加します。vm_ops-mremap()は-EINVALを返し、ロールバックとして新しいVMAをアンマップします。リファレンスカウントにより、ロールバック時のarena_vm_closeは元のVMAと共有されているvmlを解放しません。

想定される影響 ・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 ・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 ・当該ソフトウェアが完全に停止する可能性があります。 
対策

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

公表日 2026年5月27日0:00
登録日 2026年6月29日11:17
最終更新日 2026年6月29日11:17
CVSS3.0 : 重要
スコア 7.8
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 6.13 以上 6.18.30 未満
Linux Kernel 6.19 以上 7.0.7 未満
Linux Kernel 6.9 以上 6.12.88 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年06月29日]
  掲載
2026年6月29日11:17

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

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

bpf: Fix use-after-free in arena_vm_close on fork

arena_vm_open() only bumps vml->mmap_count but never registers the
child VMA in arena->vma_list. The vml->vma always points at the
parent VMA, so after parent munmap the pointer dangles. If the child
then calls bpf_arena_free_pages(), zap_pages() reads the stale
vml->vma triggering use-after-free.

Fix this by preventing the arena VMA from being inherited across
fork with VM_DONTCOPY, and preventing VMA splits via the may_split
callback.

Also reject mremap with a .mremap callback returning -EINVAL. A
same-size mremap(MREMAP_FIXED) on the full arena VMA reaches
copy_vma() through the following path:

check_prep_vma() - returns 0 early: new_len == old_len
skips VM_DONTEXPAND check
prep_move_vma() - vm_start == old_addr and
vm_end == old_addr + old_len
so may_split is never called
move_vma()
copy_vma_and_data()
copy_vma()
vm_area_dup() - copies vm_private_data (vml pointer)
vm_ops->open() - bumps vml->mmap_count
vm_ops->mremap() - returns -EINVAL, rollback unmaps new VMA

The refcount ensures the rollback's arena_vm_close does not free
the vml shared with the original VMA.

公表日 2026年5月27日20:16
登録日 2026年5月28日4:10
最終更新日 2026年5月27日23:48
関連情報、対策とツール
共通脆弱性一覧