Linux 커널에서는 다음 취약점이 해결되었습니다. 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으로 설정하여 차단 해제 동시 마운트 해제 시 f2fs_put_super()의 f2fs_wait_on_all_pages() CPU. 그런 다음 마운트 해제 경로가 호출을 진행합니다. f2fs_destroy_page_array_cache(sbi), 이는 파괴됩니다. sbi->page_array_slab은 kmem_cache_destroy()를 통해 이루어지며 결국에는 kfree(sbi). 그 동안에,
Linux 커널에서는 다음 취약점이 해결되었습니다.
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으로 설정하여 차단 해제 동시 마운트 해제 시 f2fs_put_super()의 f2fs_wait_on_all_pages() CPU. 그런 다음 마운트 해제 경로가 호출을 진행합니다. f2fs_destroy_page_array_cache(sbi), 이는 파괴됩니다. sbi->page_array_slab은 kmem_cache_destroy()를 통해 이루어지며 결국에는 kfree(sbi). 그동안 바이오 완료 콜백은 계속 실행 중입니다. page_array_free(sbi, ...)에 도달하면 역참조됩니다. sbi->page_array_slab — 파괴된 슬랩 캐시 — 호출 kmem_cache_free()로 인해 use-after-free가 발생합니다.
이는 CVE-2026-23234(이를 수정한)와 동일한 클래스의 버그입니다. data.c의 f2fs_write_end_io()에 있는 것과 동등한 경주이지만 해당 수정 사항이 적용되지 않은 압축된 쓰기 저장 완료 경로입니다.
dec_page_count()를 page_array_free() 뒤로 이동하여 이 문제를 해결하세요. 모든 SBI 액세스가 카운터 감소 전에 완료되도록 해야 합니다. 마운트 해제를 차단 해제하세요. 마지막 Folio가 아닌 경우(atomic_dec_return이 켜져 있음) cic->pending_pages가 0이 아님), dec_page_count가 즉시 호출됩니다. 반환하기 전 — 이 경로에서는 page_array_free에 도달하지 않았으므로 감소 후 SBI 액세스가 없습니다. 마지막 폴리오의 경우, F2FS_WB_CP_DATA 카운터가 아직 남아 있는 동안 page_array_free가 실행됩니다. 0이 아닌 값(이 Folio는 아직 이를 감소시키지 않았습니다), sbi를 활성 상태로 유지합니다. dec_page_count가 최종 작업으로 실행됩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 78.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 78.00 |
VPI 공식 vpi-v1 기준