🔍 CVE-2026-99156

7.8
CVSS Score
HIGH
2026-10-28
2026-10-31 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널 SCSI 테이프 드라이버(st)에서 st_remove()와 st_open() 사이의 경쟁 조건으로 인해 use-after-free가 발생할 수 있습니다. st_remove()가 인덱스를 IDR에서 제거하기 전에 참조를 해제하여, 해제된 구조체에 st_open()이 접근할 수 있습니다. 패치는 참조 해제 전에 IDR에서 인덱스를 먼저 제거하도록 수정합니다.

💡 쉬운 설명

테이프 장치를 제거하는 동시에 열려고 하면, 이미 메모리에서 지워진 정보에 접근하게 되어 시스템이 불안정해질 수 있습니다. 커널 업데이트로 장치 제거 순서를 바로잡아 이 문제를 막을 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: scsi: st: Fix use-after-free race between st_remove() and st_open() st_remove() drops the probe reference on the scsi_tape with kref_put() and only afterwards removes its index from st_index_idr. If that was the last reference, scsi_tape_release() frees the structure while it is still published in the idr. scsi_tape_get(), called from st_open(), looks up the tape in st_index_idr and takes a reference under st_ref_mutex and st_index_lock. remove_cdevs() does not wait for opens that are already past chrdev_open(), so an open that is blocked on st_ref_mutex while st_remove() holds it can take the mutex as soon as st_remove() drops it, find the freed tpnt in the idr and call kref_get() on it: BUG: KASAN: slab-use-after-free in st_open Write of size 4 ... st_open (drivers/scsi/st.c:254 drivers/scsi/st.c:1291) chrdev_open ... Freed by task ...: kfree st_remove (drivers/scsi/st.c:4512) Remove the index from the idr before dropping the reference, all under st_ref_mutex. A concurrent scsi_tape_get() now either runs first and holds a valid reference that keeps the tape alive, or runs afterwards and finds nothing, so st_open() fails with -ENXIO. This restores the ordering st_remove() had before the conversion to st_index_idr, where the tape was unpublished from scsi_tapes[] before the final kref_put().

📍 영향받는 시스템

패치 이전의 Linux 커널 (SCSI st 테이프 드라이버를 사용하는 시스템)

⚔️ 공격 벡터

로컬 사용자가 테이프 장치 제거와 열기 작업을 경쟁적으로 실행하여 메모리 손상이나 권한 상승을 유도

🛡️ 대응 방법

커널을 해당 CVE 수정이 포함된 최신 안정 버전으로 업데이트하고 재부팅

🔧 검증 코드

출력된 커널 버전을 배포판 보안 공지에서 CVE-2026-99156 수정이 포함된 버전과 비교하고, 해당 버전 이상이면 패치된 것입니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel