CVE-2026-31702 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 28.

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

f2fs: f2fs_compress_write_end_io()에서 sbi의 use-after-free 수정

f2fs_compress_write_end_io()에서 dec_page_count(sbi, type)는 F2FS_WB_CP_DATA 카운터를 0으로 만들어, 병렬 마운트 해제(unmount) CPU에서 f2fs_put_super() 내의 f2fs_wait_on_all_pages()의 블로킹을 해제할 수 있습니다. 마운트 해제 경로는 이후 f2fs_destroy_page_array_cache(sbi)를 호출하여 kmem_cache_destroy()를 통해 sbi->page_array_slab을 파괴하고, 결국 kfree(sbi)를 수행합니다.与此同时, bio 완료 콜백은 여전히 실행 중입니다: page_array_free(sbi, ...)에 도달하면 파괴된 슬랩 캐시를 참조하여 kmem_cache_free()를 호출하므로 use-after-free가 발생합니다.

이것은 CVE-2026-23234와 동일한 클래스의 버그입니다(CVE-2026-23234는 data.c의 f2fs_write_end_io()에서 동일한 경합 조건을 수정했습니다). 하지만 이번 문제는 해당 수정으로 커버되지 않은 압축된 쓰기백(writeback) 완료 경로에서 발생합니다.

이 버그를 수정하기 위해 dec_page_count()를 page_array_free() 이후로 이동시켜, 카운터 감소로 인해 마운트 해제가 해제되기 전에 모든 sbi 접근이 완료되도록 합니다. 마지막이 아닌 folio의 경우(여기서 cic->pending_pages에 대한 atomic_dec_return이 0이 아닌 경우), dec_page_count는 반환 직전에 호출됩니다. 이 경로에서는 page_array_free에 도달하지 않으므로, 감소 후 sbi 접근이 발생하지 않습니다. 마지막 folio의 경우, page_array_free는 F2FS_WB_CP_DATA 카운터가 아직 0이 아닌 상태(해당 folio가 아직 카운터를 감소시키지 않음)에서 실행되어 sbi가 생존 상태를 유지하며, dec_page_count는 최종 작업으로 실행됩니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 03. 09.

모더레이션

수락

항목

VDB-360584

EPSS

0.00015

출처

Do you know our Splunk app?

Download it now for free!