CVE-2026-64359 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 25.

리눅스 커널에서 다음 취약점이 해결되었습니다:

nilfs2: 범위 밖 세그먼트 번호가 포함된 CLEAN_SEGMENTS ioctl 요청 거부

Syzbot는 nilfs_transaction_begin()에서 여러 작업이 nilfs2 마운트 지점에서의 chmod() 수행 중 ns_segctor_sem 읽기 잠금을 획득하기 위해 143초 이상 대기하며 차단되는hung task를 보고했습니다:

INFO: 작업 syz.0.17:5918이 143초 이상 차단되었습니다. 호출 추적(Call Trace): schedule+0x164/0x360 rwsem_down_read_slowpath+0x6d9/0x940 down_read+0x99/0x2e0 nilfs_transaction_begin+0x364/0x710 fs/nilfs2/segment.c:221 nilfs_setattr+0x124/0x2c0 fs/nilfs2/inode.c:921 notify_change+0xc1a/0xf40 chmod_common+0x273/0x4a0 do_fchmodat+0x12d/0x230

ns_segctor_sem을 보유하고 있던 작성자는 동시에 호출된 NILFS_IOCTL_CLEAN_SEGMENTS 사용자로, nilfs_sufile_updatev()에서 요소별 경고 메시지를 출력하는 동안 printk 내부에 멈춰 있었습니다:

__nilfs_msg+0x373/0x450 fs/nilfs2/super.c:78 nilfs_sufile_updatev+0x21c/0x6d0 fs/nilfs2/sufile.c:186 nilfs_sufile_freev fs/nilfs2/sufile.h:93 [인라인]
nilfs_free_segments fs/nilfs2/segment.c:1140 [인라인]
nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1261 [인라인]
nilfs_segctor_do_construct+0x1f55/0x76c0 nilfs_clean_segments+0x3bd/0xa50 nilfs_ioctl_clean_segments fs/nilfs2/ioctl.c:922 [인라인]
nilfs_ioctl+0x261f/0x2780

근본 원인은 nilfs_clean_segments()가 작업을 시작하기 전에 사용자 제공 세그먼트 번호에 대한 유효성 검사가 수행되지 않았기 때문입니다. 각 segnum에 대한 범위 체크는 호출 체인 내부 깊숙이 있는 nilfs_sufile_updatev()에서 수행되며, 이는 잘못된 항목마다 nilfs_warn()를 출력하면서 여전히 segctor 잠금과 sufile mi_sem을 보유하고 있습니다. 부하 상황(여러 마운트 간 반복적인 호출로 전역 printk 경로를 포화시킴)에서는 누적된 printk 지연으로 인해 ns_segctor_sem이 충분히 긴 시간 동안 보유되어 hung_task 감시자가 트리거되고, 읽기 목적으로 ns_segctor_sem이 필요한 chmod()와 같은 동시 작업들이 차단됩니다.

해결책은 nilfs_transaction_lock()을 통해 ns_segctor_sem을 획득한 직후 nilfs_clean_segments()에서 kbufs[4]의 내용을 검증하는 것입니다. ns_nsegments를 수정할 수 있는 nilfs_ioctl_resize()에 대한 검사를 위해 ns_segctor_sem을 보유함으로써 일관된 값을 사용합니다. 범위 밖 세그먼트 번호는 어떤 세그먼트 정리 작업이 시작되기 전에 -EINVAL와 함께 거부되므로, 잘못된 항목은 nilfs_sufile_updatev() 내부의 요소별 진단 경로로 도달하지 않습니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383152

EPSS

0.00177

활동

낮음

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!